vuls: init at 0.27.0 (#348530)
[NixPkgs.git] / pkgs / by-name / ss / ssm-session-manager-plugin / package.nix
blobcc4a5b746267adbf2201da3f07f93233542cfd2d
1 { lib
2 , fetchFromGitHub
3 , buildGoModule
4 , fetchpatch
5 }:
6 buildGoModule rec {
7   pname = "ssm-session-manager-plugin";
8   version = "1.2.677.0";
10   src = fetchFromGitHub {
11     owner = "aws";
12     repo = "session-manager-plugin";
13     rev = version;
14     hash = "sha256-bfj3LFUYgtrspFsLb46TuIOC3bj/WEamMUa47Q7kATI=";
15   };
17   patches = [
18     # Add support for Go modules.
19     #
20     # This patch doesn't belong to any upstream PR, it is specially crafted for
21     # nixpkgs. Deleting the vendor dir is left out from the patch and done in
22     # postPatch instead, as otherwise the patch would be to big and GitHub returns
23     # an error.
24     #
25     # With https://github.com/aws/session-manager-plugin/pull/74 there is an
26     # upstream PR with the same goal. It isn't pulled here as patch for the same
27     # reason.
28     #
29     # Notice that the dependencies are pinned with the patch, and upstream dependency
30     # updates won't take effect. Patch should be recreated from time to time.
31     # - `rm -rf vendor`
32     # - `go mod init github.com/aws/session-manager-plugin`
33     # - `go mod tidy`
34     # - `go get github.com/twinj/uuid@v0.0.0-20151029044442-89173bcdda19`
35     # - `go mod tidy`
36     # - `git checkout HEAD vendor`
37     ./0001-module-support.patch
38   ];
40   postPatch = ''
41     rm -rf vendor
42   '';
44   vendorHash = "sha256-wK+aWRC5yrPtdihXAj6RlYC9ZTTPuGUg9wLY33skzeE=";
46   subPackages = [ "src/sessionmanagerplugin-main" ];
48   preBuild = ''
49     echo -n ${lib.escapeShellArg version} > VERSION
50     go run src/version/versiongenerator/version-gen.go
51   '';
53   doCheck = true;
54   checkFlags = [ "-skip=TestSetSessionHandlers" ];
56   # The AWS CLI is expecting the binary name to be 'session-manager-plugin' and
57   # since the outfile is different the following workaround is renaming the binary.
58   postBuild = ''
59     mv $GOPATH/bin/sessionmanagerplugin-main $GOPATH/bin/${meta.mainProgram}
60   '';
62   preCheck = ''
63     if ! [[ $($GOPATH/bin/${meta.mainProgram} --version) = ${lib.escapeShellArg version} ]]; then
64       echo 'wrong version'
65       exit 1
66     fi
67   '';
69   meta = {
70     homepage = "https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html";
71     description = "Amazon SSM Session Manager Plugin";
72     mainProgram = "session-manager-plugin";
73     license = lib.licenses.asl20;
74     maintainers = with lib.maintainers; [ amarshall mbaillie ];
75   };