Skip to content

rustup-available-packages ignores the "version" and "git_commit_hash" rustup manifest fields #58

Open
@lambdageek

Description

@lambdageek

What I'm trying to do:

At my employer, we build our own versions of the Rust toolchain (stable as well as beta and nightly). We would like to fetch the rustup manifests for the channels and do internal builds of the same commits that upstream provides with rustup. I would like to use rustup-available-packages to fetch the manifests and extract the commits that were used. The TOML manifest has these fields, but the PackageTargets type does not deserialize them:

[pkg.rust]
version = "1.88.0-nightly (e9f8103f9 2025-05-07)"
git_commit_hash = "e9f8103f93f8ce2fa2c15c0c6796ec821f8ae15d"
/// Package info.
#[derive(Debug, Serialize, Deserialize, PartialEq)]
pub struct PackageTargets {
    /// Maps targets onto package availability info.
    #[serde(rename = "target")]
    pub targets: HashMap<String, PackageInfo>,
}

Would you be open to a PR that adds these fields (and updates the tests).

 /// Package info.
 #[derive(Debug, Serialize, Deserialize, PartialEq)]
 pub struct PackageTargets {
+    /// The package version. May be empty if the package is not available.
+    pub version: String,
+    /// The commit hash of the package. May be `None` if the package is not available.
+    #[serde(default)]
+    pub git_commit_hash: Option<String>,
     /// Maps targets onto package availability info.
     #[serde(rename = "target")]
    pub targets: HashMap<String, PackageInfo>,
}

I am not proposing to change the generated HTML pages (although of course that is possible later)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions