MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / download_assets

Function download_assets

xtask/src/main.rs:615–661  ·  view source on GitHub ↗
(args: &[String])

Source from the content-addressed store, hash-verified

613}
614
615fn 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
663fn asset_download_targets(args: &[String]) -> Result<Vec<String>> {
664 let all_targets = args.iter().any(|arg| arg == "--all-targets");

Callers 1

assetsFunction · 0.85

Calls 7

asset_download_targetsFunction · 0.85
value_afterFunction · 0.85
download_assets_from_runFunction · 0.85
iterMethod · 0.80
joinMethod · 0.45

Tested by

no test coverage detected