diff --git a/.cirrus.yml b/.cirrus.yml index a7b83aa04..85e7f53e7 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -25,9 +25,9 @@ linux_task: freebsd_task: matrix: - - name: FreeBSD 14 + - name: FreeBSD Stable freebsd_instance: - image: freebsd-14-3-release-amd64-ufs + image: freebsd-14-3-release-amd64-ufs # updatecli.d/cirrus-freebsd.yml tests_script: - pkg install -y cmake-core devel/pcre2 devel/ninja gettext git-lite lang/rust misc/py-pexpect # libclang.so is a required build dependency for rust-c++ ffi bridge diff --git a/.github/actions/rust-toolchain/action.yml b/.github/actions/rust-toolchain/action.yml index 7ff01d09f..efc2c60e2 100644 --- a/.github/actions/rust-toolchain/action.yml +++ b/.github/actions/rust-toolchain/action.yml @@ -25,8 +25,8 @@ runs: set -x toolchain=$( case "$toolchain_channel" in - (stable) echo 1.91 ;; - (msrv) echo 1.85 ;; + (stable) echo 1.91 ;; # updatecli.d/rust.yml + (msrv) echo 1.85 ;; # updatecli.d/rust.yml (*) printf >&2 "error: unsupported toolchain channel %s" "$toolchain_channel" exit 1 diff --git a/.gitignore b/.gitignore index f37c52418..e72054869 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ *.DS_Store *.a *.app -*.d *.dll *.dylib *.exe diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index a659a6d03..52ea453f4 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -409,6 +409,12 @@ You can use either single or double quotes to enclose the message to be translated. You can also optionally include spaces after the opening parentheses or before the closing parentheses. +Updating Dependencies +===================== + +To update dependencies, run ``build_tools/update-dependencies.sh``. +This currently requires `updatecli `__ and a few other tools. + Versioning ========== diff --git a/build_tools/check.sh b/build_tools/check.sh index 1db1c5671..ba11e4b39 100755 --- a/build_tools/check.sh +++ b/build_tools/check.sh @@ -18,52 +18,9 @@ if $check_dependency_versions; then command -v jq command -v rustup sort --version-sort = $today) - | "\(.cycle)" - ' | - sort --version-sort | - head -1 - ) - grep -qFx "FROM ubuntu:$ubuntu_oldest_alive_version" \ - docker/ubuntu-oldest-supported.Dockerfile + # To match existing behavior, only check Rust/dockerfiles for now. + # TODO: remove this from this script. + updatecli diff --config=updatecli.d/docker.yml --config=updatecli.d/rust.yml fi cargo_args=$FISH_CHECK_CARGO_ARGS diff --git a/build_tools/update-dependencies.sh b/build_tools/update-dependencies.sh new file mode 100755 index 000000000..836b7693c --- /dev/null +++ b/build_tools/update-dependencies.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -ex + +command -v curl +command -v gcloud +command -v jq +command -v rustup +command -v updatecli +sort --version-sort "$out_dir/$(basename "$path")" "$contents" +} +from_gh ridiculousfish/widecharwidth widechar_width.rs src/widecharwidth/ +from_gh ridiculousfish/littlecheck littlecheck/littlecheck.py tests/ + +# Update Cargo.lock +cargo update +# Update Cargo.toml and Cargo.lock +cargo +nightly -Zunstable-options update --breaking diff --git a/build_tools/version-available-in-debian.sh b/build_tools/version-available-in-debian.sh new file mode 100755 index 000000000..009f24326 --- /dev/null +++ b/build_tools/version-available-in-debian.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -euo pipefail + +channel=$1 # e.g. stable, testing +package=$2 # e.g. rustc, sphinx + +codename=$( + curl -fsS https://ftp.debian.org/debian/dists/"${channel}"/Release | + grep '^Codename:' | cut -d' ' -f2) +curl -fsS https://sources.debian.org/api/src/"${package}"/ | + jq -r --arg codename "${codename}" ' + .versions[] | select(.suites[] == $codename) | .version' | + sed 's/^\([0-9]\+\.[0-9]\+\).*/\1/' | + sort --version-sort | + tail -1 diff --git a/docker/alpine.Dockerfile b/docker/alpine.Dockerfile index 8380e50f5..888f4928d 100644 --- a/docker/alpine.Dockerfile +++ b/docker/alpine.Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.22 +FROM alpine:3.22 # updatecli.d/docker.yml LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell ENV LANG=C.UTF-8 diff --git a/docker/ubuntu-latest-lts.Dockerfile b/docker/ubuntu-latest-lts.Dockerfile index 6592a632f..5de4e0c67 100644 --- a/docker/ubuntu-latest-lts.Dockerfile +++ b/docker/ubuntu-latest-lts.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:latest +FROM ubuntu:24.04 # updatecli.d/docker.yml LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell ENV LANG=C.UTF-8 diff --git a/docker/ubuntu-oldest-supported.Dockerfile b/docker/ubuntu-oldest-supported.Dockerfile index f4e7517ba..5c40d80f7 100644 --- a/docker/ubuntu-oldest-supported.Dockerfile +++ b/docker/ubuntu-oldest-supported.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 +FROM ubuntu:22.04 # updatecli.d/docker.yml LABEL org.opencontainers.image.source=https://github.com/fish-shell/fish-shell ENV LANG=C.UTF-8 @@ -33,7 +33,7 @@ RUN groupadd -g 1000 fishuser \ USER fishuser WORKDIR /home/fishuser -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh \ +RUN curl --proto '=https' --tlsv1.2 -fsS https://sh.rustup.rs > /tmp/rustup.sh \ && sh /tmp/rustup.sh -y --no-modify-path ENV PATH=/home/fishuser/.cargo/bin:$PATH diff --git a/src/widecharwidth/widechar_width.rs b/src/widecharwidth/widechar_width.rs index 17ab41cd9..5a4cd7757 100644 --- a/src/widecharwidth/widechar_width.rs +++ b/src/widecharwidth/widechar_width.rs @@ -1,5 +1,5 @@ /** - * widechar_width.rs for Unicode 16.0.0 + * widechar_width.rs for Unicode 17.0.0 * See https://github.com/ridiculousfish/widecharwidth/ * * SHA1 file hashes: @@ -11,11 +11,11 @@ * The other hashes are simple `sha1sum` style hashes. * ) * - * generate.py: 2747bb9402d8eeeca8e566ff947f14308511ecb1 - * template.js: 7921c1fe6bcb4ce17108929b599bfda097caedb7 - * UnicodeData.txt: 91df83276154240bcedef82a09bde77aa182cf8d - * EastAsianWidth.txt: 0885c0fc1c21eb58954a3bfb785d78559b361d92 - * emoji-data.txt: 1df2f8329dd9f5c238674807de736f316c6b9d87 + * generate.py: b35da43f176cc0d5880c67356ebb064048c5bac4 + * template.js: c455e7c973da323c43c98d6975fb8b024bf118f1 + * UnicodeData.txt: 50dffef1b7d1f97b72e4c2adceb9b2245f0f34ba + * EastAsianWidth.txt: 2cadc5034b6206ad84b75898a1d4186bb38fc12b + * emoji-data.txt: 3d123e12f70f63e609c4281ce83dfdd9ac7443d2 */ type R = (u32, u32); @@ -215,7 +215,8 @@ pub enum WcWidth { (0x01A55, 0x01A5E), (0x01A60, 0x01A7C), (0x01A7F, 0x01A7F), - (0x01AB0, 0x01ACE), + (0x01AB0, 0x01ADD), + (0x01AE0, 0x01AEB), (0x01B00, 0x01B04), (0x01B34, 0x01B44), (0x01B6B, 0x01B73), @@ -281,7 +282,7 @@ pub enum WcWidth { (0x10D24, 0x10D27), (0x10D69, 0x10D6D), (0x10EAB, 0x10EAC), - (0x10EFC, 0x10EFF), + (0x10EFA, 0x10EFF), (0x10F46, 0x10F50), (0x10F82, 0x10F85), (0x11000, 0x11002), @@ -343,6 +344,7 @@ pub enum WcWidth { (0x11A47, 0x11A47), (0x11A51, 0x11A5B), (0x11A8A, 0x11A99), + (0x11B60, 0x11B67), (0x11C2F, 0x11C36), (0x11C38, 0x11C3F), (0x11C92, 0x11CA7), @@ -397,6 +399,10 @@ pub enum WcWidth { (0x1E2EC, 0x1E2EF), (0x1E4EC, 0x1E4EF), (0x1E5EE, 0x1E5EF), + (0x1E6E3, 0x1E6E3), + (0x1E6E6, 0x1E6E6), + (0x1E6EE, 0x1E6EF), + (0x1E6F5, 0x1E6F5), (0x1E8D0, 0x1E8D6), (0x1E944, 0x1E94A), (0xE0100, 0xE01EF), @@ -434,10 +440,10 @@ pub enum WcWidth { (0x0FF01, 0x0FF60), (0x0FFE0, 0x0FFE6), (0x16FE0, 0x16FE4), - (0x16FF0, 0x16FF1), - (0x17000, 0x187F7), - (0x18800, 0x18CD5), - (0x18CFF, 0x18D08), + (0x16FF0, 0x16FF6), + (0x17000, 0x18CD5), + (0x18CFF, 0x18D1E), + (0x18D80, 0x18DF2), (0x1AFF0, 0x1AFF3), (0x1AFF5, 0x1AFFB), (0x1AFFD, 0x1AFFE), @@ -461,7 +467,7 @@ pub enum WcWidth { (0x1F57A, 0x1F57A), (0x1F5A4, 0x1F5A4), (0x1F6D1, 0x1F6D2), - (0x1F6D5, 0x1F6D7), + (0x1F6D5, 0x1F6D8), (0x1F6DC, 0x1F6DF), (0x1F6F4, 0x1F6FC), (0x1F7E0, 0x1F7EB), @@ -473,11 +479,12 @@ pub enum WcWidth { (0x1F985, 0x1F9BF), (0x1F9C1, 0x1F9FF), (0x1FA70, 0x1FA7C), - (0x1FA80, 0x1FA89), - (0x1FA8F, 0x1FAC6), - (0x1FACE, 0x1FADC), - (0x1FADF, 0x1FAE9), - (0x1FAF0, 0x1FAF8), + (0x1FA80, 0x1FA8A), + (0x1FA8E, 0x1FAC6), + (0x1FAC8, 0x1FAC8), + (0x1FACD, 0x1FADC), + (0x1FADF, 0x1FAEA), + (0x1FAEF, 0x1FAF8), (0x20000, 0x2FFFD), (0x30000, 0x3FFFD), ]; @@ -688,7 +695,6 @@ pub enum WcWidth { (0x0085C, 0x0085D), (0x0085F, 0x0085F), (0x0086B, 0x0086F), - (0x0088F, 0x0088F), (0x00892, 0x00896), (0x00984, 0x00984), (0x0098D, 0x0098E), @@ -772,7 +778,7 @@ pub enum WcWidth { (0x00C49, 0x00C49), (0x00C4E, 0x00C54), (0x00C57, 0x00C57), - (0x00C5B, 0x00C5C), + (0x00C5B, 0x00C5B), (0x00C5E, 0x00C5F), (0x00C64, 0x00C65), (0x00C70, 0x00C76), @@ -784,7 +790,7 @@ pub enum WcWidth { (0x00CC5, 0x00CC5), (0x00CC9, 0x00CC9), (0x00CCE, 0x00CD4), - (0x00CD7, 0x00CDC), + (0x00CD7, 0x00CDB), (0x00CDF, 0x00CDF), (0x00CE4, 0x00CE5), (0x00CF0, 0x00CF0), @@ -880,7 +886,8 @@ pub enum WcWidth { (0x01A8A, 0x01A8F), (0x01A9A, 0x01A9F), (0x01AAE, 0x01AAF), - (0x01ACF, 0x01AFF), + (0x01ADE, 0x01ADF), + (0x01AEC, 0x01AFF), (0x01B4D, 0x01B4D), (0x01BF4, 0x01BFB), (0x01C38, 0x01C3A), @@ -909,13 +916,12 @@ pub enum WcWidth { (0x02072, 0x02073), (0x0208F, 0x0208F), (0x0209D, 0x0209F), - (0x020C1, 0x020CF), + (0x020C2, 0x020CF), (0x020F1, 0x020FF), (0x0218C, 0x0218F), (0x0242A, 0x0243F), (0x0244B, 0x0245F), (0x02B74, 0x02B75), - (0x02B96, 0x02B96), (0x02CF4, 0x02CF8), (0x02D26, 0x02D26), (0x02D28, 0x02D2C), @@ -948,10 +954,7 @@ pub enum WcWidth { (0x0A4C7, 0x0A4CF), (0x0A62C, 0x0A63F), (0x0A6F8, 0x0A6FF), - (0x0A7CE, 0x0A7CF), - (0x0A7D2, 0x0A7D2), - (0x0A7D4, 0x0A7D4), - (0x0A7DD, 0x0A7F1), + (0x0A7DD, 0x0A7F0), (0x0A82D, 0x0A82F), (0x0A83A, 0x0A83F), (0x0A878, 0x0A87F), @@ -988,9 +991,6 @@ pub enum WcWidth { (0x0FB3F, 0x0FB3F), (0x0FB42, 0x0FB42), (0x0FB45, 0x0FB45), - (0x0FBC3, 0x0FBD2), - (0x0FD90, 0x0FD91), - (0x0FDC8, 0x0FDCE), (0x0FE1A, 0x0FE1F), (0x0FE53, 0x0FE53), (0x0FE67, 0x0FE67), @@ -1060,7 +1060,7 @@ pub enum WcWidth { (0x108F6, 0x108FA), (0x1091C, 0x1091E), (0x1093A, 0x1093E), - (0x10940, 0x1097F), + (0x1095A, 0x1097F), (0x109B8, 0x109BB), (0x109D0, 0x109D1), (0x10A04, 0x10A04), @@ -1092,7 +1092,8 @@ pub enum WcWidth { (0x10EAA, 0x10EAA), (0x10EAE, 0x10EAF), (0x10EB2, 0x10EC1), - (0x10EC5, 0x10EFB), + (0x10EC8, 0x10ECF), + (0x10ED9, 0x10EF9), (0x10F28, 0x10F2F), (0x10F5A, 0x10F6F), (0x10F8A, 0x10FAF), @@ -1175,7 +1176,8 @@ pub enum WcWidth { (0x11A48, 0x11A4F), (0x11AA3, 0x11AAF), (0x11AF9, 0x11AFF), - (0x11B0A, 0x11BBF), + (0x11B0A, 0x11B5F), + (0x11B68, 0x11BBF), (0x11BE2, 0x11BEF), (0x11BFA, 0x11BFF), (0x11C09, 0x11C09), @@ -1197,7 +1199,9 @@ pub enum WcWidth { (0x11D8F, 0x11D8F), (0x11D92, 0x11D92), (0x11D99, 0x11D9F), - (0x11DAA, 0x11EDF), + (0x11DAA, 0x11DAF), + (0x11DDC, 0x11DDF), + (0x11DEA, 0x11EDF), (0x11EF9, 0x11EFF), (0x11F11, 0x11F11), (0x11F3B, 0x11F3D), @@ -1226,17 +1230,19 @@ pub enum WcWidth { (0x16B78, 0x16B7C), (0x16B90, 0x16D3F), (0x16D7A, 0x16E3F), - (0x16E9B, 0x16EFF), + (0x16E9B, 0x16E9F), + (0x16EB9, 0x16EBA), + (0x16ED4, 0x16EFF), (0x16F4B, 0x16F4E), (0x16F88, 0x16F8E), (0x16FA0, 0x16FDF), (0x16FE5, 0x16FEF), - (0x16FF2, 0x16FFF), - (0x17001, 0x187F6), - (0x187F8, 0x187FF), + (0x16FF7, 0x16FFF), + (0x17001, 0x187FE), (0x18CD6, 0x18CFE), - (0x18D01, 0x18D07), - (0x18D09, 0x1AFEF), + (0x18D01, 0x18D1D), + (0x18D1F, 0x18D7F), + (0x18DF3, 0x1AFEF), (0x1AFF4, 0x1AFF4), (0x1AFFC, 0x1AFFC), (0x1AFFF, 0x1AFFF), @@ -1251,8 +1257,10 @@ pub enum WcWidth { (0x1BC89, 0x1BC8F), (0x1BC9A, 0x1BC9B), (0x1BCA4, 0x1CBFF), - (0x1CCFA, 0x1CCFF), - (0x1CEB4, 0x1CEFF), + (0x1CCFD, 0x1CCFF), + (0x1CEB4, 0x1CEB9), + (0x1CED1, 0x1CEDF), + (0x1CEF1, 0x1CEFF), (0x1CF2E, 0x1CF2F), (0x1CF47, 0x1CF4F), (0x1CFC4, 0x1CFFF), @@ -1305,7 +1313,10 @@ pub enum WcWidth { (0x1E300, 0x1E4CF), (0x1E4FA, 0x1E5CF), (0x1E5FB, 0x1E5FE), - (0x1E600, 0x1E7DF), + (0x1E600, 0x1E6BF), + (0x1E6DF, 0x1E6DF), + (0x1E6F6, 0x1E6FD), + (0x1E700, 0x1E7DF), (0x1E7E7, 0x1E7E7), (0x1E7EC, 0x1E7EC), (0x1E7EF, 0x1E7EF), @@ -1363,10 +1374,9 @@ pub enum WcWidth { (0x1F249, 0x1F24F), (0x1F252, 0x1F25F), (0x1F266, 0x1F2FF), - (0x1F6D8, 0x1F6DB), + (0x1F6D9, 0x1F6DB), (0x1F6ED, 0x1F6EF), (0x1F6FD, 0x1F6FF), - (0x1F777, 0x1F77A), (0x1F7DA, 0x1F7DF), (0x1F7EC, 0x1F7EF), (0x1F7F1, 0x1F7FF), @@ -1376,25 +1386,26 @@ pub enum WcWidth { (0x1F888, 0x1F88F), (0x1F8AE, 0x1F8AF), (0x1F8BC, 0x1F8BF), - (0x1F8C2, 0x1F8FF), - (0x1FA54, 0x1FA5F), + (0x1F8C2, 0x1F8CF), + (0x1F8D9, 0x1F8FF), + (0x1FA58, 0x1FA5F), (0x1FA6E, 0x1FA6F), (0x1FA7D, 0x1FA7F), - (0x1FA8A, 0x1FA8E), - (0x1FAC7, 0x1FACD), + (0x1FA8B, 0x1FA8D), + (0x1FAC7, 0x1FAC7), + (0x1FAC9, 0x1FACC), (0x1FADD, 0x1FADE), - (0x1FAEA, 0x1FAEF), + (0x1FAEB, 0x1FAEE), (0x1FAF9, 0x1FAFF), (0x1FB93, 0x1FB93), - (0x1FBFA, 0x1FFFD), + (0x1FBFB, 0x1FFFD), (0x20001, 0x2A6DE), (0x2A6E0, 0x2A6FF), - (0x2A701, 0x2B738), - (0x2B73A, 0x2B73F), + (0x2A701, 0x2B73E), (0x2B741, 0x2B81C), (0x2B81E, 0x2B81F), - (0x2B821, 0x2CEA0), - (0x2CEA2, 0x2CEAF), + (0x2B821, 0x2CEAC), + (0x2CEAE, 0x2CEAF), (0x2CEB1, 0x2EBDF), (0x2EBE1, 0x2EBEF), (0x2EBF1, 0x2EE5C), @@ -1403,7 +1414,8 @@ pub enum WcWidth { (0x30001, 0x31349), (0x3134B, 0x3134F), (0x31351, 0x323AE), - (0x323B0, 0x3FFFD), + (0x323B1, 0x33478), + (0x3347A, 0x3FFFD), (0x40000, 0x4FFFD), (0x50000, 0x5FFFD), (0x60000, 0x6FFFD), @@ -1515,7 +1527,7 @@ pub enum WcWidth { fn in_table(arr: &[R], c: u32) -> bool { arr.binary_search_by(|(start, end)| { if c >= *start && c <= *end { - std::cmp::Ordering::Equal + core::cmp::Ordering::Equal } else { start.cmp(&c) } diff --git a/updatecli.d/cirrus-freebsd.yml b/updatecli.d/cirrus-freebsd.yml new file mode 100644 index 000000000..668689c5e --- /dev/null +++ b/updatecli.d/cirrus-freebsd.yml @@ -0,0 +1,21 @@ +name: "Update FreeBSD image used in Cirrus CI" + +sources: + freebsd_stable_version: + kind: shell + spec: + shell: bash + command: | + set -eo pipefail + gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images | + grep -o '^freebsd-.*-release-amd64-ufs' | + tail -1 +targets: + cirrus_freebsd_stable_version: + name: "Update FreeBSD stable version" + sourceid: freebsd_stable_version + kind: file + spec: + file: .cirrus.yml + matchpattern: "image: freebsd-.*-release-amd64-ufs.*" + replacepattern: 'image: {{ source "freebsd_stable_version" }} # updatecli.d/cirrus-freebsd.yml' diff --git a/updatecli.d/docker.yml b/updatecli.d/docker.yml new file mode 100644 index 000000000..02682649d --- /dev/null +++ b/updatecli.d/docker.yml @@ -0,0 +1,65 @@ +name: "Update Linux docker images" + +sources: + alpine_latest_version: + kind: dockerimage + spec: + image: alpine + tagfilter: "^[0-9]+\\.[0-9]+$" + versionfilter: + kind: semver + ubuntu_latest_lts_version: + kind: shell + spec: + shell: bash + command: | + set -eo pipefail + curl -fsS https://endoflife.date/api/ubuntu.json | + jq -r --arg today "$today" ' + .[] + | select(.lts) + | "\(.cycle)" + ' | + sort --version-sort | + tail -1 + ubuntu_oldest_non_eol_version: + kind: shell + spec: + shell: bash + command: | + set -eo pipefail + today=$(date --iso-8601) + curl -fsS https://endoflife.date/api/ubuntu.json | + jq -r --arg today "$today" ' + .[] + | select(.eol >= $today) + | "\(.cycle)" + ' | + sort --version-sort | + head -1 + +targets: + update_alpine_dockerfile: + name: "Update Alpine Linux version" + sourceid: alpine_latest_version + kind: file + spec: + file: docker/alpine.Dockerfile + matchpattern: "FROM alpine:.*" + replacepattern: 'FROM alpine:{{ source "alpine_latest_version" }} # updatecli.d/docker.yml' + ubuntu_latest_version_dockerfile: + name: "Update oldest non-EOL Ubuntu Linux version" + sourceid: ubuntu_latest_lts_version + kind: file + spec: + file: docker/ubuntu-latest-lts.Dockerfile + matchpattern: "FROM ubuntu:.*" + replacepattern: 'FROM ubuntu:{{ source "ubuntu_latest_lts_version" }} # updatecli.d/docker.yml' + ubuntu_oldest_supported_dockerfile: + name: "Update oldest non-EOL Ubuntu Linux version" + sourceid: ubuntu_oldest_non_eol_version + kind: file + spec: + file: docker/ubuntu-oldest-supported.Dockerfile + matchpattern: "FROM ubuntu:.*" + replacepattern: 'FROM ubuntu:{{ source "ubuntu_oldest_non_eol_version" }} # updatecli.d/docker.yml' diff --git a/updatecli.d/rust.yml b/updatecli.d/rust.yml new file mode 100644 index 000000000..fec0782cf --- /dev/null +++ b/updatecli.d/rust.yml @@ -0,0 +1,39 @@ +name: "Update Rust versions" + +sources: + rust_stable_version: + kind: shell + spec: + shell: bash + command: | + set -eo pipefail + # Check that we have latest stable. + if rustup check | grep ^stable- | grep 'Update available'; then + echo >&2 "Rust toolchain 'stable' is stale, please update it" + exit 1 + fi + stable_rust_version=$("$(rustup +stable which rustc)" --version | cut -d' ' -f2) + echo "${stable_rust_version%.*}" + debian_stable_rust_version: + kind: shell + spec: + command: | + build_tools/version-available-in-debian.sh stable rustc + +targets: + update_rust_stable: + name: "Update Rust stable" + sourceid: rust_stable_version + kind: file + spec: + file: .github/actions/rust-toolchain/action.yml + matchpattern: '\(stable\) echo \d+\.\d+ ;;.*' + replacepattern: '(stable) echo {{ source "rust_stable_version" }} ;; # updatecli.d/rust.yml' + update_msrv: + name: "Update MSRV" + sourceid: rust_stable_version + kind: file + spec: + file: .github/actions/rust-toolchain/action.yml + matchpattern: '\(msrv\) echo \d+\.\d+ ;;.*' + replacepattern: '(msrv) echo {{ source "debian_stable_rust_version" }} ;; # updatecli.d/rust.yml'