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.rs28
1 files changed, 22 insertions, 6 deletions
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 9d7cdd114..399ff7204 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -14,10 +14,11 @@ use pico_args::Arguments;
14use xtask::{ 14use xtask::{
15 codegen::{self, Mode}, 15 codegen::{self, Mode},
16 dist::run_dist, 16 dist::run_dist,
17 install::{ClientOpt, InstallCmd, ServerOpt}, 17 install::{ClientOpt, InstallCmd, Malloc, ServerOpt},
18 not_bash::pushd, 18 not_bash::pushd,
19 pre_commit, project_root, run_clippy, run_fuzzer, run_pre_cache, run_release, run_rustfmt, 19 pre_commit, project_root,
20 Result, 20 release::{PromoteCmd, ReleaseCmd},
21 run_clippy, run_fuzzer, run_pre_cache, run_rustfmt, Result,
21}; 22};
22 23
23fn main() -> Result<()> { 24fn main() -> Result<()> {
@@ -45,6 +46,7 @@ FLAGS:
45 --client-code Install only VS Code plugin 46 --client-code Install only VS Code plugin
46 --server Install only the language server 47 --server Install only the language server
47 --jemalloc Use jemalloc for server 48 --jemalloc Use jemalloc for server
49 --mimalloc Use mimalloc for server
48 -h, --help Prints help information 50 -h, --help Prints help information
49 " 51 "
50 ); 52 );
@@ -60,13 +62,21 @@ FLAGS:
60 return Ok(()); 62 return Ok(());
61 } 63 }
62 64
63 let jemalloc = args.contains("--jemalloc"); 65 let malloc = match (args.contains("--jemalloc"), args.contains("--mimalloc")) {
66 (false, false) => Malloc::System,
67 (true, false) => Malloc::Jemalloc,
68 (false, true) => Malloc::Mimalloc,
69 (true, true) => {
70 eprintln!("error: Cannot use both `--jemalloc` and `--mimalloc`");
71 return Ok(());
72 }
73 };
64 74
65 args.finish()?; 75 args.finish()?;
66 76
67 InstallCmd { 77 InstallCmd {
68 client: if server { None } else { Some(ClientOpt::VsCode) }, 78 client: if server { None } else { Some(ClientOpt::VsCode) },
69 server: if client_code { None } else { Some(ServerOpt { jemalloc }) }, 79 server: if client_code { None } else { Some(ServerOpt { malloc }) },
70 } 80 }
71 .run() 81 .run()
72 } 82 }
@@ -74,6 +84,7 @@ FLAGS:
74 args.finish()?; 84 args.finish()?;
75 codegen::generate_syntax(Mode::Overwrite)?; 85 codegen::generate_syntax(Mode::Overwrite)?;
76 codegen::generate_parser_tests(Mode::Overwrite)?; 86 codegen::generate_parser_tests(Mode::Overwrite)?;
87 codegen::generate_assists_tests(Mode::Overwrite)?;
77 codegen::generate_assists_docs(Mode::Overwrite)?; 88 codegen::generate_assists_docs(Mode::Overwrite)?;
78 codegen::generate_feature_docs(Mode::Overwrite)?; 89 codegen::generate_feature_docs(Mode::Overwrite)?;
79 Ok(()) 90 Ok(())
@@ -101,7 +112,12 @@ FLAGS:
101 "release" => { 112 "release" => {
102 let dry_run = args.contains("--dry-run"); 113 let dry_run = args.contains("--dry-run");
103 args.finish()?; 114 args.finish()?;
104 run_release(dry_run) 115 ReleaseCmd { dry_run }.run()
116 }
117 "promote" => {
118 let dry_run = args.contains("--dry-run");
119 args.finish()?;
120 PromoteCmd { dry_run }.run()
105 } 121 }
106 "dist" => { 122 "dist" => {
107 let nightly = args.contains("--nightly"); 123 let nightly = args.contains("--nightly");