about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorsuperherointj <5861043+superherointj@users.noreply.github.com>2023-03-30 18:52:35 -0300
committerGitHub <noreply@github.com>2023-03-30 18:52:35 -0300
commitade3880fdf50b708eae0cda6a1aa559c472dd993 (patch)
tree6268ddbd762c28d0784fd8fde8922af707af500f /pkgs/applications
parent0953866c0af0568066959c2474bf260225b49066 (diff)
parent4d0c1a9157eb313e40b5447193ffe44b909d13c4 (diff)
Merge pull request #223926 from lucasew/terraform-completion
terraform: add completion
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix52
1 files changed, 33 insertions, 19 deletions
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index 215e3a781866b..4fc379ae2384f 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -9,6 +9,7 @@
 , writeText
 , terraform-providers
 , fetchpatch
+, installShellFiles
 }:
 
 let
@@ -28,12 +29,38 @@ let
 
       ldflags = [ "-s" "-w" ];
 
+      subPackages = [ "." ];
+
       postConfigure = ''
         # speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22
         substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \
           --replace "/bin/stty" "${coreutils}/bin/stty"
       '';
 
+      nativeBuildInputs = [ installShellFiles ];
+
+      preCheck = ''
+        export HOME=$TMPDIR
+        export TF_SKIP_REMOTE_TESTS=1
+      '';
+
+      # https://github.com/posener/complete/blob/9a4745ac49b29530e07dc2581745a218b646b7a3/cmd/install/bash.go#L8
+      completionBash = "complete -C terraform terraform\n";
+      # https://github.com/posener/complete/blob/9a4745ac49b29530e07dc2581745a218b646b7a3/cmd/install/zsh.go
+      completionZsh =  "complete -C terraform terraform\n";
+      # https://github.com/posener/complete/blob/9a4745ac49b29530e07dc2581745a218b646b7a3/cmd/install/fish.go#L56
+      completionFish = ''
+        function __complete_terraform
+            set -lx COMP_LINE (commandline -cp)
+            test -z (commandline -ct)
+            and set COMP_LINE "$COMP_LINE "
+            terraform
+        end
+        complete -f -c terraform -a "(__complete_terraform)"
+      '';
+
+      passAsFile = [ "completionBash" "completionZsh" "completionFish" ];
+
       postInstall = ''
         # remove all plugins, they are part of the main binary now
         for i in $out/bin/*; do
@@ -41,32 +68,19 @@ let
             rm "$i"
           fi
         done
-      '';
 
-      preCheck = ''
-        export HOME=$TMPDIR
-        export TF_SKIP_REMOTE_TESTS=1
+        installShellCompletion --bash --name terraform $completionBashPath
+        installShellCompletion --zsh --name terraform $completionZshPath
+        installShellCompletion --fish --name terraform $completionFishPath
       '';
 
-      subPackages = [ "." ];
-
-      meta = with lib; {
+      meta = {
         description =
           "Tool for building, changing, and versioning infrastructure";
         homepage = "https://www.terraform.io/";
         changelog = "https://github.com/hashicorp/terraform/blob/v${version}/CHANGELOG.md";
-        license = licenses.mpl20;
-        maintainers = with maintainers; [
-          Chili-Man
-          babariviere
-          kalbasit
-          marsam
-          maxeaubrey
-          timstott
-          zimbatm
-          zowoq
-          techknowlogick
-        ];
+        license = lib.licenses.mpl20;
+        maintainers = with lib.maintainers; [ Chili-Man babariviere kalbasit marsam maxeaubrey techknowlogick timstott zimbatm zowoq ];
       };
     } // attrs');