aboutsummaryrefslogtreecommitdiff
path: root/src/cli.rs
blob: b21c6cf73cf20493c1f95fa55936cda95d27123e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
// SPDX-License-Identifier: GPL-3.0-only

use structopt::clap::{App, AppSettings, Arg, SubCommand};

pub fn cli<'b, 'a>() -> App<'a, 'b> {
  App::new(env!("CARGO_PKG_NAME"))
    .about(env!("CARGO_PKG_DESCRIPTION"))
    .version(env!("CARGO_PKG_VERSION"))
    .author(env!("CARGO_PKG_AUTHORS"))
    .settings(&[AppSettings::SubcommandRequiredElseHelp])
    .subcommands(vec![
      SubCommand::with_name("run").about("Start the WorldServer"),
      SubCommand::with_name("config")
        .setting(AppSettings::SubcommandRequiredElseHelp)
        .subcommands(vec![SubCommand::with_name("show")]),
      SubCommand::with_name("completions")
        .setting(AppSettings::SubcommandRequiredElseHelp)
        .about("Generate shell completions")
        .subcommands(vec![
          SubCommand::with_name("powershell"),
          SubCommand::with_name("bash"),
          SubCommand::with_name("elvish"),
          SubCommand::with_name("zsh"),
          SubCommand::with_name("fish"),
        ]),
    ])
    .args(&[
      Arg::with_name("debug").short("d").long("debug"),
      Arg::with_name("trace").short("t").long("trace"),
    ])
}