1use crate::project::NewProject;
2use std::path::PathBuf;
3
4use add::Add;
5use build::Build;
6use clap::{Parser, Subcommand};
7use config::ConfigCmd;
8use debug::Debug;
9use doc::Doc;
10use download::Download;
11use exec::Exec;
12use generate_rockspec::GenerateRockspec;
13use info::Info;
14use install::Install;
15use install_rockspec::InstallRockspec;
16use list::ListCmd;
17use lux_lib::config::LuaVersion;
18use outdated::Outdated;
19use pack::Pack;
20use path::Path;
21use pin::ChangePin;
22use remove::Remove;
23use run::Run;
24use run_lua::RunLua;
25use search::Search;
26use test::Test;
27use uninstall::Uninstall;
28use update::Update;
29use upload::Upload;
30use url::Url;
31use which::Which;
32
33pub mod add;
34pub mod build;
35pub mod check;
36pub mod config;
37pub mod debug;
38pub mod doc;
39pub mod download;
40pub mod exec;
41pub mod fetch;
42pub mod format;
43pub mod generate_rockspec;
44pub mod info;
45pub mod install;
46pub mod install_lua;
47pub mod install_rockspec;
48pub mod list;
49pub mod outdated;
50pub mod pack;
51pub mod path;
52pub mod pin;
53pub mod project;
54pub mod purge;
55pub mod remove;
56pub mod run;
57pub mod run_lua;
58pub mod search;
59pub mod test;
60pub mod uninstall;
61pub mod unpack;
62pub mod update;
63pub mod upload;
64pub mod utils;
65pub mod which;
66
67#[derive(Parser)]
69#[command(author, version, about, long_about = None, arg_required_else_help = true)]
70pub struct Cli {
71 #[arg(long)]
74 pub dev: bool,
75
76 #[arg(long, value_name = "server")]
79 pub server: Option<Url>,
80
81 #[arg(long, value_name = "extra-server")]
84 pub extra_servers: Option<Vec<Url>>,
85
86 #[arg(long, value_name = "url")]
88 pub only_sources: Option<String>,
89
90 #[arg(long, value_name = "namespace")]
92 pub namespace: Option<String>,
93
94 #[arg(long, value_name = "prefix")]
96 pub lua_dir: Option<PathBuf>,
97
98 #[arg(long, value_name = "ver")]
101 pub lua_version: Option<LuaVersion>,
102
103 #[arg(long, value_name = "tree")]
105 pub tree: Option<PathBuf>,
106
107 #[arg(long, value_name = "path")]
109 pub cache_path: Option<PathBuf>,
110
111 #[arg(long)]
113 pub no_project: bool,
114
115 #[arg(long)]
117 pub verbose: bool,
118
119 #[arg(long)]
121 pub nvim: bool,
122
123 #[arg(long, value_name = "seconds")]
126 pub timeout: Option<usize>,
127
128 #[command(subcommand)]
129 pub command: Commands,
130}
131
132#[derive(Subcommand)]
133pub enum Commands {
134 Add(Add),
136 Build(Build),
138 Check,
140 #[command(subcommand, arg_required_else_help = true)]
142 Config(ConfigCmd),
143 #[command(subcommand, arg_required_else_help = true)]
145 Debug(Debug),
146 Doc(Doc),
148 #[command(arg_required_else_help = true)]
150 Download(Download),
151 Fmt,
153 GenerateRockspec(GenerateRockspec),
155 Info(Info),
157 #[command(arg_required_else_help = true)]
159 Install(Install),
160 #[command(arg_required_else_help = true)]
162 InstallRockspec(InstallRockspec),
163 InstallLua,
165 Lint,
167 List(ListCmd),
169 Lua(RunLua),
171 New(NewProject),
173 Outdated(Outdated),
175 Pack(Pack),
177 Path(Path),
179 Pin(ChangePin),
181 Purge,
183 Remove(Remove),
185 Run(Run),
187 Exec(Exec),
191 #[command(arg_required_else_help = true)]
193 Search(Search),
194 Test(Test),
196 Uninstall(Uninstall),
198 Unpin(ChangePin),
200 Update(Update),
202 Upload(Upload),
204 Which(Which),
206}