|
|
|
@ -1,5 +1,8 @@ |
|
|
|
use crate::cli::defaults; |
|
|
|
use crate::cli::{ConfigurableCommand, defaults}; |
|
|
|
|
|
|
|
use anyhow::Result; |
|
|
|
use clap::{Args as ClapArgs, Parser, Subcommand}; |
|
|
|
use clap::{Args as ClapArgs, Parser, Subcommand}; |
|
|
|
|
|
|
|
use config::ConfigBuilder; |
|
|
|
|
|
|
|
use config::builder::DefaultState; |
|
|
|
use std::path::PathBuf; |
|
|
|
use std::path::PathBuf; |
|
|
|
|
|
|
|
|
|
|
|
#[derive(Parser, Debug)] |
|
|
|
#[derive(Parser, Debug)] |
|
|
|
@ -43,6 +46,29 @@ pub struct ServerArgs { |
|
|
|
pub port: Option<u16>, |
|
|
|
pub port: Option<u16>, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
impl ConfigurableCommand for ServerArgs { |
|
|
|
|
|
|
|
fn apply_defaults( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
builder |
|
|
|
|
|
|
|
.set_default("server.host", defaults::HOST)? |
|
|
|
|
|
|
|
.set_default("server.port", defaults::PORT) |
|
|
|
|
|
|
|
.map_err(Into::into) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn apply_overrides( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
let mut builder = builder; |
|
|
|
|
|
|
|
if let Some(port) = self.port { |
|
|
|
|
|
|
|
builder = builder.set_override("server.port", port)?; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Ok(builder) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
pub struct DecodeArgs { |
|
|
|
pub struct DecodeArgs { |
|
|
|
#[arg(long, help = defaults::HELP_DEC_SYSTEM)] |
|
|
|
#[arg(long, help = defaults::HELP_DEC_SYSTEM)] |
|
|
|
@ -52,6 +78,30 @@ pub struct DecodeArgs { |
|
|
|
pub input: String, |
|
|
|
pub input: String, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
impl ConfigurableCommand for DecodeArgs { |
|
|
|
|
|
|
|
fn apply_defaults( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
builder |
|
|
|
|
|
|
|
.set_default("decoder.system", defaults::SYSTEM_NAME)? |
|
|
|
|
|
|
|
.set_default("decoder.input", "") |
|
|
|
|
|
|
|
.map_err(Into::into) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn apply_overrides( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
let mut builder = builder; |
|
|
|
|
|
|
|
if let Some(ref system) = self.system { |
|
|
|
|
|
|
|
builder = builder.set_override("decoder.system", system.clone())?; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
builder = builder.set_override("decoder.input", self.input.clone())?; |
|
|
|
|
|
|
|
Ok(builder) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
pub struct EncodeArgs { |
|
|
|
pub struct EncodeArgs { |
|
|
|
#[arg(long, help = defaults::HELP_ENC_SYSTEM)] |
|
|
|
#[arg(long, help = defaults::HELP_ENC_SYSTEM)] |
|
|
|
@ -61,6 +111,30 @@ pub struct EncodeArgs { |
|
|
|
pub input: String, |
|
|
|
pub input: String, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
impl ConfigurableCommand for EncodeArgs { |
|
|
|
|
|
|
|
fn apply_defaults( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
builder |
|
|
|
|
|
|
|
.set_default("encoder.system", defaults::SYSTEM_NAME)? |
|
|
|
|
|
|
|
.set_default("encoder.input", "") |
|
|
|
|
|
|
|
.map_err(Into::into) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn apply_overrides( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
let mut builder = builder; |
|
|
|
|
|
|
|
if let Some(ref system) = self.system { |
|
|
|
|
|
|
|
builder = builder.set_override("encoder.system", system.clone())?; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
builder = builder.set_override("encoder.input", self.input.clone())?; |
|
|
|
|
|
|
|
Ok(builder) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
#[derive(ClapArgs, Debug, Clone)] |
|
|
|
pub struct ImportDictArgs { |
|
|
|
pub struct ImportDictArgs { |
|
|
|
#[arg(long, help = defaults::HELP_IMPORT_DICT_NAME)] |
|
|
|
#[arg(long, help = defaults::HELP_IMPORT_DICT_NAME)] |
|
|
|
@ -69,3 +143,25 @@ pub struct ImportDictArgs { |
|
|
|
#[arg(long, help = defaults::HELP_IMPORT_DICT_INPUT)] |
|
|
|
#[arg(long, help = defaults::HELP_IMPORT_DICT_INPUT)] |
|
|
|
pub path: String, |
|
|
|
pub path: String, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
impl ConfigurableCommand for ImportDictArgs { |
|
|
|
|
|
|
|
fn apply_defaults( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
builder |
|
|
|
|
|
|
|
.set_default("import_dict.name", defaults::IMPORT_DICT_NAME)? |
|
|
|
|
|
|
|
.set_default("import_dict.path", defaults::IMPORT_DICT_PATH) |
|
|
|
|
|
|
|
.map_err(Into::into) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn apply_overrides( |
|
|
|
|
|
|
|
&self, |
|
|
|
|
|
|
|
builder: ConfigBuilder<DefaultState>, |
|
|
|
|
|
|
|
) -> Result<ConfigBuilder<DefaultState>> { |
|
|
|
|
|
|
|
builder |
|
|
|
|
|
|
|
.set_override("import_dict.name", self.name.clone())? |
|
|
|
|
|
|
|
.set_override("import_dict.path", self.path.clone()) |
|
|
|
|
|
|
|
.map_err(Into::into) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|