thot_cli/commands/container/
mod.rs

1use crate::result::Result;
2use crate::types::ResourcePathType;
3use clap::{Args, Subcommand};
4use std::path::PathBuf;
5mod commands;
6
7pub fn main(args: ContainerArgs, verbose: bool) -> Result {
8    match args.command {
9        Command::Init(init_args) => commands::init(init_args, verbose),
10        Command::New(new_args) => commands::new(new_args, verbose),
11        Command::AddChild(add_args) => commands::add_child(add_args, verbose),
12        Command::NewChild(new_args) => commands::new_child(new_args, verbose),
13        Command::AddAsset(add_args) => commands::add_asset(add_args, verbose),
14        Command::AddScript(add_args) => commands::add_script(add_args, verbose),
15    }
16}
17
18#[derive(Debug, Args)]
19pub struct ContainerArgs {
20    #[clap(subcommand)]
21    command: Command,
22}
23
24#[derive(Debug, Subcommand)]
25enum Command {
26    Init(InitArgs),
27    New(NewArgs),
28    AddChild(AddChildArgs),
29    NewChild(NewChildArgs),
30    AddAsset(AddAssetArgs),
31    AddScript(AddScriptArgs),
32}
33
34#[derive(Debug, Args)]
35pub struct InitArgs {
36    #[clap(short, long, parse(from_os_str))]
37    path: Option<PathBuf>,
38}
39
40#[derive(Debug, Args)]
41pub struct NewArgs {
42    #[clap(parse(from_os_str))]
43    name: PathBuf,
44}
45
46#[derive(Debug, Args)]
47pub struct AddChildArgs {
48    #[clap(parse(from_os_str))]
49    path: PathBuf,
50
51    #[clap(short, long, parse(from_os_str))]
52    parent: Option<PathBuf>,
53}
54
55#[derive(Debug, Args)]
56pub struct NewChildArgs {
57    #[clap(parse(from_os_str))]
58    path: PathBuf,
59
60    #[clap(short, long, parse(from_os_str))]
61    parent: Option<PathBuf>,
62}
63
64#[derive(Debug, Args)]
65pub struct AddAssetArgs {
66    #[clap(parse(from_os_str))]
67    path: PathBuf,
68
69    #[clap(short, long, parse(from_os_str))]
70    parent: Option<PathBuf>,
71}
72
73#[derive(Debug, Args)]
74pub struct AddScriptArgs {
75    #[clap(parse(from_os_str))]
76    path: PathBuf,
77
78    #[clap(short, long, parse(from_os_str))]
79    container: Option<PathBuf>,
80
81    #[clap(short, long)]
82    priority: Option<i32>,
83
84    #[clap(long)]
85    autorun: Option<bool>,
86
87    // force register parameters
88    #[clap(long)]
89    register: bool,
90    
91    // @todo: Only valid if register is true
92    #[clap(long, value_enum)]
93    path_type: Option<ResourcePathType>,
94}