Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

regclient: add shell completions and fix version output #288146

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 45 additions & 11 deletions pkgs/development/tools/regclient/default.nix
@@ -1,4 +1,12 @@
{ stdenv, lib, buildGoModule, fetchFromGitHub }:
{ stdenv
, lib
, buildGoModule
, fetchFromGitHub
, installShellFiles
, lndir
, testers
, regclient
}:

let bins = [ "regbot" "regctl" "regsync" ]; in

Expand All @@ -20,22 +28,48 @@ buildGoModule rec {
ldflags = [
"-s"
"-w"
"-X main.VCSTag=${tag}"
"-X github.com/regclient/regclient/internal/version.vcsTag=${tag}"
];

postInstall =
lib.concatStringsSep "\n" (
map (bin: ''
mkdir -p ''$${bin}/bin &&
mv $out/bin/${bin} ''$${bin}/bin/ &&
ln -s ''$${bin}/bin/${bin} $out/bin/
'') bins
);
nativeBuildInputs = [ installShellFiles lndir ];

postInstall = lib.concatMapStringsSep "\n"
(bin: ''
export bin=''$${bin}
export outputBin=bin

mkdir -p $bin/bin
mv $out/bin/${bin} $bin/bin

installShellCompletion --cmd ${bin} \
--bash <($bin/bin/${bin} completion bash) \
--fish <($bin/bin/${bin} completion fish) \
--zsh <($bin/bin/${bin} completion zsh)

lndir -silent $bin $out

unset bin outputBin
'')
bins;

passthru.tests = lib.mergeAttrsList (
map
(bin: {
"${bin}Version" = testers.testVersion {
package = regclient;
command = "${bin} version";
version = tag;
};
})
bins
);

__darwinAllowLocalNetworking = true;

meta = with lib; {
description = "Docker and OCI Registry Client in Go and tooling using those libraries";
homepage = "https://github.com/regclient/regclient";
license = licenses.asl20;
maintainers = with maintainers; [ ];
maintainers = with maintainers; [ maxbrunet ];
};
}