Add ability to add a custom version with nix

This commit is contained in:
Ross Smyth
2025-05-14 13:11:19 -04:00
committed by Michael Davis
parent ed7e6634d8
commit b9702ee945
3 changed files with 36 additions and 11 deletions

View File

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

View File

@@ -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";
}

View File

@@ -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