From beca5e88cae93e399faf91206dd957e834b93284 Mon Sep 17 00:00:00 2001 From: Tpt Date: Sun, 12 Mar 2023 15:05:39 +0100 Subject: [PATCH] Server: use option instead of positional arguments More consistent and easier to debug --- server/src/main.rs | 51 ++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 0d069822..dba27878 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -103,7 +103,8 @@ enum Command { #[arg(short, long)] location: PathBuf, /// Directory to backup to. - directory: PathBuf, + #[arg(short, long)] + destination: PathBuf, }, /// Load file(s) into the store. Load { @@ -115,16 +116,14 @@ enum Command { /// If multiple files are provided they are loaded in parallel. /// /// If no file is given, stdin is read. - #[arg(num_args = 0..)] + #[arg(short, long, global = true, num_args = 0..)] file: Vec, - #[arg(short = 'f', long = "file", global = true, num_args = 0.., value_name = "FILE", hide = true)] - file_opt: Vec, //TODO: remove on next breaking release /// The format of the file(s) to load. /// /// Can be an extension like "nt" or a MIME type like "application/n-triples". /// /// By default the format is guessed from the loaded file extension. - #[arg(long, required_unless_present_any = ["file", "file_opt"])] + #[arg(long, required_unless_present = "file")] format: Option, /// Attempt to keep loading even if the data file is invalid. /// @@ -147,6 +146,7 @@ enum Command { /// File to dump to. /// /// If no file is given, stdout is used. + #[arg(short, long)] file: Option, /// The format of the file(s) to dump. /// @@ -193,15 +193,14 @@ pub fn main() -> anyhow::Result<()> { ), Command::Backup { location, - directory, + destination, } => { let store = Store::open_read_only(location)?; - store.backup(directory)?; + store.backup(destination)?; Ok(()) } Command::Load { - mut file, - file_opt, + file, location, lenient, format, @@ -213,10 +212,6 @@ pub fn main() -> anyhow::Result<()> { eprintln!("Warning: opening an in-memory store. It will not be possible to read the written data."); Store::new() }?; - if !file_opt.is_empty() { - eprintln!("Warning: the --file option is deprecated. Please use a positional argument instead"); - file.extend(file_opt); - } let format = if let Some(format) = format { Some(GraphOrDatasetFormat::from_str(&format)?) } else { @@ -1413,6 +1408,7 @@ mod tests { .arg("load") .arg("--location") .arg(store_dir.path()) + .arg("--file") .arg(input_file.path()) .assert() .success(); @@ -1422,6 +1418,7 @@ mod tests { .arg("dump") .arg("--location") .arg(store_dir.path()) + .arg("--file") .arg(output_file.path()) .arg("--graph") .arg("default") @@ -1442,6 +1439,7 @@ mod tests { .arg("load") .arg("--location") .arg(store_dir.path()) + .arg("--file") .arg(input_file.path()) .assert() .success(); @@ -1451,6 +1449,7 @@ mod tests { .arg("dump") .arg("--location") .arg(store_dir.path()) + .arg("--file") .arg(output_file.path()) .assert() .success(); @@ -1461,6 +1460,7 @@ mod tests { #[test] fn cli_load_gzip_dataset() -> Result<()> { + let store_dir = TempDir::new()?; let file = NamedTempFile::new("sample.nq.gz")?; let mut encoder = GzEncoder::new(Vec::new(), Compression::default()); encoder @@ -1468,9 +1468,22 @@ mod tests { file.write_binary(&encoder.finish()?)?; cli_command()? .arg("load") + .arg("-l") + .arg(store_dir.path()) + .arg("-f") .arg(file.path()) .assert() .success(); + + cli_command()? + .arg("dump") + .arg("-l") + .arg(store_dir.path()) + .arg("--format") + .arg("nq") + .assert() + .success() + .stdout(" .\n"); Ok(()) } @@ -1478,11 +1491,12 @@ mod tests { fn cli_load_and_dump_named_graph() -> Result<()> { let store_dir = TempDir::new()?; let input_file = NamedTempFile::new("input.nt")?; - input_file - .write_str(" .")?; + input_file.write_str( + " .\n", + )?; cli_command()? .arg("load") - .arg("--location") + .arg("-l") .arg(store_dir.path()) .arg("-f") .arg(input_file.path()) @@ -1494,8 +1508,9 @@ mod tests { let output_file = NamedTempFile::new("output.nt")?; cli_command()? .arg("dump") - .arg("--location") + .arg("-l") .arg(store_dir.path()) + .arg("-f") .arg(output_file.path()) .arg("--graph") .arg("http://example.com/g") @@ -1528,6 +1543,7 @@ mod tests { .arg("dump") .arg("--location") .arg(store_dir.path()) + .arg("--file") .arg(output_file.path()) .arg("--graph") .arg("default") @@ -1584,6 +1600,7 @@ mod tests { .arg("backup") .arg("--location") .arg(store_dir.path()) + .arg("--destination") .arg(backup_dir.path()) .assert() .success();