mod common;
mod mutate;
mod mutate_extra;
mod query;
pub(crate) use common::{
collect_source_files, display_path, get_git_file_content, is_sole_explicit_file,
resolve_target_paths, symbol_to_json,
};
pub use common::{filter_symbols, parse_kind_filter};
pub(crate) use mutate_extra::{parse_reorder_order, parse_split_targets};
use crate::cli::global::GlobalFlags;
use clap::{Args, Subcommand};
#[derive(Debug, Subcommand)]
pub enum AstCommand {
List(query::ListArgs),
Read(query::ReadArgs),
Rename(mutate::RenameArgs),
Validate(query::ValidateArgs),
Search(query::SearchArgs),
Refs(query::RefsArgs),
Deps(query::DepsArgs),
Map(query::MapArgs),
Replace(mutate::ReplaceArgs),
ReplaceSymbol(mutate::ReplaceSymbolArgs),
DeleteSymbol(mutate::DeleteSymbolArgs),
Insert(mutate_extra::InsertArgs),
Wrap(mutate_extra::WrapArgs),
Imports(mutate_extra::ImportsArgs),
Reorder(mutate_extra::ReorderArgs),
Group(mutate_extra::GroupArgs),
Move(mutate_extra::MoveArgs),
ExtractToFile(mutate_extra::ExtractToFileArgs),
Split(mutate_extra::SplitArgs),
RewriteSignature(mutate_extra::RewriteSignatureArgs),
Impact(query::ImpactArgs),
Diff(query::DiffArgs),
}
#[derive(Debug, Args)]
pub struct AstArgs {
#[command(subcommand)]
pub command: AstCommand,
}
pub fn run(args: AstArgs, global: &GlobalFlags) -> anyhow::Result<u8> {
match args.command {
AstCommand::List(a) => query::run_list(a, global),
AstCommand::Read(a) => query::run_read(a, global),
AstCommand::Rename(a) => mutate::run_rename(a, global),
AstCommand::Validate(a) => query::run_validate(a, global),
AstCommand::Search(a) => query::run_search(a, global),
AstCommand::Refs(a) => query::run_refs(a, global),
AstCommand::Deps(a) => query::run_deps(a, global),
AstCommand::Map(a) => query::run_map(a, global),
AstCommand::Replace(a) => mutate::run_replace(a, global),
AstCommand::ReplaceSymbol(a) => mutate::run_replace_symbol(a, global),
AstCommand::DeleteSymbol(a) => mutate::run_delete_symbol(a, global),
AstCommand::Insert(a) => mutate_extra::run_insert(a, global),
AstCommand::Wrap(a) => mutate_extra::run_wrap(a, global),
AstCommand::Imports(a) => mutate_extra::run_imports(a, global),
AstCommand::Reorder(a) => mutate_extra::run_reorder(a, global),
AstCommand::Group(a) => mutate_extra::run_group(a, global),
AstCommand::Move(a) => mutate_extra::run_move(a, global),
AstCommand::ExtractToFile(a) => mutate_extra::run_extract_to_file(a, global),
AstCommand::Split(a) => mutate_extra::run_split(a, global),
AstCommand::RewriteSignature(a) => mutate_extra::run_rewrite_signature(a, global),
AstCommand::Impact(a) => query::run_impact(a, global),
AstCommand::Diff(a) => query::run_diff(a, global),
}
}