dotlock-bin 1.2.0

Encrypted project-local environment variables manager
use colored::Colorize;

use crate::{
    domain::model::DotLockResult,
    git::sync::{SyncStatus, sync_with_remote},
    storage::project::{ensure_project_initialized, vault_file},
};

pub fn run() -> DotLockResult<()> {
    ensure_project_initialized()?;
    let summary = sync_with_remote(&vault_file())?;
    match summary.status {
        SyncStatus::UpToDate => println!(
            "{} vault already synced with {}/{}",
            "ok:".green().bold(),
            summary.remote,
            summary.branch
        ),
        SyncStatus::FastForwarded => println!(
            "{} vault synced from {}/{}",
            "ok:".green().bold(),
            summary.remote,
            summary.branch
        ),
        SyncStatus::LocalAhead => println!(
            "{} local branch is ahead of {}/{}; no pull needed",
            "info:".cyan().bold(),
            summary.remote,
            summary.branch
        ),
    }
    Ok(())
}