aboutsummaryrefslogtreecommitdiff
path: root/xtask/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xtask/src/main.rs')
-rw-r--r--xtask/src/main.rs34
1 files changed, 21 insertions, 13 deletions
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index c3e5c7326..5a99f4a76 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -10,6 +10,7 @@
10 10
11use std::env; 11use std::env;
12 12
13use anyhow::bail;
13use codegen::CodegenCmd; 14use codegen::CodegenCmd;
14use pico_args::Arguments; 15use pico_args::Arguments;
15use xshell::{cmd, cp, pushd}; 16use xshell::{cmd, cp, pushd};
@@ -76,7 +77,7 @@ FLAGS:
76 77
77 let client_opt = args.opt_value_from_str("--client")?; 78 let client_opt = args.opt_value_from_str("--client")?;
78 79
79 args.finish()?; 80 finish_args(args)?;
80 81
81 InstallCmd { 82 InstallCmd {
82 client: if server { None } else { Some(client_opt.unwrap_or_default()) }, 83 client: if server { None } else { Some(client_opt.unwrap_or_default()) },
@@ -86,53 +87,53 @@ FLAGS:
86 } 87 }
87 "codegen" => { 88 "codegen" => {
88 let features = args.contains("--features"); 89 let features = args.contains("--features");
89 args.finish()?; 90 finish_args(args)?;
90 CodegenCmd { features }.run() 91 CodegenCmd { features }.run()
91 } 92 }
92 "format" => { 93 "format" => {
93 args.finish()?; 94 finish_args(args)?;
94 run_rustfmt(Mode::Overwrite) 95 run_rustfmt(Mode::Overwrite)
95 } 96 }
96 "install-pre-commit-hook" => { 97 "install-pre-commit-hook" => {
97 args.finish()?; 98 finish_args(args)?;
98 pre_commit::install_hook() 99 pre_commit::install_hook()
99 } 100 }
100 "lint" => { 101 "lint" => {
101 args.finish()?; 102 finish_args(args)?;
102 run_clippy() 103 run_clippy()
103 } 104 }
104 "fuzz-tests" => { 105 "fuzz-tests" => {
105 args.finish()?; 106 finish_args(args)?;
106 run_fuzzer() 107 run_fuzzer()
107 } 108 }
108 "pre-cache" => { 109 "pre-cache" => {
109 args.finish()?; 110 finish_args(args)?;
110 PreCacheCmd.run() 111 PreCacheCmd.run()
111 } 112 }
112 "release" => { 113 "release" => {
113 let dry_run = args.contains("--dry-run"); 114 let dry_run = args.contains("--dry-run");
114 args.finish()?; 115 finish_args(args)?;
115 ReleaseCmd { dry_run }.run() 116 ReleaseCmd { dry_run }.run()
116 } 117 }
117 "promote" => { 118 "promote" => {
118 let dry_run = args.contains("--dry-run"); 119 let dry_run = args.contains("--dry-run");
119 args.finish()?; 120 finish_args(args)?;
120 PromoteCmd { dry_run }.run() 121 PromoteCmd { dry_run }.run()
121 } 122 }
122 "dist" => { 123 "dist" => {
123 let nightly = args.contains("--nightly"); 124 let nightly = args.contains("--nightly");
124 let client_version: Option<String> = args.opt_value_from_str("--client")?; 125 let client_version: Option<String> = args.opt_value_from_str("--client")?;
125 args.finish()?; 126 finish_args(args)?;
126 DistCmd { nightly, client_version }.run() 127 DistCmd { nightly, client_version }.run()
127 } 128 }
128 "metrics" => { 129 "metrics" => {
129 let dry_run = args.contains("--dry-run"); 130 let dry_run = args.contains("--dry-run");
130 args.finish()?; 131 finish_args(args)?;
131 MetricsCmd { dry_run }.run() 132 MetricsCmd { dry_run }.run()
132 } 133 }
133 "bb" => { 134 "bb" => {
134 let suffix: String = args.free_from_str()?.unwrap(); 135 let suffix: String = args.free_from_str()?;
135 args.finish()?; 136 finish_args(args)?;
136 cmd!("cargo build --release").run()?; 137 cmd!("cargo build --release").run()?;
137 cp("./target/release/rust-analyzer", format!("./target/rust-analyzer-{}", suffix))?; 138 cp("./target/release/rust-analyzer", format!("./target/rust-analyzer-{}", suffix))?;
138 Ok(()) 139 Ok(())
@@ -161,3 +162,10 @@ SUBCOMMANDS:
161 } 162 }
162 } 163 }
163} 164}
165
166fn finish_args(args: Arguments) -> Result<()> {
167 if !args.finish().is_empty() {
168 bail!("Unused arguments.");
169 }
170 Ok(())
171}