elvsc

19 commits
Updated 2026-04-30 16:50:05
src
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(),
        ))
    }
}