lindera-cli 4.0.0

A morphological analysis CLI.
Documentation
use clap::{Parser, Subcommand};

use lindera::LinderaResult;
use lindera_cli::get_version;

mod commands;

use commands::build::BuildArgs;
#[cfg(feature = "train")]
use commands::export::ExportArgs;
use commands::list::ListArgs;
use commands::tokenize::TokenizeArgs;
#[cfg(feature = "train")]
use commands::train::TrainArgs;

#[derive(Debug, Parser)]
#[clap(
    name = env!("CARGO_BIN_NAME"),
    author,
    about = "A morphological analysis command line interface",
    version = get_version(),
)]
struct Args {
    #[clap(subcommand)]
    command: Commands,
}

#[derive(Debug, Subcommand)]
enum Commands {
    List(ListArgs),
    Tokenize(TokenizeArgs),
    Build(BuildArgs),
    #[cfg(feature = "train")]
    Train(TrainArgs),
    #[cfg(feature = "train")]
    Export(ExportArgs),
}

fn main() -> LinderaResult<()> {
    let args = Args::parse();

    match args.command {
        Commands::List(args) => commands::list::list(args),
        Commands::Tokenize(args) => commands::tokenize::tokenize(args),
        Commands::Build(args) => commands::build::build(args),
        #[cfg(feature = "train")]
        Commands::Train(args) => commands::train::train(args),
        #[cfg(feature = "train")]
        Commands::Export(args) => commands::export::export(args),
    }
}