vorpal_sdk/artifact/
rust_std.rs1use crate::{
2 api::artifact::ArtifactSystem::{Aarch64Darwin, Aarch64Linux, X8664Darwin, X8664Linux},
3 artifact::{rust_toolchain, step, Artifact, ArtifactSource},
4 context::ConfigContext,
5};
6use anyhow::Result;
7
8#[derive(Default)]
9pub struct RustStd {}
10
11impl RustStd {
12 pub fn new() -> Self {
13 Self::default()
14 }
15
16 pub async fn build(self, context: &mut ConfigContext) -> Result<String> {
17 let name = "rust-std";
18 let system = context.get_system();
19
20 let source_target = rust_toolchain::target(system)?;
21 let source_version = rust_toolchain::version();
22 let source_path = format!(
23 "https://sdk.vorpal.build/source/{name}-{source_version}-{source_target}.tar.gz"
24 );
25
26 let source = ArtifactSource::new(name, source_path.as_str()).build();
27
28 let step_script = format!("cp -pr \"./source/{name}/{name}-{source_version}-{source_target}/{name}-{source_target}/.\" \"$VORPAL_OUTPUT\"");
29 let steps = vec![step::shell(context, vec![], vec![], step_script, vec![]).await?];
30 let systems = vec![Aarch64Darwin, Aarch64Linux, X8664Darwin, X8664Linux];
31
32 Artifact::new(name, steps, systems)
33 .with_sources(vec![source])
34 .build(context)
35 .await
36 }
37}