From b9702ee945a702fc8cd692a272858b4c8755b936 Mon Sep 17 00:00:00 2001 From: Ross Smyth <18294397+RossSmyth@users.noreply.github.com> Date: Wed, 14 May 2025 13:11:19 -0400 Subject: [PATCH] Add ability to add a custom version with nix --- cli/src/main.rs | 14 +++++++++++++- default.nix | 17 ++++++++++++----- flake.nix | 16 +++++++++++----- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index c10efcf..809a171 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -11,6 +11,18 @@ mod import; mod init; mod load; +fn get_version() -> String { + const GIT_HASH: Option<&str> = option_env!("GIT_HASH"); + const CARGO_VERSION: &str = env!("CARGO_PKG_VERSION"); + + let owned = CARGO_VERSION.to_string(); + if let Some(hash) = GIT_HASH { + owned + "-" + hash + } else { + owned + } +} + fn wrapped_main() -> Result<()> { let flags = flags::Skidder::from_env_or_exit(); match flags.subcommand { @@ -21,7 +33,7 @@ fn wrapped_main() -> Result<()> { flags::SkidderCmd::RegenerateParser(generate_cmd) => generate_cmd.run(), flags::SkidderCmd::Version(flags::Version { version }) => { if version { - println!("skidder-cli {}", env!("CARGO_PKG_VERSION")); + println!("skidder-cli {}", get_version()); } else { println!("{}", flags::Skidder::HELP); } diff --git a/default.nix b/default.nix index 0c764c6..3db1cd2 100644 --- a/default.nix +++ b/default.nix @@ -1,18 +1,23 @@ { lib, rustPlatform, -}: let - fs = lib.fileset; - files = fs.difference (fs.gitTracked ./.) (fs.unions [ + gitRev ? null, +}: +let + fs = lib.fileset; + + files = fs.difference (fs.gitTracked ./.) ( + fs.unions [ ./.github ./.envrc ./flake.lock (fs.fileFilter (file: lib.strings.hasInfix ".git" file.name) ./.) (fs.fileFilter (file: file.hasExt "md") ./.) (fs.fileFilter (file: file.hasExt "nix") ./.) - ]); - in + ] + ); +in rustPlatform.buildRustPackage { strictDeps = true; pname = with builtins; (fromTOML (readFile ./cli/Cargo.toml)).package.name; @@ -31,5 +36,7 @@ rustPlatform.buildRustPackage { cargoBuildFlags = [ "-p skidder-cli" ]; doCheck = false; + env.GIT_HASH = gitRev; + meta.mainProgram = "skidder-cli"; } diff --git a/flake.nix b/flake.nix index cbee487..74c6336 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,11 @@ }; outputs = - { self, nixpkgs, rust-overlay }: + { + self, + nixpkgs, + rust-overlay, + }: let inherit (nixpkgs) lib; forEachSystem = lib.genAttrs lib.systems.flakeExposed; @@ -24,11 +28,13 @@ overlays = [ (import rust-overlay) ]; }; toolchain = pkgs.rust-bin.stable.latest.default; - in { - skidder-cli = pkgs.callPackage ./. { }; + in + { + skidder-cli = pkgs.callPackage ./. { gitRev = self.rev or self.dirtyRev; }; default = self.packages.${system}.skidder-cli; - }); - + } + ); + devShell = forEachSystem ( system: let