(args: &[String])
| 613 | } |
| 614 | |
| 615 | fn download_assets(args: &[String]) -> Result<()> { |
| 616 | let targets = asset_download_targets(args)?; |
| 617 | if args.iter().any(|arg| arg == "--release") { |
| 618 | let tag = value_after(args, "--release").context("--release requires a tag")?; |
| 619 | ensure!( |
| 620 | value_after(args, "--run-id").is_none() |
| 621 | && value_after(args, "--sha").is_none() |
| 622 | && !args.iter().any(|arg| arg == "--latest-compatible"), |
| 623 | "assets download accepts only one of --run-id, --sha, --latest-compatible, or --release" |
| 624 | ); |
| 625 | download_assets_from_release(tag, &targets)?; |
| 626 | let target_list = targets.join(", "); |
| 627 | println!("downloaded and installed release assets from {tag} / {target_list}"); |
| 628 | return Ok(()); |
| 629 | } |
| 630 | |
| 631 | let candidates = asset_download_run_candidates(args)?; |
| 632 | let mut last_error = None; |
| 633 | |
| 634 | for run_id in candidates { |
| 635 | match download_assets_from_run(&run_id, &targets) { |
| 636 | Ok(()) => { |
| 637 | let target_list = targets.join(", "); |
| 638 | println!( |
| 639 | "downloaded and installed Assets workflow artifacts from run {run_id} / {target_list}" |
| 640 | ); |
| 641 | return Ok(()); |
| 642 | } |
| 643 | Err(error) => { |
| 644 | if args.iter().any(|arg| arg == "--latest-compatible") { |
| 645 | eprintln!( |
| 646 | "Assets workflow run {run_id} is not compatible with this checkout: {error:#}" |
| 647 | ); |
| 648 | last_error = Some(error); |
| 649 | continue; |
| 650 | } |
| 651 | return Err(error); |
| 652 | } |
| 653 | } |
| 654 | } |
| 655 | |
| 656 | if let Some(error) = last_error { |
| 657 | Err(error).context("no compatible successful Assets workflow artifact found") |
| 658 | } else { |
| 659 | bail!("no successful Assets workflow artifact found") |
| 660 | } |
| 661 | } |
| 662 | |
| 663 | fn asset_download_targets(args: &[String]) -> Result<Vec<String>> { |
| 664 | let all_targets = args.iter().any(|arg| arg == "--all-targets"); |
no test coverage detected