Skip to content

Commit 250e3a5

Browse files
committed
Default to local arch in rig resolve & available
- `rig resolve` defaults to aarch64 on aarc64 Windows. - `rig available` defaults to aarch64 on aarch64 Windows. - `rig availabl --list-rtools-versions` works on aarch64 Windows, and defaults to aarch64. - Make `arm64` an alias to `aarch64` on Windows. Closes #298.
1 parent 9bdebf4 commit 250e3a5

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

src/args.rs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ pub fn rig_app() -> Command {
215215
.long("arch")
216216
.required(false)
217217
.default_value(&_default_arch)
218-
.value_parser(["aarch64", "x86_64"]),
218+
.value_parser(["x86_64", "aarch64", "arm64"]),
219219
);
220220
}
221221

@@ -278,7 +278,7 @@ pub fn rig_app() -> Command {
278278
.conflicts_with("list-distros")
279279
);
280280

281-
#[cfg(any(target_os = "windows", target_os = "linux"))]
281+
#[cfg(any(target_os = "linux"))]
282282
{
283283
cmd_available = cmd_available.arg(
284284
Arg::new("arch")
@@ -303,6 +303,19 @@ pub fn rig_app() -> Command {
303303
);
304304
}
305305

306+
#[cfg(target_os = "windows")]
307+
{
308+
cmd_available = cmd_available.arg(
309+
Arg::new("arch")
310+
.help(HELP_ARCH)
311+
.short('a')
312+
.long("arch")
313+
.required(false)
314+
.default_value(&_default_arch)
315+
.value_parser(["x86_64", "aarch64", "arm64"]),
316+
);
317+
}
318+
306319
let mut cmd_system = Command::new("system")
307320
.about("Manage current installations")
308321
.long_about(HELP_SYSTEM)
@@ -536,7 +549,7 @@ pub fn rig_app() -> Command {
536549
.required(false)
537550
);
538551

539-
#[cfg(any(target_os = "windows", target_os = "linux"))]
552+
#[cfg(any(target_os = "linux"))]
540553
{
541554
cmd_resolve = cmd_resolve.arg(
542555
Arg::new("arch")
@@ -548,7 +561,7 @@ pub fn rig_app() -> Command {
548561
);
549562
}
550563

551-
#[cfg(target_os = "macos")]
564+
#[cfg(any(target_os = "macos"))]
552565
{
553566
cmd_resolve = cmd_resolve.arg(
554567
Arg::new("arch")
@@ -561,6 +574,19 @@ pub fn rig_app() -> Command {
561574
);
562575
}
563576

577+
#[cfg(any(target_os = "windows"))]
578+
{
579+
cmd_resolve = cmd_resolve.arg(
580+
Arg::new("arch")
581+
.help(HELP_ARCH)
582+
.short('a')
583+
.long("arch")
584+
.required(false)
585+
.default_value(&_default_arch)
586+
.value_parser(["x86_64", "aarch64", "arm64"]),
587+
);
588+
}
589+
564590
let mut cmd_rstudio = Command::new("rstudio")
565591
.about("Start RStudio with specified R version")
566592
.long_about(HELP_RSTUDIO);

src/common.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,11 @@ fn sc_available_distros(args: &ArgMatches, mainargs: &ArgMatches)
611611
fn sc_available_rtools_versions(args: &ArgMatches, mainargs: &ArgMatches)
612612
-> Result<(), Box<dyn Error>> {
613613

614-
let url = "https://api.r-hub.io/rversions/rtools-versions".to_string();
614+
let mut url = "https://api.r-hub.io/rversions/rtools-versions".to_string();
615+
let arch = get_arch("windows", args);
616+
if arch != "x86_64" {
617+
url = url + "/" + &arch;
618+
}
615619
let resp = download_json_sync(vec![url])?;
616620
let resp = resp[0].as_array().unwrap();
617621
let all = args.get_flag("all");

0 commit comments

Comments
 (0)