src/lib.rs
pub mod cli;
pub mod commands {
pub mod connect;
pub mod update;
}
pub mod remote;
pub use remote::*;
#[derive(Debug, Clone)]
pub(crate) struct ElvscArgs {
pub repo: String,
pub remote: String,
pub hub: RemoteOrLocalBuf,
pub public: String,
pub output: RemoteOrLocalBuf,
}
impl ElvscArgs {
pub fn from_config(
ch: &jj_cli::cli_util::CommandHelper,
) -> Result<Self, jj_cli::command_error::CommandError> {
let settings = ch.settings();
Ok(Self {
repo: settings.get_string("elvsc.repo")?,
remote: settings.get_string("elvsc.remote")?,
hub: RemoteOrLocalBuf::from(settings.get_string("elvsc.hub")?.as_str()),
public: settings.get_string("elvsc.public")?,
output: RemoteOrLocalBuf::from(settings.get_string("elvsc.output")?.as_str()),
})
}
}
pub(crate) fn check_output(
output: std::process::Output,
) -> Result<std::process::Output, jj_cli::command_error::CommandError> {
if output.status.success() {
Ok(output)
} else {
Err(jj_cli::command_error::user_error(
String::from_utf8_lossy(&output.stderr).into_owned(),
))
}
}