Add script to ensure Rust nightly version stays in sync

finchie
Feb 26, 2025, 8:40 AM
FU7S4JHV267EBWLMNE3B7EESCDEDLFJ67UMK75C76CSDONRY3OSAC

Dependencies

  • [2] PDZ67CX7 Move Nushell scripts inside of `src/`
  • [3] FPOXMH3V Add more agressive garbage collection settings
  • [4] WMUFQJFX Show custom prompt inside version control shell
  • [5] HINOSPQO Add simple nushell update script
  • [*] MAVDUPWD Improve REPL prompt

Change contents

  • edit in src/update.nu at line 7
    [7.28]
    [4.186]
    use rust_version.nu enforce-rust-version;
  • replacement in src/update.nu at line 14
    [4.335][4.335:457]()
    assert ($candidate | path exists) $"(ansi red) Failed to find required file: (ansi red_bold)($candidate)(ansi reset)"
    [4.335]
    [4.457]
    assert ($candidate | path exists) $"(ansi red) Failed to find required file: (ansi red_bold)($candidate)(ansi reset)";
  • replacement in src/update.nu at line 29
    [4.738][4.738:813]()
    $required_paths | each {|required_path| assert_path_exists $required_path}
    [4.738]
    [4.813]
    $required_paths | each {|required_path| assert_path_exists $required_path};
  • replacement in src/update.nu at line 48
    [3.32][3.32:80]()
    sudo nix-collect-garbage --delete-older-than 2d
    [3.32]
    [3.80]
    sudo nix-collect-garbage --delete-older-than 2d;
    # Make sure that Rust is up-to-date
    enforce-rust-version;
  • file addition: rust_version.nu (----------)
    [2.15]
    # Prevent rustc from getting too out-of-date;
    # rust-overlay's selectLatestNightlyWith silently keeps older versions if components/targets are no longer valid
    use std assert;
    export def enforce-rust-version [] {
    let version_info = rustc --version | parse "rustc {version} ({commit} {date})";
    # Make sure only 1 row of data
    assert equal ($version_info | length) 1;
    assert equal ($version_info.date | length) 1;
    # Extract the date
    let version_date = $version_info.date | first | into datetime;
    # Return an error if the version is more than one week old
    assert greater $version_date ((date now) - 7day) $"This version of Rust was built (ansi red_bold)($version_date | date humanize)(ansi reset)!
    Check that all specified targets and extensions are valid.
    (ansi yellow_bold)HINT(ansi reset): replace `selectLatestNightlyWith` with `nightly.latest.default.override` to debug.";
    }