diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-02-04 11:06:58 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-02-04 11:07:31 +0200 |
commit | 22202d176259d962abdbfdefef1e6213408df06c (patch) | |
tree | e36be72149099d6df45380a81c43c3c39d84fe80 /src | |
parent | cda0e5bde3fa0c9c2cb0b4fa9f21fbb758acfbe1 (diff) | |
download | obnam2-22202d176259d962abdbfdefef1e6213408df06c.tar.gz |
feat: add obnam config subcommand
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/obnam.rs | 4 | ||||
-rw-r--r-- | src/client.rs | 4 | ||||
-rw-r--r-- | src/cmd/mod.rs | 3 | ||||
-rw-r--r-- | src/cmd/show_config.rs | 7 | ||||
-rw-r--r-- | src/error.rs | 3 |
5 files changed, 18 insertions, 3 deletions
diff --git a/src/bin/obnam.rs b/src/bin/obnam.rs index 4e38e1a..9c5d3f4 100644 --- a/src/bin/obnam.rs +++ b/src/bin/obnam.rs @@ -2,7 +2,7 @@ use log::{debug, error, info, LevelFilter}; use log4rs::append::file::FileAppender; use log4rs::config::{Appender, Config, Logger, Root}; use obnam::client::ClientConfig; -use obnam::cmd::{backup, get_chunk, list, list_files, restore, show_generation}; +use obnam::cmd::{backup, get_chunk, list, list_files, restore, show_config, show_generation}; use std::path::{Path, PathBuf}; use structopt::StructOpt; @@ -29,6 +29,7 @@ fn main() -> anyhow::Result<()> { Command::ListFiles { gen_id } => list_files(&config, &gen_id), Command::Restore { gen_id, to } => restore(&config, &gen_id, &to), Command::GetChunk { chunk_id } => get_chunk(&config, &chunk_id), + Command::Config => show_config(&config), }; if let Err(ref e) = result { @@ -84,6 +85,7 @@ enum Command { #[structopt()] chunk_id: String, }, + Config, } fn setup_logging(filename: &Path) -> anyhow::Result<()> { diff --git a/src/client.rs b/src/client.rs index f9c325c..e8e20eb 100644 --- a/src/client.rs +++ b/src/client.rs @@ -11,13 +11,13 @@ use crate::genlist::GenerationList; use chrono::{DateTime, Local}; use log::{debug, error, info, trace}; use reqwest::blocking::Client; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::fs::File; use std::io::prelude::*; use std::path::{Path, PathBuf}; -#[derive(Debug, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone)] pub struct ClientConfig { pub server_url: String, pub root: PathBuf, diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index 8f08668..fc517be 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -15,3 +15,6 @@ pub use get_chunk::get_chunk; pub mod show_gen; pub use show_gen::show_generation; + +pub mod show_config; +pub use show_config::show_config; diff --git a/src/cmd/show_config.rs b/src/cmd/show_config.rs new file mode 100644 index 0000000..b4f4cdc --- /dev/null +++ b/src/cmd/show_config.rs @@ -0,0 +1,7 @@ +use crate::client::ClientConfig; +use crate::error::ObnamError; + +pub fn show_config(config: &ClientConfig) -> Result<(), ObnamError> { + println!("{}", serde_json::to_string_pretty(config)?); + Ok(()) +} diff --git a/src/error.rs b/src/error.rs index cf286db..73d4a66 100644 --- a/src/error.rs +++ b/src/error.rs @@ -40,4 +40,7 @@ pub enum ObnamError { #[error(transparent)] SystemTimeError(#[from] SystemTimeError), + + #[error(transparent)] + SerdeJsonError(#[from] serde_json::Error), } |