evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / sc / scorecard / package.nix
blobde2f9b9b07dc7260421e9971a1d2c85145bb9e3e
1 { lib
2 , buildGoModule
3 , fetchFromGitHub
4 , installShellFiles
5 , testers
6 , scorecard
7 }:
9 buildGoModule rec {
10   pname = "scorecard";
11   version = "5.0.0";
13   src = fetchFromGitHub {
14     owner = "ossf";
15     repo = pname;
16     rev = "v${version}";
17     hash = "sha256-9DuADuEIoZNwkvdKyqus2zNfIK31Jc3+bPW3/z8fvlc=";
18     # populate values otherwise taken care of by goreleaser,
19     # unfortunately these require us to use git. By doing
20     # this in postFetch we can delete .git afterwards and
21     # maintain better reproducibility of the src.
22     leaveDotGit = true;
23     postFetch = ''
24       cd "$out"
25       git rev-parse HEAD > $out/COMMIT
26       # 0000-00-00T00:00:00Z
27       date -u -d "@$(git log -1 --pretty=%ct)" "+%Y-%m-%dT%H:%M:%SZ" > $out/SOURCE_DATE_EPOCH
28       find "$out" -name .git -print0 | xargs -0 rm -rf
29     '';
30   };
31   vendorHash = "sha256-apOVAlGjaYSrW4qtUdDNgqwWxnVlBLhrefWEUvN4lzE=";
33   nativeBuildInputs = [ installShellFiles ];
35   subPackages = [ "." ];
37   ldflags = [
38     "-s"
39     "-w"
40     "-X sigs.k8s.io/release-utils/version.gitVersion=v${version}"
41     "-X sigs.k8s.io/release-utils/version.gitTreeState=clean"
42   ];
44   # ldflags based on metadata from git and source
45   preBuild = ''
46     ldflags+=" -X sigs.k8s.io/release-utils/version.gitCommit=$(cat COMMIT)"
47     ldflags+=" -X sigs.k8s.io/release-utils/version.buildDate=$(cat SOURCE_DATE_EPOCH)"
48   '';
50   preCheck = ''
51     # Feed in all but the e2e tests for testing
52     # This is because subPackages above limits what is built to just what we
53     # want but also limits the tests
54     getGoDirs() {
55       go list ./... | grep -v e2e
56     }
57     # Ensure other e2e tests that have escaped the e2e dir dont run
58     export SKIP_GINKGO=1
59   '';
61   checkFlags = [
62     "-skip TestCollectDockerfilePinning/Non-pinned_dockerfile|TestMixedPinning"
63   ];
65   postInstall = ''
66     installShellCompletion --cmd scorecard \
67       --bash <($out/bin/scorecard completion bash) \
68       --fish <($out/bin/scorecard completion fish) \
69       --zsh <($out/bin/scorecard completion zsh)
70   '';
72   doInstallCheck = true;
73   installCheckPhase = ''
74     runHook preInstallCheck
75     $out/bin/scorecard --help
76     $out/bin/scorecard version 2>&1 | grep "v${version}"
77     runHook postInstallCheck
78   '';
80   passthru.tests.version = testers.testVersion {
81     package = scorecard;
82     command = "scorecard version";
83     version = "v${version}";
84   };
86   meta = with lib; {
87     homepage = "https://github.com/ossf/scorecard";
88     changelog = "https://github.com/ossf/scorecard/releases/tag/v${version}";
89     description = "Security health metrics for Open Source";
90     mainProgram = "scorecard";
91     license = licenses.asl20;
92     maintainers = with maintainers; [ jk developer-guy ];
93   };