about summary refs log tree commit diff
path: root/pkgs/by-name/gi/git-town/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/gi/git-town/package.nix')
-rw-r--r--pkgs/by-name/gi/git-town/package.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/by-name/gi/git-town/package.nix b/pkgs/by-name/gi/git-town/package.nix
new file mode 100644
index 000000000000..226afe310323
--- /dev/null
+++ b/pkgs/by-name/gi/git-town/package.nix
@@ -0,0 +1,74 @@
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles, git, testers, git-town, makeWrapper }:
+
+buildGoModule rec {
+  pname = "git-town";
+  version = "16.4.1";
+
+  src = fetchFromGitHub {
+    owner = "git-town";
+    repo = "git-town";
+    rev = "v${version}";
+    hash = "sha256-8Xr1R6txsJBGzBtvvKOCg2lcAHksl4hNPc9zySkTfdg=";
+  };
+
+  vendorHash = null;
+
+  nativeBuildInputs = [ installShellFiles makeWrapper ];
+
+  buildInputs = [ git ];
+
+  ldflags =
+    let
+      modulePath = "github.com/git-town/git-town/v${lib.versions.major version}";
+    in
+    [
+      "-s"
+      "-w"
+      "-X ${modulePath}/src/cmd.version=v${version}"
+      "-X ${modulePath}/src/cmd.buildDate=nix"
+    ];
+
+  nativeCheckInputs = [ git ];
+
+  preCheck = ''
+    HOME=$(mktemp -d)
+
+    # this runs tests requiring local operations
+    rm main_test.go
+  '';
+
+  checkFlags =
+    let
+      # Disable tests requiring local operations
+      skippedTests = [
+        "TestGodog"
+        "TestMockingRunner/MockCommand"
+        "TestMockingRunner/QueryWith"
+        "TestTestCommands/CreateChildFeatureBranch"
+      ];
+    in
+    [ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
+
+  postInstall = ''
+    installShellCompletion --cmd git-town \
+      --bash <($out/bin/git-town completions bash) \
+      --fish <($out/bin/git-town completions fish) \
+      --zsh <($out/bin/git-town completions zsh)
+
+    wrapProgram $out/bin/git-town --prefix PATH : ${lib.makeBinPath [ git ]}
+  '';
+
+  passthru.tests.version = testers.testVersion {
+    package = git-town;
+    command = "git-town --version";
+    inherit version;
+  };
+
+  meta = with lib; {
+    description = "Generic, high-level git support for git-flow workflows";
+    homepage = "https://www.git-town.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ allonsy blaggacao gabyx ];
+    mainProgram = "git-town";
+  };
+}