Compare commits

...

25 Commits

Author SHA1 Message Date
Taiki Endo
297054b274 Release 2.48.11 2025-02-14 10:55:03 +09:00
Taiki Endo
bdbb267a22 Update typos@latest to 1.29.7 2025-02-14 03:18:51 +09:00
Taiki Endo
ae9d9ea210 Release 2.48.10 2025-02-13 10:48:20 +09:00
Taiki Endo
df7d9c70b5 Update cargo-nextest@latest to 0.9.90 2025-02-13 09:29:48 +09:00
Taiki Endo
174dd15542 Update cargo-binstall@latest to 1.10.23 2025-02-12 13:09:48 +09:00
Taiki Endo
995f97569c Release 2.48.9 2025-02-11 21:28:32 +09:00
Taiki Endo
8492d65459 Update cargo-spellcheck@latest to 0.15.2 2025-02-11 21:19:24 +09:00
Taiki Endo
23db74cab2 Release 2.48.8 2025-02-11 19:00:49 +09:00
Taiki Endo
b95243b2fd Simplify template version replace in read_download_info 2025-02-11 18:55:50 +09:00
Taiki Endo
804d0fbae7 Revert "codegen: Update ureq from 2 to 3"
This reverts commit bee06ee963.

See https://github.com/taiki-e/install-action/pull/831#issuecomment-2650284580.
2025-02-11 18:45:46 +09:00
Taiki Endo
c92f25fe23 codegen: Dedup x86_64_windows/aarch64_windows 2025-02-11 18:41:00 +09:00
Taiki Endo
771bd4fef9 codegen: Tweak code around BufWriter 2025-02-11 18:40:20 +09:00
Taiki Endo
dd213e8db4 Update cargo-no-dev-deps@latest to 0.2.15 2025-02-11 18:38:26 +09:00
Taiki Endo
63b321e245 Update cargo-minimal-versions@latest to 0.1.30 2025-02-11 18:38:26 +09:00
Taiki Endo
f8eeeb3526 Update cargo-hack@latest to 0.6.35 2025-02-11 18:38:26 +09:00
Taiki Endo
82c3ccf997 Release 2.48.7 2025-02-11 06:35:24 +09:00
Taiki Endo
4ba684457e Update cargo-nextest@latest to 0.9.89 2025-02-11 06:33:50 +09:00
Taiki Endo
5bc300ae62 Release 2.48.6 2025-02-10 19:58:20 +09:00
Taiki Endo
a07119b7b1 Update cargo-spellcheck@latest to 0.15.1 2025-02-10 18:40:38 +09:00
Taiki Endo
c1952a69c3 Release 2.48.5 2025-02-10 10:50:11 +09:00
Taiki Endo
b24387dafd Update release-plz@latest to 0.3.120 2025-02-10 06:33:09 +09:00
Taiki Endo
5ae641ad51 Release 2.48.4 2025-02-10 00:39:10 +09:00
Taiki Endo
4fa427fe8e Update cargo-zigbuild@latest to 0.19.8 2025-02-10 00:36:11 +09:00
Taiki Endo
1bfd4d7803 Release 2.48.3 2025-02-09 21:56:18 +09:00
Taiki Endo
128658a456 Update release-plz@latest to 0.3.119 2025-02-09 21:39:11 +09:00
15 changed files with 382 additions and 62 deletions

View File

@@ -6,6 +6,9 @@ updates:
interval: daily interval: daily
commit-message: commit-message:
prefix: '' prefix: ''
ignore:
# https://github.com/taiki-e/install-action/pull/831#issuecomment-2650284580
- dependency-name: ureq
labels: [] labels: []
- package-ecosystem: github-actions - package-ecosystem: github-actions
directory: / directory: /

View File

@@ -10,6 +10,48 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased] ## [Unreleased]
## [2.48.11] - 2025-02-14
- Update `typos@latest` to 1.29.7.
## [2.48.10] - 2025-02-13
- Update `cargo-nextest@latest` to 0.9.90.
- Update `cargo-binstall@latest` to 1.10.23.
## [2.48.9] - 2025-02-11
- Update `cargo-spellcheck@latest` to 0.15.2.
## [2.48.8] - 2025-02-11
- Update `cargo-no-dev-deps@latest` to 0.2.15.
- Update `cargo-minimal-versions@latest` to 0.1.30.
- Update `cargo-hack@latest` to 0.6.35.
## [2.48.7] - 2025-02-10
- Update `cargo-nextest@latest` to 0.9.89.
## [2.48.6] - 2025-02-10
- Update `cargo-spellcheck@latest` to 0.15.1.
## [2.48.5] - 2025-02-10
- Update `release-plz@latest` to 0.3.120.
## [2.48.4] - 2025-02-09
- Update `cargo-zigbuild@latest` to 0.19.8.
## [2.48.3] - 2025-02-09
- Update `release-plz@latest` to 0.3.119.
## [2.48.2] - 2025-02-09 ## [2.48.2] - 2025-02-09
- Update `release-plz@latest` to 0.3.118. - Update `release-plz@latest` to 0.3.118.
@@ -3456,7 +3498,16 @@ Note: This release is considered a breaking change because installing on version
Initial release Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.48.2...HEAD [Unreleased]: https://github.com/taiki-e/install-action/compare/v2.48.11...HEAD
[2.48.11]: https://github.com/taiki-e/install-action/compare/v2.48.10...v2.48.11
[2.48.10]: https://github.com/taiki-e/install-action/compare/v2.48.9...v2.48.10
[2.48.9]: https://github.com/taiki-e/install-action/compare/v2.48.8...v2.48.9
[2.48.8]: https://github.com/taiki-e/install-action/compare/v2.48.7...v2.48.8
[2.48.7]: https://github.com/taiki-e/install-action/compare/v2.48.6...v2.48.7
[2.48.6]: https://github.com/taiki-e/install-action/compare/v2.48.5...v2.48.6
[2.48.5]: https://github.com/taiki-e/install-action/compare/v2.48.4...v2.48.5
[2.48.4]: https://github.com/taiki-e/install-action/compare/v2.48.3...v2.48.4
[2.48.3]: https://github.com/taiki-e/install-action/compare/v2.48.2...v2.48.3
[2.48.2]: https://github.com/taiki-e/install-action/compare/v2.48.1...v2.48.2 [2.48.2]: https://github.com/taiki-e/install-action/compare/v2.48.1...v2.48.2
[2.48.1]: https://github.com/taiki-e/install-action/compare/v2.48.0...v2.48.1 [2.48.1]: https://github.com/taiki-e/install-action/compare/v2.48.0...v2.48.1
[2.48.0]: https://github.com/taiki-e/install-action/compare/v2.47.32...v2.48.0 [2.48.0]: https://github.com/taiki-e/install-action/compare/v2.47.32...v2.48.0

View File

@@ -277,13 +277,13 @@ read_download_info() {
bin_in_archive=() bin_in_archive=()
if [[ "${url}" == "null" ]]; then if [[ "${url}" == "null" ]]; then
local template local template
template=$(jq -r ".template.${host_platform}" "${manifest_dir}/${tool}.json") template=$(jq -c ".template.${host_platform}" "${manifest_dir}/${tool}.json")
template="${template//\$\{version\}/${exact_version}}"
url=$(jq -r '.url' <<<"${template}") url=$(jq -r '.url' <<<"${template}")
url="${url//\$\{version\}/${exact_version}}" tmp=$(jq -r '.bin' <<<"${template}")
tmp=$(jq -r '.bin' <<<"${template}" | sed -E "s/\\$\\{version\\}/${exact_version}/g")
if [[ "${tmp}" == *"["* ]]; then if [[ "${tmp}" == *"["* ]]; then
# shellcheck disable=SC2207 # shellcheck disable=SC2207
bin_in_archive=($(jq -r '.bin[]' <<<"${template}" | sed -E "s/\\$\\{version\\}/${exact_version}/g")) bin_in_archive=($(jq -r '.bin[]' <<<"${template}"))
fi fi
else else
tmp=$(jq -r '.bin' <<<"${download_info}") tmp=$(jq -r '.bin' <<<"${download_info}")

View File

@@ -22,32 +22,32 @@
}, },
"license_markdown": "[GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE)", "license_markdown": "[GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE)",
"latest": { "latest": {
"version": "1.10.22" "version": "1.10.23"
}, },
"1.10.22": { "1.10.23": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"etag": "0x8DD38568770C382", "etag": "0x8DD4AFD896913A3",
"checksum": "74d7c647c7e60bb8464fa551702fdd38a7241f5cedb2c4edc3b11639cd1dae47" "checksum": "34de8f3ada6cb3e7ba6b928c89e0365b2d915bf55868f89adb2dc6ef54dc7a57"
}, },
"x86_64_macos": { "x86_64_macos": {
"etag": "0x8DD38560D10F1DA", "etag": "0x8DD4AFD5A60CA1D",
"checksum": "0abaad286197df9e5a3d25bfdca682fa91fef65fef13f42e20ec24a98165c71a" "checksum": "2bf066806ab55af01111f36429f17417a0edf4b378b7da0bf20630e3513452ae"
}, },
"x86_64_windows": { "x86_64_windows": {
"etag": "0x8DD3857BFED715A", "etag": "0x8DD4AFE9EE1AC80",
"checksum": "36d6ea24db049a36d0eab33003e6ee007955f01a8ce89fef46d4026adb86db96" "checksum": "e3abbe9a4607ec25b13bcb753a6107b8c4c3c96182613077d8e31e98c1c5d05f"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"etag": "0x8DD38563219A538", "etag": "0x8DD4AFD39474706",
"checksum": "b8c32b1b007482f42f6c4b5f8cfeb168f9674ec6448bfa29ae0c4ba01b7a370b" "checksum": "95e7e99e421af46ae3553f3d39ef7a8e30b5a9b665766ff1a377b98c5f779ca2"
}, },
"aarch64_macos": { "aarch64_macos": {
"etag": "0x8DD3856413081F7", "etag": "0x8DD4AFDA9863BD9",
"checksum": "97ce4a2f18181f052dda266b042d8bb220e48ffe40ca75e796ae4c5e418b9e01" "checksum": "73abce9648edad70f4c5d22c30a2f5bb8ebedd012b6ac874608003153fd815c2"
}, },
"aarch64_windows": { "aarch64_windows": {
"etag": "0x8DD3857931A5667", "etag": "0x8DD4AFE236CDF4D",
"checksum": "d86dfba0c13f7c84724e1d21fcec35b8a42633733215a61d1ee183455b12db5e" "checksum": "e22b0a697ebf017cfb05302bc02c59f79536cd9f63e7dd385a4da3da3fbbdc76"
} }
} }
} }

View File

@@ -3,10 +3,42 @@
"template": null, "template": null,
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-MIT)", "license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.6.34" "version": "0.6.35"
}, },
"0.6": { "0.6": {
"version": "0.6.34" "version": "0.6.35"
},
"0.6.35": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"etag": "0x8DD4A6E5EB58C77",
"checksum": "eff70993a6da63125e378ff37b029e8ec3df738d8f52e100a003d0f1bb999a46"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-x86_64-apple-darwin.tar.gz",
"etag": "0x8DD4A6E7EFB6D18",
"checksum": "04a5849fe5d8da9f41cb9a784c0a3f9a4c572db6dfcb2bd585da565cba51b5f2"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-x86_64-pc-windows-msvc.tar.gz",
"etag": "0x8DD4A6E6C197A37",
"checksum": "bb00d151d1acd36f2c545941cbc1c84ad6efbd54dd5a284d1699b10c9175c97d"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"etag": "0x8DD4A6E34F0549E",
"checksum": "917a14465547ca09b7e0872ca2532e877c5a2ed1f919bc52ff297d812ee34012"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-aarch64-apple-darwin.tar.gz",
"etag": "0x8DD4A6E44BEE1EA",
"checksum": "4a147720e1ab3ef295af88d6c26781999b2c23bd6d40f9f7ddad7cf2e68441ed"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.35/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"etag": "0x8DD4A6E338AB5BB",
"checksum": "43e878cb91d845cbfc396e146d0e9eb174e7b28623dbf4f8b7d8039f120a6a45"
}
}, },
"0.6.34": { "0.6.34": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -22,10 +22,36 @@
}, },
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-MIT)", "license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.1.29" "version": "0.1.30"
}, },
"0.1": { "0.1": {
"version": "0.1.29" "version": "0.1.30"
},
"0.1.30": {
"x86_64_linux_musl": {
"etag": "0x8DD4A6E25DB06C6",
"checksum": "72a89985f39e12285b7d8e63cf26d8f41c97d72aea83478dc685d513d9e75044"
},
"x86_64_macos": {
"etag": "0x8DD4A6E0A5AE6A1",
"checksum": "3cacfaedc52499c4a2875148ede335c504e6dadd605a726baafc76929d6f7ddc"
},
"x86_64_windows": {
"etag": "0x8DD4A6E000C0CDA",
"checksum": "58516125269596aa451e524663f30e70fbacacf252bff6f35ca606abf1be43ec"
},
"aarch64_linux_musl": {
"etag": "0x8DD4A6E044102DA",
"checksum": "60371ed27eb44193774ada646fd58608fa6441b89913268880168795d9cd0a65"
},
"aarch64_macos": {
"etag": "0x8DD4A6DDE1DB827",
"checksum": "99c141466361587a6e9c5a0455245e1379ada63d7258b6a6765bc0f715a4444e"
},
"aarch64_windows": {
"etag": "0x8DD4A6E17E7FE9E",
"checksum": "3e226428d21c4db9dd9aaf34b8ea7046be87af3ef9b294b80ac14d8cb6a75845"
}
}, },
"0.1.29": { "0.1.29": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -19,10 +19,56 @@
}, },
"license_markdown": "[Apache-2.0](https://github.com/nextest-rs/nextest/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/main/LICENSE-MIT)", "license_markdown": "[Apache-2.0](https://github.com/nextest-rs/nextest/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.9.88" "version": "0.9.90"
}, },
"0.9": { "0.9": {
"version": "0.9.88" "version": "0.9.90"
},
"0.9.90": {
"previous_stable_version": "0.9.89",
"x86_64_linux_gnu": {
"etag": "0x8DD4BC2B4419A0D",
"checksum": "c713b60d9612cd63cad22e65fa368d44e60a7708dc06f43c35ef1210a3176e48"
},
"x86_64_linux_musl": {
"etag": "0x8DD4BC2FD016D79",
"checksum": "2d41dcd1766be58d96aa6b312eb82f75c059c2a4738ff5ff9b748a5ed0b7b7ae"
},
"x86_64_macos": {
"etag": "0x8DD4BC2F506FD01",
"checksum": "062f0e5a4470122304e2e1d91ee26d1aa4e4d4b931ce8969dc2f233e0185fd40"
},
"x86_64_windows": {
"etag": "0x8DD4BC326350110",
"checksum": "7d953a469fe271a6085f203ab000d80bc03c022c10adf6026aa665b9da4f21cd"
},
"aarch64_linux_gnu": {
"etag": "0x8DD4BC2C54D2DE2",
"checksum": "4b63d96f5624759d8e3543bff2c4ac38556da4a18b114e8ed16aa13ecfd3b29c"
}
},
"0.9.89": {
"previous_stable_version": "0.9.88",
"x86_64_linux_gnu": {
"etag": "0x8DD4A15B96B1A84",
"checksum": "d90785677e767a0b8b50fbaffc465f3ab2d67d1f692137898130ae9d338070b9"
},
"x86_64_linux_musl": {
"etag": "0x8DD4A15D2E5AF8F",
"checksum": "8998b930c766e34975f9ec2490f54fb29ec5bd614340bff79883c78c9c4c5809"
},
"x86_64_macos": {
"etag": "0x8DD4A15D38E51B7",
"checksum": "e7686274224c5e32469cd1da66495663b87620cf2bf800d7b406fb58f4938b82"
},
"x86_64_windows": {
"etag": "0x8DD4A1668EB3B53",
"checksum": "e3651fe04052a654ed613e7368a0a7be08cc85190f2d8c9380cd4702b2604868"
},
"aarch64_linux_gnu": {
"etag": "0x8DD4A1575ED9107",
"checksum": "8f00921063058b650e44246549c476e42e850a4925892b0b1a4f9b2b45bb7035"
}
}, },
"0.9.88": { "0.9.88": {
"previous_stable_version": "0.9.87", "previous_stable_version": "0.9.87",

View File

@@ -22,10 +22,36 @@
}, },
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-MIT)", "license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.2.14" "version": "0.2.15"
}, },
"0.2": { "0.2": {
"version": "0.2.14" "version": "0.2.15"
},
"0.2.15": {
"x86_64_linux_musl": {
"etag": "0x8DD4A6E15A58780",
"checksum": "d917d43b52d04a643b8bca6492d2592eeb34d78d76aad26861e15247689f6d6a"
},
"x86_64_macos": {
"etag": "0x8DD4A6E115D44AA",
"checksum": "5f260e5bbc1c8ff760cd68d0a05ea953a3c69940fc1f766209a5310b7ddd910d"
},
"x86_64_windows": {
"etag": "0x8DD4A6DFE0E5EA1",
"checksum": "255d926f677c970a653528e10e159db9d35b70eb6b4363d14a012c39b890c2be"
},
"aarch64_linux_musl": {
"etag": "0x8DD4A6E04BB2D14",
"checksum": "05179148e3e2c84b1e808b52fcd30395a49df3347c932a2ae4dd34a3db5c6dcb"
},
"aarch64_macos": {
"etag": "0x8DD4A6DE379D4E7",
"checksum": "859e6f542b701b279641cc7616214e69c3b951195a4b9372f70a7e8b8a3ec1ac"
},
"aarch64_windows": {
"etag": "0x8DD4A6E0CFFBCF1",
"checksum": "44467a4d4b290edf18ec28dd2e6cb63c4b551cd6c7a96350205a3cd4ceb555b0"
}
}, },
"0.2.14": { "0.2.14": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -10,7 +10,30 @@
}, },
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)", "license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
"latest": { "latest": {
"version": "0.14.0" "version": "0.15.2"
},
"0.15": {
"version": "0.15.2"
},
"0.15.2": {
"x86_64_linux_gnu": {
"etag": "0x8DD4A85530EF13A",
"checksum": "9b36eb04e83aaea2c943064fbb2e5a04d37a46bcf51dfd99495b74b09ff56455"
},
"x86_64_windows": {
"etag": "0x8DD4A8564500872",
"checksum": "5d70eac68be1dae5fb69439217581f79e642867ddd4b67ba258e224de6ff82a2"
}
},
"0.15.1": {
"x86_64_linux_gnu": {
"etag": "0x8DD49AEF852F898",
"checksum": "b96e4e73babd959aa138d1629b143180e83ebd8461064fa68e99e2e961560029"
},
"x86_64_windows": {
"etag": "0x8DD49AF09E6176C",
"checksum": "53e697b1016880ffe864dfba9fda68c050694644267557450881d52d9eed987d"
}
}, },
"0.14": { "0.14": {
"version": "0.14.0" "version": "0.14.0"

View File

@@ -19,10 +19,32 @@
}, },
"license_markdown": "[MIT](https://github.com/rust-cross/cargo-zigbuild/blob/main/LICENSE)", "license_markdown": "[MIT](https://github.com/rust-cross/cargo-zigbuild/blob/main/LICENSE)",
"latest": { "latest": {
"version": "0.19.7" "version": "0.19.8"
}, },
"0.19": { "0.19": {
"version": "0.19.7" "version": "0.19.8"
},
"0.19.8": {
"x86_64_linux_musl": {
"etag": "0x8DD490D612D2ABC",
"checksum": "f7fe3a25727e5b58e1b1d7fb8119a845675d441276214039cd1c2e3e49376180"
},
"x86_64_macos": {
"etag": "0x8DD490D767A3640",
"checksum": "9a807773528537ffd60d3b09a657a0a63b237a6cefb31155584646bf01aae302"
},
"x86_64_windows": {
"etag": "0x8DD490D84454E90",
"checksum": "8a35efb6041d35fea144e05e730531acfd232b1193dd2272804aeb1205452ed6"
},
"aarch64_linux_musl": {
"etag": "0x8DD490D610F8ADB",
"checksum": "ca193cab2f29cb1380992fe51ed7e13ea759be519a4afdd045f70f01508f1853"
},
"aarch64_windows": {
"etag": "0x8DD490DBC8F876E",
"checksum": "2f60fdbe8e2c7b8bd0562225a97a6c66f87f8966f532bc24bd86309961b5728b"
}
}, },
"0.19.7": { "0.19.7": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -22,10 +22,62 @@
}, },
"license_markdown": "[MIT](https://github.com/release-plz/release-plz/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/release-plz/release-plz/blob/main/LICENSE-APACHE)", "license_markdown": "[MIT](https://github.com/release-plz/release-plz/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/release-plz/release-plz/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.3.118" "version": "0.3.120"
}, },
"0.3": { "0.3": {
"version": "0.3.118" "version": "0.3.120"
},
"0.3.120": {
"x86_64_linux_musl": {
"etag": "0x8DD493BAA7B1A03",
"checksum": "d4098b2256d9d72117a25dfe7cfc668006a55b0056e3e00003c02100c08ca118"
},
"x86_64_macos": {
"etag": "0x8DD493C09063E5E",
"checksum": "d07b769b953bee775de789ad57058d02c1276723dfceac9cdc067620a40a2cb2"
},
"x86_64_windows": {
"etag": "0x8DD493C59593D51",
"checksum": "185dac76c26be85afe87d799e8f4fb432fd23d0acdac3ce5840d8245f931a7ec"
},
"aarch64_linux_musl": {
"etag": "0x8DD493BADBBEC1F",
"checksum": "3b75dd1b9ceb3d40c3c65eb50139b1b67cdb08eec830f48887f1b381fd791b4c"
},
"aarch64_macos": {
"etag": "0x8DD493C7A153DBF",
"checksum": "700f6155c8017b2ee72131e2b707c4298b55c2a970abef6d2af0cf407ef7960f"
},
"aarch64_windows": {
"etag": "0x8DD493C8F1D18C1",
"checksum": "9bcbf23b4f0700a0bb818e33543bf79171d6850620f3eb1d872b1cadeb89f213"
}
},
"0.3.119": {
"x86_64_linux_musl": {
"etag": "0x8DD48EFF131643C",
"checksum": "3b8c3c69d6fcec0578418122dc7b69a0045ba4c91ae982b88f498ae53971d22a"
},
"x86_64_macos": {
"etag": "0x8DD48F0BA80B7C8",
"checksum": "aed372262ed9becc9f47606fdc7129af80787e323888d8a9af8b4415b8391926"
},
"x86_64_windows": {
"etag": "0x8DD48F0E65B8A2D",
"checksum": "a3b58e918f3dc7b577e7eeed670e715bca5901ef76664e096f9fab2230ef07f7"
},
"aarch64_linux_musl": {
"etag": "0x8DD48F0053A7A76",
"checksum": "1b6ad1802f03db6294efcfee57d2badad041d7725868f3418ca344ddf439a2df"
},
"aarch64_macos": {
"etag": "0x8DD48F15FD3FDEE",
"checksum": "39759880db4ca52942589c57a1c293750cc1315ae96f4cd1060ef4fefac9cc1e"
},
"aarch64_windows": {
"etag": "0x8DD48F0EC5D1CD8",
"checksum": "645cc73ecb19571ba8c145015ed80eaadeee0fbc0e5f7a49d481a5a8cc23623b"
}
}, },
"0.3.118": { "0.3.118": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

42
manifests/typos.json generated
View File

@@ -16,13 +16,49 @@
}, },
"license_markdown": "[MIT](https://github.com/crate-ci/typos/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/crate-ci/typos/blob/master/LICENSE-APACHE)", "license_markdown": "[MIT](https://github.com/crate-ci/typos/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/crate-ci/typos/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "1.29.5" "version": "1.29.7"
}, },
"1": { "1": {
"version": "1.29.5" "version": "1.29.7"
}, },
"1.29": { "1.29": {
"version": "1.29.5" "version": "1.29.7"
},
"1.29.7": {
"x86_64_linux_musl": {
"etag": "0x8DD4C4ABE7A46E8",
"checksum": "27e96ea40ce90c1c81e0c761b3c3161e8b0a0184f89cc938f101e1719754e6e6"
},
"x86_64_macos": {
"etag": "0x8DD4C4AD50F54F0",
"checksum": "5406408d4b701520d06b84b0852b8539a76a68ee28b0cec5fe506544577f6e6b"
},
"x86_64_windows": {
"etag": "0x8DD4C4B1EEE52D2",
"checksum": "4b90d1d6c4f2ef90c5dfffdbc79288576f6a5590783e6f86741c14e62baeaba6"
},
"aarch64_macos": {
"etag": "0x8DD4C4AA38D01D4",
"checksum": "e7f683d02a224515e2e0efb74fee6b8a55bd75698bef6aab0fbedafaacc6298d"
}
},
"1.29.6": {
"x86_64_linux_musl": {
"etag": "0x8DD4C447EF53536",
"checksum": "384dce303c9139f7a2834eedeea1370e5f94665cd15f97340937f070a15431f1"
},
"x86_64_macos": {
"etag": "0x8DD4C448D48BC67",
"checksum": "2d407c1bc8e92f3931138b6612848dc0a60ff1c8d7f01d4bd74ba9549ca2e4b0"
},
"x86_64_windows": {
"etag": "0x8DD4C452CE68A20",
"checksum": "bcb73abfee73a7679ee951d3565c00e4f595bbb4dd0e8b5d6aff561ebcf81262"
},
"aarch64_macos": {
"etag": "0x8DD4C449D3122A1",
"checksum": "5cd7b551962e4d62e7f82d299472d7e8df181d45babc41a46480587bb5c5633c"
}
}, },
"1.29.5": { "1.29.5": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -18,7 +18,7 @@ spdx = "0.10"
tar = "0.4" tar = "0.4"
toml_edit = { version = "0.22", default-features = false, features = ["parse", "serde"] } toml_edit = { version = "0.22", default-features = false, features = ["parse", "serde"] }
# TODO: call curl command instead of using ureq? # TODO: call curl command instead of using ureq?
ureq = { version = "3", features = ["json"] } ureq = { version = "2", features = ["json"] }
[lints] [lints]
workspace = true workspace = true

View File

@@ -19,7 +19,6 @@ use install_action_internal_codegen::{
}; };
use sha2::{Digest as _, Sha256}; use sha2::{Digest as _, Sha256};
use spdx::expression::{ExprNode, ExpressionReq, Operator}; use spdx::expression::{ExprNode, ExpressionReq, Operator};
use ureq::http::header;
fn main() -> Result<()> { fn main() -> Result<()> {
let args: Vec<_> = env::args().skip(1).collect(); let args: Vec<_> = env::args().skip(1).collect();
@@ -53,7 +52,7 @@ fn main() -> Result<()> {
eprintln!("downloading metadata from https://api.github.com/repos/{repo}"); eprintln!("downloading metadata from https://api.github.com/repos/{repo}");
let repo_info: github::RepoMetadata = let repo_info: github::RepoMetadata =
download(&format!("https://api.github.com/repos/{repo}"))?.body_mut().read_json()?; download(&format!("https://api.github.com/repos/{repo}"))?.into_json()?;
eprintln!("downloading releases from https://api.github.com/repos/{repo}/releases"); eprintln!("downloading releases from https://api.github.com/repos/{repo}/releases");
let mut releases: github::Releases = vec![]; let mut releases: github::Releases = vec![];
@@ -64,8 +63,7 @@ fn main() -> Result<()> {
let mut r: github::Releases = download(&format!( let mut r: github::Releases = download(&format!(
"https://api.github.com/repos/{repo}/releases?per_page={per_page}&page={page}" "https://api.github.com/repos/{repo}/releases?per_page={per_page}&page={page}"
))? ))?
.body_mut() .into_json()?;
.read_json()?;
// If version_req is latest, it is usually sufficient to look at the latest 100 releases. // If version_req is latest, it is usually sufficient to look at the latest 100 releases.
if r.len() < per_page || version_req.is_some_and(|req| req == "latest") { if r.len() < per_page || version_req.is_some_and(|req| req == "latest") {
releases.append(&mut r); releases.append(&mut r);
@@ -100,13 +98,11 @@ fn main() -> Result<()> {
if let Some(crate_name) = &base_info.rust_crate { if let Some(crate_name) = &base_info.rust_crate {
eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}"); eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}");
let info = download(&format!("https://crates.io/api/v1/crates/{crate_name}"))? let info = download(&format!("https://crates.io/api/v1/crates/{crate_name}"))?
.body_mut() .into_json::<crates_io::Crate>()?;
.read_json::<crates_io::Crate>()?;
let latest_version = &info.versions[0].num; let latest_version = &info.versions[0].num;
crates_io_version_detail = Some( crates_io_version_detail = Some(
download(&format!("https://crates.io/api/v1/crates/{crate_name}/{latest_version}"))? download(&format!("https://crates.io/api/v1/crates/{crate_name}/{latest_version}"))?
.body_mut() .into_json::<crates_io::VersionMetadata>()?
.read_json::<crates_io::VersionMetadata>()?
.version, .version,
); );
@@ -296,13 +292,8 @@ fn main() -> Result<()> {
Path::new(&url).file_name().unwrap().to_str().unwrap() Path::new(&url).file_name().unwrap().to_str().unwrap()
)); ));
let response = download(&url)?; let response = download(&url)?;
let etag = response let etag =
.headers() response.header("etag").expect("binary should have an etag").replace('\"', "");
.get("etag")
.expect("binary should have an etag")
.to_str()
.unwrap()
.replace('\"', "");
if let Some(ManifestRef::Real(ref manifest)) = existing_manifest { if let Some(ManifestRef::Real(ref manifest)) = existing_manifest {
if let Some(entry) = manifest.download_info.get(&platform) { if let Some(entry) = manifest.download_info.get(&platform) {
@@ -319,9 +310,9 @@ fn main() -> Result<()> {
if download_cache.is_file() { if download_cache.is_file() {
eprintln!("already downloaded"); eprintln!("already downloaded");
fs::File::open(download_cache)?.read_to_end(&mut buf)?; fs::File::open(download_cache)?.read_to_end(&mut buf)?; // Not buffered because it is read at once.
} else { } else {
response.into_body().into_reader().read_to_end(&mut buf)?; response.into_reader().read_to_end(&mut buf)?;
eprintln!("download complete"); eprintln!("download complete");
fs::write(download_cache, &buf)?; fs::write(download_cache, &buf)?;
} }
@@ -344,7 +335,7 @@ fn main() -> Result<()> {
eprintln!("already downloaded"); eprintln!("already downloaded");
minisign_verify::Signature::from_file(sig_download_cache)? minisign_verify::Signature::from_file(sig_download_cache)?
} else { } else {
let buf = download(&url)?.body_mut().read_to_string()?; let buf = download(&url)?.into_string()?;
eprintln!("download complete"); eprintln!("download complete");
fs::write(sig_download_cache, &buf)?; fs::write(sig_download_cache, &buf)?;
minisign_verify::Signature::decode(&buf)? minisign_verify::Signature::decode(&buf)?
@@ -362,7 +353,7 @@ fn main() -> Result<()> {
if crate_download_cache.is_file() { if crate_download_cache.is_file() {
eprintln!("already downloaded"); eprintln!("already downloaded");
} else { } else {
download(&url)?.into_body().into_reader().read_to_end(&mut buf2)?; download(&url)?.into_reader().read_to_end(&mut buf2)?;
let hash = Sha256::digest(&buf2); let hash = Sha256::digest(&buf2);
if format!("{hash:x}") != v.checksum { if format!("{hash:x}") != v.checksum {
bail!("checksum mismatch for {url}"); bail!("checksum mismatch for {url}");
@@ -454,6 +445,14 @@ fn main() -> Result<()> {
// macOS universal binary or x86_64 binary that works on both x86_64 and AArch64 (rosetta). // macOS universal binary or x86_64 binary that works on both x86_64 and AArch64 (rosetta).
download_info.remove(&HostPlatform::aarch64_macos); download_info.remove(&HostPlatform::aarch64_macos);
} }
if download_info.contains_key(&HostPlatform::x86_64_windows)
&& download_info.contains_key(&HostPlatform::aarch64_windows)
&& download_info[&HostPlatform::x86_64_windows].url
== download_info[&HostPlatform::aarch64_windows].url
{
// x86_64 Windows binary that works on both x86_64 and AArch64.
download_info.remove(&HostPlatform::aarch64_windows);
}
has_build_metadata |= !semver_version.build.is_empty(); has_build_metadata |= !semver_version.build.is_empty();
if semver_version.pre.is_empty() { if semver_version.pre.is_empty() {
semver_versions.insert(semver_version.clone()); semver_versions.insert(semver_version.clone());
@@ -691,7 +690,7 @@ static GITHUB_TOKENS: LazyLock<GitHubTokens> = LazyLock::new(|| {
} }
}); });
fn download(url: &str) -> Result<ureq::http::Response<ureq::Body>> { fn download(url: &str) -> Result<ureq::Response> {
let mut token = GITHUB_TOKENS.get(url); let mut token = GITHUB_TOKENS.get(url);
let mut retry = 0; let mut retry = 0;
let mut retry_time = 0; let mut retry_time = 0;
@@ -703,7 +702,7 @@ fn download(url: &str) -> Result<ureq::http::Response<ureq::Body>> {
loop { loop {
let mut req = ureq::get(url); let mut req = ureq::get(url);
if let Some(token) = &token { if let Some(token) = &token {
req = req.header(header::AUTHORIZATION, &format!("Bearer {token}")); req = req.set("Authorization", &format!("Bearer {token}"));
} }
match req.call() { match req.call() {
Ok(res) => return Ok(res), Ok(res) => return Ok(res),
@@ -739,12 +738,12 @@ fn github_head(url: &str) -> Result<()> {
loop { loop {
let mut req = ureq::head(url); let mut req = ureq::head(url);
if let Some(token) = &token { if let Some(token) = &token {
req = req.header(header::AUTHORIZATION, &format!("Bearer {token}")); req = req.set("Authorization", &format!("Bearer {token}"));
} }
match req.call() { match req.call() {
Ok(_) => return Ok(()), Ok(_) => return Ok(()),
// rate limit // rate limit
Err(e @ ureq::Error::StatusCode(403)) => last_error = Some(e), Err(e @ ureq::Error::Status(403, _)) => last_error = Some(e),
Err(e) => return Err(e.into()), Err(e) => return Err(e.into()),
} }
retry_time += 1; retry_time += 1;

View File

@@ -1,6 +1,10 @@
// SPDX-License-Identifier: Apache-2.0 OR MIT // SPDX-License-Identifier: Apache-2.0 OR MIT
use std::{env, fmt, io::Write as _, path::PathBuf}; use std::{
env, fmt,
io::{BufWriter, Write as _},
path::PathBuf,
};
use anyhow::Result; use anyhow::Result;
use fs_err as fs; use fs_err as fs;
@@ -111,8 +115,7 @@ fn main() -> Result<()> {
let mut markdown_file = workspace_root.clone(); let mut markdown_file = workspace_root.clone();
markdown_file.push("TOOLS.md"); markdown_file.push("TOOLS.md");
let file = std::fs::File::create(markdown_file).expect("Unable to create file"); let mut file = BufWriter::new(fs::File::create(markdown_file).unwrap()); // Buffered because it is written many times.
let mut file = std::io::BufWriter::new(file);
file.write_all(HEADER.as_bytes()).expect("Unable to write header"); file.write_all(HEADER.as_bytes()).expect("Unable to write header");
@@ -121,6 +124,7 @@ fn main() -> Result<()> {
} }
file.write_all(FOOTER.as_bytes()).expect("Unable to write footer"); file.write_all(FOOTER.as_bytes()).expect("Unable to write footer");
file.flush()?;
Ok(()) Ok(())
} }