pub mod action;
mod check;
mod docs;
pub mod filter;
mod generate;
mod run;
use crate::{
commands::{
action::ActionCmd, check::CheckCmd, docs::DocsCmd, filter::FilterCmd,
generate::GenerateCmd, run::RunCmd,
},
config::OrganizeAppConfig,
};
use abscissa_core::{Command, Configurable, FrameworkError, Runnable};
use clap::{self, Subcommand};
use std::path::PathBuf;
pub const CONFIG_FILE: &str = "organize.toml";
#[derive(Subcommand, Command, Debug, Runnable)]
pub enum OrganizeCmd {
Action(ActionCmd),
Check(CheckCmd),
Docs(DocsCmd),
Filter(FilterCmd),
Generate(GenerateCmd),
Run(RunCmd),
}
#[allow(clippy::struct_excessive_bools)]
#[derive(clap::Parser, Command, Debug)]
#[command(author, about, version)]
pub struct EntryPoint {
#[command(subcommand)]
cmd: OrganizeCmd,
}
impl Runnable for EntryPoint {
fn run(&self) {
self.cmd.run();
}
}
impl Configurable<OrganizeAppConfig> for EntryPoint {
fn config_path(&self) -> Option<PathBuf> {
None
}
fn process_config(
&self,
config: OrganizeAppConfig,
) -> Result<OrganizeAppConfig, FrameworkError> {
Ok(config)
}
}