feat(tvix/utils): Add mkCrate2nixCheck

This adds a function which can be used across the monorepo to create a
an extra CI step that checks whether the Cargo.nix file is up-to-date.

Change-Id: Idb8298b29ddc2ca5dff1facb1b9ed86a236ee66d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12227
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Ilan Joselevich 2024-08-17 19:50:03 +03:00
parent afef485221
commit 6da55dc1a6
2 changed files with 36 additions and 56 deletions

View file

@ -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
)
'';
};
}