]> git.proxmox.com Git - rustc.git/blame - src/tools/rust-analyzer/xtask/src/flags.rs
New upstream version 1.68.2+dfsg1
[rustc.git] / src / tools / rust-analyzer / xtask / src / flags.rs
CommitLineData
064997fb
FG
1#![allow(unreachable_pub)]
2
3use crate::install::{ClientOpt, Malloc, ServerOpt};
4
5xflags::xflags! {
6 src "./src/flags.rs"
7
8 /// Run custom build command.
9 cmd xtask {
064997fb
FG
10
11 /// Install rust-analyzer server or editor plugin.
12 cmd install {
13 /// Install only VS Code plugin.
14 optional --client
15 /// One of 'code', 'code-exploration', 'code-insiders', 'codium', or 'code-oss'.
16 optional --code-bin name: String
17
18 /// Install only the language server.
19 optional --server
20 /// Use mimalloc allocator for server
21 optional --mimalloc
22 /// Use jemalloc allocator for server
23 optional --jemalloc
24 }
25
26 cmd fuzz-tests {}
27
28 cmd release {
29 optional --dry-run
30 }
31 cmd promote {
32 optional --dry-run
33 }
34 cmd dist {
35 optional --client-patch-version version: String
36 }
9c376795
FG
37 /// Read a changelog AsciiDoc file and update the GitHub Releases entry in Markdown.
38 cmd publish-release-notes {
39 /// Only run conversion and show the result.
40 optional --dry-run
41 /// Target changelog file.
42 required changelog: String
43 }
064997fb
FG
44 cmd metrics {
45 optional --dry-run
46 }
47 /// Builds a benchmark version of rust-analyzer and puts it into `./target`.
2b03887a 48 cmd bb {
064997fb 49 required suffix: String
2b03887a 50 }
064997fb
FG
51 }
52}
53
54// generated start
55// The following code is generated by `xflags` macro.
56// Run `env UPDATE_XFLAGS=1 cargo build` to regenerate.
57#[derive(Debug)]
58pub struct Xtask {
59 pub subcommand: XtaskCmd,
60}
61
62#[derive(Debug)]
63pub enum XtaskCmd {
064997fb
FG
64 Install(Install),
65 FuzzTests(FuzzTests),
66 Release(Release),
67 Promote(Promote),
68 Dist(Dist),
9c376795 69 PublishReleaseNotes(PublishReleaseNotes),
064997fb
FG
70 Metrics(Metrics),
71 Bb(Bb),
72}
73
064997fb
FG
74#[derive(Debug)]
75pub struct Install {
76 pub client: bool,
77 pub code_bin: Option<String>,
78 pub server: bool,
79 pub mimalloc: bool,
80 pub jemalloc: bool,
81}
82
83#[derive(Debug)]
84pub struct FuzzTests;
85
86#[derive(Debug)]
87pub struct Release {
88 pub dry_run: bool,
89}
90
91#[derive(Debug)]
92pub struct Promote {
93 pub dry_run: bool,
94}
95
96#[derive(Debug)]
97pub struct Dist {
98 pub client_patch_version: Option<String>,
99}
100
9c376795
FG
101#[derive(Debug)]
102pub struct PublishReleaseNotes {
103 pub changelog: String,
104
105 pub dry_run: bool,
106}
107
064997fb
FG
108#[derive(Debug)]
109pub struct Metrics {
110 pub dry_run: bool,
111}
112
113#[derive(Debug)]
114pub struct Bb {
115 pub suffix: String,
116}
117
118impl Xtask {
2b03887a
FG
119 #[allow(dead_code)]
120 pub fn from_env_or_exit() -> Self {
121 Self::from_env_or_exit_()
122 }
064997fb
FG
123
124 #[allow(dead_code)]
125 pub fn from_env() -> xflags::Result<Self> {
126 Self::from_env_()
127 }
128
129 #[allow(dead_code)]
130 pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
131 Self::from_vec_(args)
132 }
133}
134// generated end
135
136impl Install {
137 pub(crate) fn server(&self) -> Option<ServerOpt> {
138 if self.client && !self.server {
139 return None;
140 }
141 let malloc = if self.mimalloc {
142 Malloc::Mimalloc
143 } else if self.jemalloc {
144 Malloc::Jemalloc
145 } else {
146 Malloc::System
147 };
148 Some(ServerOpt { malloc })
149 }
150 pub(crate) fn client(&self) -> Option<ClientOpt> {
151 if !self.client && self.server {
152 return None;
153 }
154 Some(ClientOpt { code_bin: self.code_bin.clone() })
155 }
156}