diff options
Diffstat (limited to 'tvix/utils.nix')
-rw-r--r-- | tvix/utils.nix | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/tvix/utils.nix b/tvix/utils.nix index dc40df5007ea..c398930e7587 100644 --- a/tvix/utils.nix +++ b/tvix/utils.nix @@ -1,4 +1,4 @@ -{ lib, depot, ... }: +{ pkgs, lib, depot, ... }: { mkFeaturePowerset = { crateName, features, override ? { } }: @@ -125,4 +125,27 @@ src = depot.tvix.utils.filterRustCrateSrc { root = prev.src.origSrc; }; }; }; + + # This creates an extraStep in CI to check whether the Cargo.nix file is up-to-date. + mkCrate2nixCheck = + path: # The path to the Cargo.nix to be checked. + let + relCrateRoot = lib.removePrefix "./" (builtins.dirOf (lib.path.removePrefix depot.path.origSrc path)); + in + { + label = "crate2nix check for ${relCrateRoot}"; + needsOutput = true; + alwaysRun = true; + command = pkgs.writeShellScript "crate2nix-check-for-${lib.replaceStrings [ "/" ] ["-"] relCrateRoot}" '' + (cd $(git rev-parse --show-toplevel)/${relCrateRoot} && + ${depot.tools.crate2nix-generate}/bin/crate2nix-generate && + if [[ -n "$(git status --porcelain -unormal Cargo.nix)" ]]; then + echo "----------------------------------------------------------------------------------------------------" + echo "Cargo.nix needs to be updated, run 'mg run //tools/crate2nix-generate' in ${relCrateRoot}" + echo "----------------------------------------------------------------------------------------------------" + exit 1 + fi + ) + ''; + }; } |