git-workon 0.1.0

A git plugin for managing worktrees
mod clone;
mod complete;
mod copy_untracked;
mod doctor;
mod find;
mod generate_man;
mod init;
mod list;
mod r#move; // r#move because "move" is a reserved keyword
mod new;
mod prune;
mod shell_init;

use miette::Result;
use workon::WorktreeDescriptor;

use crate::cli::Cmd;

pub trait Run {
    fn run(&self) -> Result<Option<WorktreeDescriptor>>;
}

impl Run for Cmd {
    fn run(&self) -> Result<Option<WorktreeDescriptor>> {
        match self {
            Cmd::Clone(cmd) => cmd.run(),
            Cmd::Complete(cmd) => cmd.run(),
            Cmd::CopyUntracked(cmd) => cmd.run(),
            Cmd::Doctor(cmd) => cmd.run(),
            Cmd::Find(cmd) => cmd.run(),
            Cmd::Init(cmd) => cmd.run(),
            Cmd::List(cmd) => cmd.run(),
            Cmd::Move(cmd) => cmd.run(),
            Cmd::New(cmd) => cmd.run(),
            Cmd::Prune(cmd) => cmd.run(),
            Cmd::ShellInit(cmd) => cmd.run(),
            Cmd::GenerateMan(cmd) => cmd.run(),
        }
    }
}