vorpal-sdk 0.5.0-alpha

Vorpal SDK for building Vorpal configurations.
Documentation
use crate::{api::artifact::ArtifactSource, artifact::ArtifactSourceBuilder};

pub fn curl(version: &str) -> ArtifactSource {
    let name = "curl";
    let path = format!("https://curl.se/download/{name}-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn curl_cacert() -> ArtifactSource {
    let name = "curl-cacert";
    let path = "https://curl.se/ca/cacert.pem";

    ArtifactSourceBuilder::new(name, path).build()
}

pub fn file(version: &str) -> ArtifactSource {
    let name = "file";
    let path = format!("https://astron.com/pub/file/file-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn gnu(name: &str, version: &str) -> ArtifactSource {
    let path = format!("https://ftpmirror.gnu.org/gnu/{name}/{name}-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn gnu_xz(name: &str, version: &str) -> ArtifactSource {
    let path = format!("https://ftpmirror.gnu.org/gnu/{name}/{name}-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn gnu_gcc(version: &str) -> ArtifactSource {
    let name = "gcc";
    let path = format!("https://ftpmirror.gnu.org/gnu/gcc/gcc-{version}/gcc-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn gnu_glibc_patch(version: &str) -> ArtifactSource {
    let name = "glibc-patch";
    let path =
        format!("https://www.linuxfromscratch.org/patches/lfs/12.2/glibc-{version}-fhs-1.patch",);

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn libidn2(version: &str) -> ArtifactSource {
    let name = "libidn2";
    let path = format!("https://ftpmirror.gnu.org/gnu/libidn/libidn2-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn libpsl(version: &str) -> ArtifactSource {
    let name = "libpsl";
    let path = format!(
        "https://github.com/rockdaboot/libpsl/releases/download/{version}/libpsl-{version}.tar.gz",
    );

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn linux(version: &str) -> ArtifactSource {
    let name = "linux";
    let path = format!("https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn ncurses(version: &str) -> ArtifactSource {
    let name = "ncurses";
    let path = format!("https://invisible-mirror.net/archives/ncurses/ncurses-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn openssl(version: &str) -> ArtifactSource {
    let name = "openssl";
    let path = format!("https://www.openssl.org/source/openssl-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn perl(version: &str) -> ArtifactSource {
    let name = "perl";
    let path = format!("https://www.cpan.org/src/5.0/perl-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn python(version: &str) -> ArtifactSource {
    let name = "python";
    let path = format!("https://www.python.org/ftp/python/{version}/Python-{version}.tar.xz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn unzip_patch_fixes(version: &str) -> ArtifactSource {
    let name = "unzip-patch-fixes";
    let path = format!("https://www.linuxfromscratch.org/patches/blfs/12.2/unzip-{version}-consolidated_fixes-1.patch");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn unzip_patch_gcc14(version: &str) -> ArtifactSource {
    let name = "unzip-patch-gcc14";
    let path =
        format!("https://www.linuxfromscratch.org/patches/blfs/12.2/unzip-{version}-gcc14-1.patch");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn unzip(version: &str) -> ArtifactSource {
    let name = "unzip";
    let version = version.replace(".", "");
    let path = format!("https://cytranet-dal.dl.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip{version}.tar.gz?viasf=1");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn util_linux(version: &str) -> ArtifactSource {
    let name = "util-linux";
    let path = format!(
        "https://www.kernel.org/pub/linux/utils/util-linux/v2.40/util-linux-{version}.tar.xz"
    );

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn xz(version: &str) -> ArtifactSource {
    let name = "xz";
    let path = format!(
        "https://github.com/tukaani-project/xz/releases/download/v{version}/xz-{version}.tar.xz"
    );

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}

pub fn zlib(version: &str) -> ArtifactSource {
    let name = "zlib";
    let path = format!("https://zlib.net/fossils/zlib-{version}.tar.gz");

    ArtifactSourceBuilder::new(name, path.as_str()).build()
}