ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
83 lines
2.4 KiB
Nix
83 lines
2.4 KiB
Nix
{ lib, buildGoModule, fetchFromGitHub, go-bindata, installShellFiles }:
|
|
|
|
buildGoModule rec {
|
|
pname = "waypoint";
|
|
version = "0.11.4";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "hashicorp";
|
|
repo = pname;
|
|
rev = "v${version}";
|
|
sha256 = "sha256-Zn11mVQV8lN62BVYfhXauKets7/mIqA0r+mG2TkRyPk=";
|
|
};
|
|
|
|
vendorHash = "sha256-z0qe8zSQ9PopGeyvMDhRpU+3jUgHoh+8jTsYGLPk3i4=";
|
|
|
|
nativeBuildInputs = [ go-bindata installShellFiles ];
|
|
|
|
# GIT_{COMMIT,DIRTY} filled in blank to prevent trying to run git and ending up blank anyway
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
make bin GIT_DESCRIBE="v${version}" GIT_COMMIT="" GIT_DIRTY=""
|
|
runHook postBuild
|
|
'';
|
|
|
|
doCheck = false;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
local INSTALL="$out/bin/waypoint"
|
|
install -D waypoint $out/bin/waypoint
|
|
|
|
# waypoint's completion install command alters your <something>rc files
|
|
# below is the equivalent of what it injects
|
|
|
|
# Write to a file as it doesn't like EOF within <()
|
|
cat > waypoint.fish <<EOF
|
|
function __complete_waypoint
|
|
set -lx COMP_LINE (commandline -cp)
|
|
test -z (commandline -ct)
|
|
and set COMP_LINE "$COMP_LINE "
|
|
$INSTALL
|
|
end
|
|
complete -f -c waypoint -a "(__complete_waypoint)"
|
|
EOF
|
|
installShellCompletion --cmd waypoint \
|
|
--bash <(echo "complete -C $INSTALL waypoint") \
|
|
--fish <(cat waypoint.fish) \
|
|
--zsh <(echo "complete -o nospace -C $INSTALL waypoint")
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
doInstallCheck = true;
|
|
installCheckPhase = ''
|
|
runHook preInstallCheck
|
|
# `version` tries to write to ~/.config/waypoint
|
|
export HOME="$TMPDIR"
|
|
|
|
$out/bin/waypoint --help
|
|
$out/bin/waypoint version | grep "CLI: v${version}"
|
|
runHook postInstallCheck
|
|
'';
|
|
|
|
# Binary is static
|
|
dontPatchELF = true;
|
|
dontPatchShebangs = true;
|
|
|
|
meta = with lib; {
|
|
homepage = "https://waypointproject.io";
|
|
changelog = "https://github.com/hashicorp/waypoint/blob/v${version}/CHANGELOG.md";
|
|
description = "A tool to build, deploy, and release any application on any platform";
|
|
mainProgram = "waypoint";
|
|
longDescription = ''
|
|
Waypoint allows developers to define their application build, deploy, and
|
|
release lifecycle as code, reducing the time to deliver deployments
|
|
through a consistent and repeatable workflow.
|
|
'';
|
|
license = licenses.mpl20;
|
|
maintainers = with maintainers; [ winpat jk techknowlogick ];
|
|
};
|
|
}
|