homesync/src/lib.rs

51 lines
1.6 KiB
Rust
Raw Normal View History

2021-12-30 13:37:53 +00:00
pub mod cli;
pub mod config;
2021-12-30 13:37:53 +00:00
pub mod daemon;
2021-12-29 16:49:24 +00:00
2021-12-30 13:37:53 +00:00
use config::PathConfig;
use std::error::Error;
2021-12-30 13:37:53 +00:00
use std::path::PathBuf;
2021-12-30 13:37:53 +00:00
pub fn run_add(_candidates: Vec<PathBuf>) -> Result<(), config::Error> {
// TODO(jrpotter): Show $EDITOR that allows writing specific package.
Ok(())
}
2021-12-30 13:37:53 +00:00
pub fn run_daemon(_candidates: Vec<PathBuf>) -> Result<(), Box<dyn Error>> {
Ok(())
}
pub fn run_init(candidates: Vec<PathBuf>) -> Result<(), config::Error> {
match config::load(&candidates) {
// Check if we already have a local config somewhere. If so, reprompt
// the same configuration options and override the values present in the
// current YAML file.
Ok(pending) => cli::write_config(pending),
// Otherwise create a new config file at the given location. We always
// assume we want to write to the first file in our priority list. If
// not, the user should specify which config they want to write using
// the `-c` flag.
// TODO(jrpotter): Verify I have permission to write at specified path.
// Make directories if necessary.
2021-12-30 13:37:53 +00:00
Err(config::Error::MissingConfig) if !candidates.is_empty() => {
let pending = PathConfig::new(&candidates[0], None);
cli::write_config(pending)
}
Err(e) => Err(e),
}
2021-12-29 16:49:24 +00:00
}
2021-12-30 13:37:53 +00:00
pub fn run_list(candidates: Vec<PathBuf>) -> Result<(), config::Error> {
let loaded = config::load(&candidates)?;
cli::list_packages(loaded);
Ok(())
}
2021-12-30 13:37:53 +00:00
pub fn run_pull() -> Result<(), Box<dyn Error>> {
2021-12-29 16:49:24 +00:00
Ok(())
}
2021-12-30 13:37:53 +00:00
pub fn run_push() -> Result<(), Box<dyn Error>> {
Ok(())
}