diff options
author | Lars Wirzenius <liw@liw.fi> | 2020-11-13 09:40:39 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2020-11-13 11:27:21 +0200 |
commit | 38b51382e710dda515e6d0df8fdc4f0b253d9cd7 (patch) | |
tree | 5a012e63ef7aa6ae63c31f459d56631bc008b0b5 /src/cmd/backup.rs | |
parent | 179993f3bdd5e5d4dd728fc2a8f5d63274f95966 (diff) | |
download | obnam2-38b51382e710dda515e6d0df8fdc4f0b253d9cd7.tar.gz |
refactor: put all client functionality into one program
Diffstat (limited to 'src/cmd/backup.rs')
-rw-r--r-- | src/cmd/backup.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/cmd/backup.rs b/src/cmd/backup.rs new file mode 100644 index 0000000..308eafb --- /dev/null +++ b/src/cmd/backup.rs @@ -0,0 +1,21 @@ +use crate::client::{BackupClient, ClientConfig}; +use crate::fsiter::FsIterator; +use crate::generation::Generation; +use std::path::Path; + +pub fn backup(config: &Path, buffer_size: usize) -> anyhow::Result<()> { + let config = ClientConfig::read_config(config)?; + let client = BackupClient::new(&config.server_name, config.server_port)?; + + { + let mut gen = Generation::create(&config.dbname)?; + gen.insert_iter(FsIterator::new(&config.root).map(|entry| match entry { + Err(err) => Err(err), + Ok(entry) => client.upload_filesystem_entry(entry, buffer_size), + }))?; + } + let gen_id = client.upload_generation(&config.dbname, buffer_size)?; + println!("gen id: {}", gen_id); + + Ok(()) +} |