From 0451973538c92d260cf887392ebdf6b16b8ec772 Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Wed, 24 Jan 2024 23:37:50 +0100 Subject: Add flake checks --- flake.lock | 51 ++++++++++++++++++++++++++++++++++----------------- flake.nix | 55 ++++++++++++++++++++++++++++++++++++++++++++++++------- shell/src/main.rs | 4 ++-- 3 files changed, 84 insertions(+), 26 deletions(-) diff --git a/flake.lock b/flake.lock index 369d5eb..8f73a8f 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "advisory-db": { + "flake": false, + "locked": { + "lastModified": 1706115649, + "narHash": "sha256-Qrqb54qGaRsFdLDj8EJtI5leFGFfqWHLRgC+t6KWlpQ=", + "owner": "rustsec", + "repo": "advisory-db", + "rev": "1d2202ea2b32fabd3307641010301bfe187ef11a", + "type": "github" + }, + "original": { + "owner": "rustsec", + "repo": "advisory-db", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -7,16 +23,16 @@ ] }, "locked": { - "lastModified": 1701384536, - "narHash": "sha256-PdYjpXmkn4FYJU7uvmCa54b0PPXBgDZHJaJpSEWR1Ek=", - "rev": "07c531adf572dafd494db0672cdac00e48216171", - "revCount": 469, + "lastModified": 1705625727, + "narHash": "sha256-naMq6+TNLpEiBBjc0XaCbMLYJxJXWTZz4JGSpYGgIOM=", + "rev": "8f515142e805dc377cf8edb0ff75d14a11307f89", + "revCount": 485, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/ipetkov/crane/0.15.1/018c226e-9985-758b-9809-17419c4ebd2d/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/ipetkov/crane/0.16.0/018d1f38-c6e9-7615-a492-9b554687ba26/source.tar.gz" }, "original": { "type": "tarball", - "url": "https://flakehub.com/f/ipetkov/crane/0.15.1.tar.gz" + "url": "https://flakehub.com/f/ipetkov/crane/0.16.0.tar.gz" } }, "flake-utils": { @@ -24,26 +40,26 @@ "systems": "systems" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "revCount": 88, + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "revCount": 90, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/numtide/flake-utils/0.1.88%2Brev-4022d587cbbfd70fe950c1e2083a02621806a725/018c340d-3287-7c66-818b-f2f646a808e3/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/numtide/flake-utils/0.1.90%2Brev-1ef2e671c3b0c19053962c07dbda38332dcebf26/018d0c5a-ac7d-77f2-bef1-1527903ad3cc/source.tar.gz" }, "original": { "type": "tarball", - "url": "https://flakehub.com/f/numtide/flake-utils/0.1.88.tar.gz" + "url": "https://flakehub.com/f/numtide/flake-utils/0.1.90.tar.gz" } }, "nixpkgs": { "locked": { - "lastModified": 1703467016, - "narHash": "sha256-/5A/dNPhbQx/Oa2d+Get174eNI3LERQ7u6WTWOlR1eQ=", - "rev": "d02d818f22c777aa4e854efc3242ec451e5d462a", - "revCount": 553579, + "lastModified": 1705916986, + "narHash": "sha256-iBpfltu6QvN4xMpen6jGGEb6jOqmmVQKUrXdOJ32u8w=", + "rev": "d7f206b723e42edb09d9d753020a84b3061a79d8", + "revCount": 554771, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2311.553579%2Brev-d02d818f22c777aa4e854efc3242ec451e5d462a/018ca90b-a320-767a-a3c2-3cd4ab8c3551/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2311.554771%2Brev-d7f206b723e42edb09d9d753020a84b3061a79d8/018d35d3-1b83-7e69-a58c-3fca76cb78bb/source.tar.gz" }, "original": { "type": "tarball", @@ -52,6 +68,7 @@ }, "root": { "inputs": { + "advisory-db": "advisory-db", "crane": "crane", "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" diff --git a/flake.nix b/flake.nix index 458ecac..0c3fea5 100644 --- a/flake.nix +++ b/flake.nix @@ -1,12 +1,16 @@ { inputs = { nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.2311.*.tar.gz"; - flake-utils.url = "https://flakehub.com/f/numtide/flake-utils/0.1.88.tar.gz"; - crane.url = "https://flakehub.com/f/ipetkov/crane/0.15.1.tar.gz"; + flake-utils.url = "https://flakehub.com/f/numtide/flake-utils/0.1.90.tar.gz"; + crane.url = "https://flakehub.com/f/ipetkov/crane/0.16.0.tar.gz"; crane.inputs.nixpkgs.follows = "nixpkgs"; + advisory-db = { + url = "github:rustsec/advisory-db"; + flake = false; + }; }; - outputs = { self, crane, nixpkgs, flake-utils, ... }@inputs: + outputs = { self, nixpkgs, flake-utils, crane, advisory-db, ... }@inputs: flake-utils.lib.eachDefaultSystem (system: let @@ -16,19 +20,56 @@ }; craneLib = crane.lib.${system}; + src = craneLib.cleanCargoSource (craneLib.path ./.); - gitolfs3 = craneLib.buildPackage { + commonArgs = { + inherit src; + strictDeps = true; pname = "gitolfs3"; version = "0.1.0"; - src = craneLib.cleanCargoSource (craneLib.path ./.); }; + + cargoArtifacts = craneLib.buildDepsOnly commonArgs; + + gitolfs3 = craneLib.buildPackage (commonArgs // { + # We already have the gitolfs3-nextest check + doCheck = false; + }); in { + checks = { + inherit gitolfs3; + + gitolfs3-clippy = craneLib.cargoClippy (commonArgs // { + inherit cargoArtifacts; + cargoClippyExtraArgs = "--all-targets -- --deny warnings"; + }); + + gitolfs3-doc = craneLib.cargoDoc (commonArgs // { + inherit cargoArtifacts; + }); + + # Check formatting + gitolfs3-fmt = craneLib.cargoFmt commonArgs; + + # Audit dependencies + gitolfs3-audit = craneLib.cargoAudit (commonArgs // { + inherit advisory-db; + }); + + # Run tests with cargo-nextest + gitolfs3-nextest = craneLib.cargoNextest (commonArgs // { + inherit cargoArtifacts; + partitions = 1; + partitionType = "count"; + }); + }; + packages.gitolfs3 = gitolfs3; packages.default = self.packages.${system}.gitolfs3; - devShells.default = pkgs.mkShell { - inputsFrom = [ gitolfs3 ]; + devShells.default = craneLib.devShell { + checks = self.checks.${system}; }; formatter = pkgs.nixpkgs-fmt; diff --git a/shell/src/main.rs b/shell/src/main.rs index ef0ef48..4901e7f 100644 --- a/shell/src/main.rs +++ b/shell/src/main.rs @@ -56,7 +56,7 @@ fn parse_cmd(mut cmd: &str) -> Option> { let mut args = Vec::::new(); cmd = cmd.trim_matches(is_posix_space); - while cmd != "" { + while !cmd.is_empty() { if cmd.starts_with('\'') { let (arg, remaining) = parse_sq(cmd)?; args.push(arg); @@ -91,7 +91,7 @@ fn main() -> ExitCode { eprintln!("Missing argument for argument '-c'"); return bad_usage; }; - if args.next() != None { + if args.next().is_some() { eprintln!("Too many arguments passed"); return bad_usage; } -- cgit v1.2.3