mod action;
mod completions;
mod docs;
mod filter;
use crate::{
commands::{action::ActionCmd, completions::CompletionsCmd, docs::DocsCmd, filter::FilterCmd},
config::OrganizeConfig,
};
use abscissa_core::{config::Override, Command, Configurable, FrameworkError, Runnable};
use clap::{self, Subcommand};
use directories::BaseDirs;
use once_cell::sync::Lazy;
use organize_rs_core::rules::{OrganizeLocation, OrganizeTargets};
use std::{fs::create_dir_all, path::PathBuf};
pub const CONFIG_FILE: &str = "organize.toml";
#[derive(Subcommand, Command, Debug, Runnable)]
pub enum OrganizeCmd {
Action(ActionCmd),
Docs(DocsCmd),
Filter(FilterCmd),
Completions(CompletionsCmd),
}
#[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<OrganizeConfig> for EntryPoint {
fn config_path(&self) -> Option<PathBuf> {
None
}
fn process_config(&self, config: OrganizeConfig) -> Result<OrganizeConfig, FrameworkError> {
Ok(config)
}
}