mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Support add_snapshots
on cli
This commit is contained in:
parent
ed3475d9ea
commit
333cb37091
5 changed files with 35 additions and 4 deletions
|
@ -1,13 +1,14 @@
|
|||
use crate::settings::Settings;
|
||||
use taskchampion::{server::Server, Replica};
|
||||
use termcolor::WriteColor;
|
||||
|
||||
pub(crate) fn execute<W: WriteColor>(
|
||||
w: &mut W,
|
||||
replica: &mut Replica,
|
||||
settings: &Settings,
|
||||
server: &mut Box<dyn Server>,
|
||||
) -> Result<(), crate::Error> {
|
||||
// TODO: configurable avoid_snapshots
|
||||
replica.sync(server, false)?;
|
||||
replica.sync(server, settings.avoid_snapshots)?;
|
||||
writeln!(w, "sync complete.")?;
|
||||
Ok(())
|
||||
}
|
||||
|
@ -25,9 +26,10 @@ mod test {
|
|||
let mut replica = test_replica();
|
||||
let server_dir = TempDir::new().unwrap();
|
||||
let mut server = test_server(&server_dir);
|
||||
let settings = Settings::default();
|
||||
|
||||
// Note that the details of the actual sync are tested thoroughly in the taskchampion crate
|
||||
execute(&mut w, &mut replica, &mut server).unwrap();
|
||||
execute(&mut w, &mut replica, &settings, &mut server).unwrap();
|
||||
assert_eq!(&w.into_string(), "sync complete.\n")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ pub(crate) fn invoke(command: Command, settings: Settings) -> Result<(), crate::
|
|||
..
|
||||
} => {
|
||||
let mut server = get_server(&settings)?;
|
||||
return cmd::sync::execute(&mut w, &mut replica, &mut server);
|
||||
return cmd::sync::execute(&mut w, &mut replica, &settings, &mut server);
|
||||
}
|
||||
|
||||
// handled in the first match, but here to ensure this match is exhaustive
|
||||
|
|
|
@ -22,6 +22,7 @@ pub(crate) struct Settings {
|
|||
|
||||
/// replica
|
||||
pub(crate) data_dir: PathBuf,
|
||||
pub(crate) avoid_snapshots: bool,
|
||||
|
||||
/// remote sync server
|
||||
pub(crate) server_client_key: Option<String>,
|
||||
|
@ -91,6 +92,7 @@ impl Settings {
|
|||
let table_keys = [
|
||||
"data_dir",
|
||||
"modification_count_prompt",
|
||||
"avoid_snapshots",
|
||||
"server_client_key",
|
||||
"server_origin",
|
||||
"encryption_secret",
|
||||
|
@ -124,6 +126,20 @@ impl Settings {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn get_bool_cfg<F: FnOnce(bool)>(
|
||||
table: &Table,
|
||||
name: &'static str,
|
||||
setter: F,
|
||||
) -> Result<()> {
|
||||
if let Some(v) = table.get(name) {
|
||||
setter(
|
||||
v.as_bool()
|
||||
.ok_or_else(|| anyhow!(".{}: not a boolean value", name))?,
|
||||
);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
get_str_cfg(table, "data_dir", |v| {
|
||||
self.data_dir = v.into();
|
||||
})?;
|
||||
|
@ -132,6 +148,10 @@ impl Settings {
|
|||
self.modification_count_prompt = Some(v);
|
||||
})?;
|
||||
|
||||
get_bool_cfg(table, "avoid_snapshots", |v| {
|
||||
self.avoid_snapshots = v;
|
||||
})?;
|
||||
|
||||
get_str_cfg(table, "server_client_key", |v| {
|
||||
self.server_client_key = Some(v);
|
||||
})?;
|
||||
|
@ -313,6 +333,7 @@ impl Default for Settings {
|
|||
filename: None,
|
||||
data_dir,
|
||||
modification_count_prompt: None,
|
||||
avoid_snapshots: false,
|
||||
server_client_key: None,
|
||||
server_origin: None,
|
||||
encryption_secret: None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue