Skip to content

Commit 795f9ef

Browse files
committed
Make match statements better
1 parent 7e4656a commit 795f9ef

File tree

1 file changed

+88
-64
lines changed

1 file changed

+88
-64
lines changed

src/cli/rustup_mode.rs

Lines changed: 88 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -128,72 +128,96 @@ pub fn main() -> Result<utils::ExitCode> {
128128
cfg.check_metadata_version()?;
129129

130130
Ok(match matches.subcommand() {
131-
Some(("dump-testament", _)) => common::dump_testament()?,
132-
Some(("show", c)) => match c.subcommand() {
133-
Some(("active-toolchain", m)) => handle_epipe(show_active_toolchain(cfg, m))?,
134-
Some(("home", _)) => handle_epipe(show_rustup_home(cfg))?,
135-
Some(("profile", _)) => handle_epipe(show_profile(cfg))?,
136-
Some(("keys", _)) => handle_epipe(show_keys(cfg))?,
137-
_ => handle_epipe(show(cfg, c))?,
138-
},
139-
Some(("install", m)) => deprecated("toolchain install", cfg, m, update)?,
140-
Some(("update", m)) => update(cfg, m)?,
141-
Some(("check", _)) => check_updates(cfg)?,
142-
Some(("uninstall", m)) => deprecated("toolchain uninstall", cfg, m, toolchain_remove)?,
143-
Some(("default", m)) => default_(cfg, m)?,
144-
Some(("toolchain", c)) => match c.subcommand() {
145-
Some(("install", m)) => update(cfg, m)?,
146-
Some(("list", m)) => handle_epipe(toolchain_list(cfg, m))?,
147-
Some(("link", m)) => toolchain_link(cfg, m)?,
148-
Some(("uninstall", m)) => toolchain_remove(cfg, m)?,
149-
_ => unreachable!(),
150-
},
151-
Some(("target", c)) => match c.subcommand() {
152-
Some(("list", m)) => handle_epipe(target_list(cfg, m))?,
153-
Some(("add", m)) => target_add(cfg, m)?,
154-
Some(("remove", m)) => target_remove(cfg, m)?,
155-
_ => unreachable!(),
156-
},
157-
Some(("component", c)) => match c.subcommand() {
158-
Some(("list", m)) => handle_epipe(component_list(cfg, m))?,
159-
Some(("add", m)) => component_add(cfg, m)?,
160-
Some(("remove", m)) => component_remove(cfg, m)?,
161-
_ => unreachable!(),
162-
},
163-
Some(("override", c)) => match c.subcommand() {
164-
Some(("list", _)) => handle_epipe(common::list_overrides(cfg))?,
165-
Some(("set", m)) => override_add(cfg, m)?,
166-
Some(("unset", m)) => override_remove(cfg, m)?,
167-
_ => unreachable!(),
168-
},
169-
Some(("run", m)) => run(cfg, m)?,
170-
Some(("which", m)) => which(cfg, m)?,
171-
Some(("doc", m)) => doc(cfg, m)?,
172-
Some(("man", m)) => man(cfg, m)?,
173-
Some(("self", c)) => match c.subcommand() {
174-
Some(("update", _)) => self_update::update(cfg)?,
175-
Some(("uninstall", m)) => self_uninstall(m)?,
176-
_ => unreachable!(),
177-
},
178-
Some(("set", c)) => match c.subcommand() {
179-
Some(("default-host", m)) => set_default_host_triple(cfg, m)?,
180-
Some(("profile", m)) => set_profile(cfg, m)?,
181-
Some(("auto-self-update", m)) => set_auto_self_update(cfg, m)?,
131+
Some(s) => match s {
132+
("dump-testament", _) => common::dump_testament()?,
133+
("show", c) => match c.subcommand() {
134+
Some(s) => match s {
135+
("active-toolchain", m) => handle_epipe(show_active_toolchain(cfg, m))?,
136+
("home", _) => handle_epipe(show_rustup_home(cfg))?,
137+
("profile", _) => handle_epipe(show_profile(cfg))?,
138+
("keys", _) => handle_epipe(show_keys(cfg))?,
139+
_ => handle_epipe(show(cfg, c))?,
140+
},
141+
None => handle_epipe(show(cfg, c))?,
142+
},
143+
("install", m) => deprecated("toolchain install", cfg, m, update)?,
144+
("update", m) => update(cfg, m)?,
145+
("check", _) => check_updates(cfg)?,
146+
("uninstall", m) => deprecated("toolchain uninstall", cfg, m, toolchain_remove)?,
147+
("default", m) => default_(cfg, m)?,
148+
("toolchain", c) => match c.subcommand() {
149+
Some(s) => match s {
150+
("install", m) => update(cfg, m)?,
151+
("list", m) => handle_epipe(toolchain_list(cfg, m))?,
152+
("link", m) => toolchain_link(cfg, m)?,
153+
("uninstall", m) => toolchain_remove(cfg, m)?,
154+
_ => unreachable!(),
155+
},
156+
None => unreachable!(),
157+
},
158+
("target", c) => match c.subcommand() {
159+
Some(s) => match s {
160+
("list", m) => handle_epipe(target_list(cfg, m))?,
161+
("add", m) => target_add(cfg, m)?,
162+
("remove", m) => target_remove(cfg, m)?,
163+
_ => unreachable!(),
164+
},
165+
None => unreachable!(),
166+
},
167+
("component", c) => match c.subcommand() {
168+
Some(s) => match s {
169+
("list", m) => handle_epipe(component_list(cfg, m))?,
170+
("add", m) => component_add(cfg, m)?,
171+
("remove", m) => component_remove(cfg, m)?,
172+
_ => unreachable!(),
173+
},
174+
None => unreachable!(),
175+
},
176+
("override", c) => match c.subcommand() {
177+
Some(s) => match s {
178+
("list", _) => handle_epipe(common::list_overrides(cfg))?,
179+
("set", m) => override_add(cfg, m)?,
180+
("unset", m) => override_remove(cfg, m)?,
181+
_ => unreachable!(),
182+
},
183+
None => unreachable!(),
184+
},
185+
("run", m) => run(cfg, m)?,
186+
("which", m) => which(cfg, m)?,
187+
("doc", m) => doc(cfg, m)?,
188+
("man", m) => man(cfg, m)?,
189+
("self", c) => match c.subcommand() {
190+
Some(s) => match s {
191+
("update", _) => self_update::update(cfg)?,
192+
("uninstall", m) => self_uninstall(m)?,
193+
_ => unreachable!(),
194+
},
195+
None => unreachable!(),
196+
},
197+
("set", c) => match c.subcommand() {
198+
Some(s) => match s {
199+
("default-host", m) => set_default_host_triple(cfg, m)?,
200+
("profile", m) => set_profile(cfg, m)?,
201+
("auto-self-update", m) => set_auto_self_update(cfg, m)?,
202+
_ => unreachable!(),
203+
},
204+
None => unreachable!(),
205+
},
206+
("completions", c) => {
207+
if let Some(&shell) = c.get_one::<Shell>("shell") {
208+
output_completion_script(
209+
shell,
210+
c.get_one::<CompletionCommand>("command")
211+
.copied()
212+
.unwrap_or(CompletionCommand::Rustup),
213+
)?
214+
} else {
215+
unreachable!()
216+
}
217+
}
182218
_ => unreachable!(),
183219
},
184-
Some(("completions", c)) => {
185-
if let Some(&shell) = c.get_one::<Shell>("shell") {
186-
(output_completion_script(
187-
shell,
188-
c.get_one::<CompletionCommand>("command")
189-
.copied()
190-
.unwrap_or(CompletionCommand::Rustup),
191-
))?
192-
} else {
193-
unreachable!()
194-
}
195-
}
196-
_ => unreachable!(),
220+
None => unreachable!(),
197221
})
198222
}
199223

0 commit comments

Comments
 (0)