11mod common;
22mod dist;
33mod mocked;
4+ mod run;
45mod toolkits_parser;
56mod vendor;
67
78use anyhow:: { anyhow, Context , Result } ;
89use dist:: DIST_HELP ;
9- use mocked:: { installation, manager, server} ;
10+ use mocked:: server;
11+ use run:: RunMode ;
1012use std:: env;
1113use std:: io:: { stdout, Write } ;
1214use std:: path:: PathBuf ;
@@ -21,23 +23,12 @@ Options:
2123 -h, -help Print this help message
2224
2325Commands:
24- dist, d Generate release binaries
25- run-manager Run in manager mode
26+ d, dist Generate release binaries
27+ r, run Build and run RIM for testing purpose
2628 vendor Download packages for offline package build
2729 mock-server
2830 Generate a mocked rustup dist server
2931"# ;
30-
31- const MANAGER_MODE_HELP : & str = r#"
32- Run with manager mode
33-
34- Usage: cargo dev run-manager [OPTIONS]
35-
36- Options:
37- --cli Run manager mode with commandline interface
38- --gui Run manager mode with graphical interface (default)
39- -h, -help Print this help message
40- "# ;
4132const MOCK_HELP : & str = r#"
4233Generate a mocked rustup dist server and rim dist server
4334
@@ -57,8 +48,8 @@ enum DevCmd {
5748 dist_targets : Vec < String > ,
5849 name : Option < String > ,
5950 } ,
60- RunManager {
61- no_gui : bool ,
51+ Run {
52+ mode : RunMode ,
6253 args : Vec < String > ,
6354 } ,
6455 Mock {
@@ -83,25 +74,7 @@ impl DevCmd {
8374 dist_targets,
8475 name,
8576 } => dist:: dist ( mode, binary_only, name, build_target, dist_targets) ?,
86- Self :: RunManager { no_gui, args } => {
87- println ! ( "running manager with args: {args:?}" ) ;
88- // replace home env to prevent modifying the actually environment
89- let home = mocked:: mocked_home ( ) ;
90- std:: env:: set_var ( "HOME" , home) ;
91- #[ cfg( windows) ]
92- std:: env:: set_var ( "USERPROFILE" , home) ;
93-
94- // a mocked server is needed to run most of function in manager
95- server:: generate_rim_server_files ( ) ?;
96-
97- // generate a fake manager binary with higher version so we
98- // can test the self update.
99- if args. iter ( ) . any ( |arg| arg == "update" ) {
100- manager:: generate ( ) ?;
101- }
102-
103- installation:: generate_and_run_manager ( no_gui, & args) ?;
104- }
77+ Self :: Run { mode, args } => mode. run ( & args) ?,
10578 Self :: Vendor {
10679 mode,
10780 name,
@@ -203,18 +176,21 @@ fn main() -> Result<ExitCode> {
203176 clear,
204177 }
205178 }
206- "run-manager " => {
179+ "run" => {
207180 let mut is_extra_arg = false ;
208181 let mut extra_args = vec ! [ ] ;
209- let mut no_gui = false ;
182+ let mut mode = RunMode :: default ( ) ;
210183
211184 while let Some ( arg) = args. next ( ) . as_deref ( ) {
212185 match arg {
213186 "-h" | "--help" if !is_extra_arg => {
214- writeln ! ( & mut stdout, "{MANAGER_MODE_HELP}" ) ?;
187+ writeln ! ( & mut stdout, "{}" , run :: RUN_HELP ) ?;
215188 return Ok ( ExitCode :: SUCCESS ) ;
216189 }
217- "--cli" => no_gui = true ,
190+ "-c" | "--cli" => mode. set_no_gui ( true ) ,
191+ "-g" | "--gui" => mode. set_no_gui ( false ) ,
192+ "-i" | "--installer" => mode. switch_to_installer ( ) ,
193+ "-m" | "--manager" => mode. switch_to_manager ( ) ,
218194 "--" if !is_extra_arg => is_extra_arg = true ,
219195 a => {
220196 if is_extra_arg {
@@ -224,8 +200,8 @@ fn main() -> Result<ExitCode> {
224200 }
225201 }
226202
227- DevCmd :: RunManager {
228- no_gui ,
203+ DevCmd :: Run {
204+ mode ,
229205 args : extra_args,
230206 }
231207 }
0 commit comments