summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-02-04 11:06:58 +0200
committerLars Wirzenius <liw@liw.fi>2021-02-04 11:07:31 +0200
commit22202d176259d962abdbfdefef1e6213408df06c (patch)
treee36be72149099d6df45380a81c43c3c39d84fe80 /src
parentcda0e5bde3fa0c9c2cb0b4fa9f21fbb758acfbe1 (diff)
downloadobnam2-22202d176259d962abdbfdefef1e6213408df06c.tar.gz
feat: add obnam config subcommand
Diffstat (limited to 'src')
-rw-r--r--src/bin/obnam.rs4
-rw-r--r--src/client.rs4
-rw-r--r--src/cmd/mod.rs3
-rw-r--r--src/cmd/show_config.rs7
-rw-r--r--src/error.rs3
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),
}