From afcb41c59b95af1761537c7b007c56dc0b40addb Mon Sep 17 00:00:00 2001
From: stefanprodan <stefan.prodan@gmail.com>
Date: Fri, 1 May 2020 19:46:54 +0300
Subject: [PATCH] Add bash completion cmd

---
 Makefile                             |  3 ++
 cmd/tk/completion.go                 | 28 +++++++++++++++++
 cmd/tk/delete_kustomization.go       | 10 ++----
 cmd/tk/delete_source_git.go          |  4 +--
 docs/cmd/tk.md                       |  3 +-
 docs/cmd/tk_check.md                 |  2 +-
 docs/cmd/tk_completion.md            | 47 ++++++++++++++++++++++++++++
 docs/cmd/tk_create.md                |  2 +-
 docs/cmd/tk_create_kustomization.md  |  2 +-
 docs/cmd/tk_create_source.md         |  2 +-
 docs/cmd/tk_create_source_git.md     |  2 +-
 docs/cmd/tk_delete.md                |  4 +--
 docs/cmd/tk_delete_kustomization.md  |  4 +--
 docs/cmd/tk_delete_source.md         |  4 +--
 docs/cmd/tk_delete_source_git.md     |  4 +--
 docs/cmd/tk_export.md                |  2 +-
 docs/cmd/tk_export_kustomization.md  |  2 +-
 docs/cmd/tk_export_source.md         |  2 +-
 docs/cmd/tk_export_source_git.md     |  2 +-
 docs/cmd/tk_get.md                   |  2 +-
 docs/cmd/tk_get_kustomizations.md    |  2 +-
 docs/cmd/tk_get_sources.md           |  2 +-
 docs/cmd/tk_get_sources_git.md       |  2 +-
 docs/cmd/tk_install.md               |  2 +-
 docs/cmd/tk_resume.md                |  2 +-
 docs/cmd/tk_resume_kustomization.md  |  2 +-
 docs/cmd/tk_suspend.md               |  2 +-
 docs/cmd/tk_suspend_kustomization.md |  2 +-
 docs/cmd/tk_sync.md                  |  2 +-
 docs/cmd/tk_sync_kustomization.md    |  2 +-
 docs/cmd/tk_sync_source.md           |  2 +-
 docs/cmd/tk_sync_source_git.md       |  2 +-
 docs/cmd/tk_uninstall.md             |  4 +--
 33 files changed, 116 insertions(+), 43 deletions(-)
 create mode 100644 cmd/tk/completion.go
 create mode 100644 docs/cmd/tk_completion.md

diff --git a/Makefile b/Makefile
index 0e85f8ee..d99ccfcb 100644
--- a/Makefile
+++ b/Makefile
@@ -23,3 +23,6 @@ install:
 .PHONY: docs
 docs:
 	mkdir -p ./docs/cmd && go run ./cmd/tk/ docgen
+
+install-dev:
+	CGO_ENABLED=0 go build -o /usr/local/bin ./cmd/tk
diff --git a/cmd/tk/completion.go b/cmd/tk/completion.go
new file mode 100644
index 00000000..be44ed2f
--- /dev/null
+++ b/cmd/tk/completion.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+	"os"
+
+	"github.com/spf13/cobra"
+)
+
+var completionCmd = &cobra.Command{
+	Use:   "completion",
+	Short: "Generates bash completion scripts",
+	Example: `To load completion run
+
+. <(tk completion)
+
+To configure your bash shell to load completions for each session add to your bashrc
+
+# ~/.bashrc or ~/.profile
+. <(tk completion)
+`,
+	Run: func(cmd *cobra.Command, args []string) {
+		rootCmd.GenBashCompletion(os.Stdout)
+	},
+}
+
+func init() {
+	rootCmd.AddCommand(completionCmd)
+}
diff --git a/cmd/tk/delete_kustomization.go b/cmd/tk/delete_kustomization.go
index 684c7e74..2968ad0b 100644
--- a/cmd/tk/delete_kustomization.go
+++ b/cmd/tk/delete_kustomization.go
@@ -47,15 +47,11 @@ func deleteKsCmdRun(cmd *cobra.Command, args []string) error {
 	}
 
 	if !deleteSilent {
-		warning := "This action will remove the Kubernetes objects previously applied by this kustomization. "
-		if kustomization.Spec.Suspend {
-			warning = ""
+		if !kustomization.Spec.Suspend {
+			logWaiting("This action will remove the Kubernetes objects previously applied by the %s kustomization!", name)
 		}
 		prompt := promptui.Prompt{
-			Label: fmt.Sprintf(
-				"%sAre you sure you want to delete the %s kustomization from the %s namespace",
-				warning, name, namespace,
-			),
+			Label:     "Are you sure you want to delete this kustomization",
 			IsConfirm: true,
 		}
 		if _, err := prompt.Run(); err != nil {
diff --git a/cmd/tk/delete_source_git.go b/cmd/tk/delete_source_git.go
index 9ff9bb39..46795513 100644
--- a/cmd/tk/delete_source_git.go
+++ b/cmd/tk/delete_source_git.go
@@ -47,9 +47,7 @@ func deleteSourceGitCmdRun(cmd *cobra.Command, args []string) error {
 
 	if !deleteSilent {
 		prompt := promptui.Prompt{
-			Label: fmt.Sprintf(
-				"Are you sure you want to delete the %s source from the %s namespace", name, namespace,
-			),
+			Label:     "Are you sure you want to delete this source",
 			IsConfirm: true,
 		}
 		if _, err := prompt.Run(); err != nil {
diff --git a/docs/cmd/tk.md b/docs/cmd/tk.md
index 160a7641..d301a1e9 100644
--- a/docs/cmd/tk.md
+++ b/docs/cmd/tk.md
@@ -79,6 +79,7 @@ Command line utility for assembling Kubernetes CD pipelines the GitOps way.
 ### SEE ALSO
 
 * [tk check](tk_check.md)	 - Check requirements and installation
+* [tk completion](tk_completion.md)	 - Generates bash completion scripts
 * [tk create](tk_create.md)	 - Create commands
 * [tk delete](tk_delete.md)	 - Delete commands
 * [tk export](tk_export.md)	 - Export commands
@@ -89,4 +90,4 @@ Command line utility for assembling Kubernetes CD pipelines the GitOps way.
 * [tk sync](tk_sync.md)	 - Synchronize commands
 * [tk uninstall](tk_uninstall.md)	 - Uninstall the toolkit components
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_check.md b/docs/cmd/tk_check.md
index 4a3b006e..54a7a0c1 100644
--- a/docs/cmd/tk_check.md
+++ b/docs/cmd/tk_check.md
@@ -44,4 +44,4 @@ tk check [flags]
 
 * [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_completion.md b/docs/cmd/tk_completion.md
new file mode 100644
index 00000000..db509b83
--- /dev/null
+++ b/docs/cmd/tk_completion.md
@@ -0,0 +1,47 @@
+## tk completion
+
+Generates bash completion scripts
+
+### Synopsis
+
+Generates bash completion scripts
+
+```
+tk completion [flags]
+```
+
+### Examples
+
+```
+To load completion run
+
+. <(tk completion)
+
+To configure your bash shell to load completions for each session add to your bashrc
+
+# ~/.bashrc or ~/.profile
+. <(tk completion)
+
+```
+
+### Options
+
+```
+  -h, --help   help for completion
+```
+
+### Options inherited from parent commands
+
+```
+      --components strings   list of components, accepts comma-separated values (default [source-controller,kustomize-controller])
+      --kubeconfig string    path to the kubeconfig file (default "~/.kube/config")
+      --namespace string     the namespace scope for this operation (default "gitops-system")
+      --timeout duration     timeout for this operation (default 5m0s)
+      --verbose              print generated objects
+```
+
+### SEE ALSO
+
+* [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
+
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_create.md b/docs/cmd/tk_create.md
index 8802511b..2dc7a8d9 100644
--- a/docs/cmd/tk_create.md
+++ b/docs/cmd/tk_create.md
@@ -29,4 +29,4 @@ Create commands
 * [tk create kustomization](tk_create_kustomization.md)	 - Create or update a kustomization resource
 * [tk create source](tk_create_source.md)	 - Create source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_create_kustomization.md b/docs/cmd/tk_create_kustomization.md
index 3c17838d..2d8beb00 100644
--- a/docs/cmd/tk_create_kustomization.md
+++ b/docs/cmd/tk_create_kustomization.md
@@ -67,4 +67,4 @@ tk create kustomization [name] [flags]
 
 * [tk create](tk_create.md)	 - Create commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_create_source.md b/docs/cmd/tk_create_source.md
index df355e66..a6bdf6a1 100644
--- a/docs/cmd/tk_create_source.md
+++ b/docs/cmd/tk_create_source.md
@@ -28,4 +28,4 @@ Create source commands
 * [tk create](tk_create.md)	 - Create commands
 * [tk create source git](tk_create_source_git.md)	 - Create or update a git source
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_create_source_git.md b/docs/cmd/tk_create_source_git.md
index bb9484b6..8f13fc7c 100644
--- a/docs/cmd/tk_create_source_git.md
+++ b/docs/cmd/tk_create_source_git.md
@@ -71,4 +71,4 @@ tk create source git [name] [flags]
 
 * [tk create source](tk_create_source.md)	 - Create source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_delete.md b/docs/cmd/tk_delete.md
index 3e1ee2c9..42ff8e30 100644
--- a/docs/cmd/tk_delete.md
+++ b/docs/cmd/tk_delete.md
@@ -10,7 +10,7 @@ Delete commands
 
 ```
   -h, --help     help for delete
-      --silent   delete resource without asking for confirmation
+  -s, --silent   delete resource without asking for confirmation
 ```
 
 ### Options inherited from parent commands
@@ -29,4 +29,4 @@ Delete commands
 * [tk delete kustomization](tk_delete_kustomization.md)	 - Delete kustomization
 * [tk delete source](tk_delete_source.md)	 - Delete sources commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_delete_kustomization.md b/docs/cmd/tk_delete_kustomization.md
index dd115e8d..5a7bbb1f 100644
--- a/docs/cmd/tk_delete_kustomization.md
+++ b/docs/cmd/tk_delete_kustomization.md
@@ -22,7 +22,7 @@ tk delete kustomization [name] [flags]
       --components strings   list of components, accepts comma-separated values (default [source-controller,kustomize-controller])
       --kubeconfig string    path to the kubeconfig file (default "~/.kube/config")
       --namespace string     the namespace scope for this operation (default "gitops-system")
-      --silent               delete resource without asking for confirmation
+  -s, --silent               delete resource without asking for confirmation
       --timeout duration     timeout for this operation (default 5m0s)
       --verbose              print generated objects
 ```
@@ -31,4 +31,4 @@ tk delete kustomization [name] [flags]
 
 * [tk delete](tk_delete.md)	 - Delete commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_delete_source.md b/docs/cmd/tk_delete_source.md
index 073f5f09..a1834b17 100644
--- a/docs/cmd/tk_delete_source.md
+++ b/docs/cmd/tk_delete_source.md
@@ -18,7 +18,7 @@ Delete sources commands
       --components strings   list of components, accepts comma-separated values (default [source-controller,kustomize-controller])
       --kubeconfig string    path to the kubeconfig file (default "~/.kube/config")
       --namespace string     the namespace scope for this operation (default "gitops-system")
-      --silent               delete resource without asking for confirmation
+  -s, --silent               delete resource without asking for confirmation
       --timeout duration     timeout for this operation (default 5m0s)
       --verbose              print generated objects
 ```
@@ -28,4 +28,4 @@ Delete sources commands
 * [tk delete](tk_delete.md)	 - Delete commands
 * [tk delete source git](tk_delete_source_git.md)	 - Delete git source
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_delete_source_git.md b/docs/cmd/tk_delete_source_git.md
index f024b3da..9194ffe9 100644
--- a/docs/cmd/tk_delete_source_git.md
+++ b/docs/cmd/tk_delete_source_git.md
@@ -22,7 +22,7 @@ tk delete source git [name] [flags]
       --components strings   list of components, accepts comma-separated values (default [source-controller,kustomize-controller])
       --kubeconfig string    path to the kubeconfig file (default "~/.kube/config")
       --namespace string     the namespace scope for this operation (default "gitops-system")
-      --silent               delete resource without asking for confirmation
+  -s, --silent               delete resource without asking for confirmation
       --timeout duration     timeout for this operation (default 5m0s)
       --verbose              print generated objects
 ```
@@ -31,4 +31,4 @@ tk delete source git [name] [flags]
 
 * [tk delete source](tk_delete_source.md)	 - Delete sources commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_export.md b/docs/cmd/tk_export.md
index a47d31b4..e7c0f012 100644
--- a/docs/cmd/tk_export.md
+++ b/docs/cmd/tk_export.md
@@ -29,4 +29,4 @@ Export commands
 * [tk export kustomization](tk_export_kustomization.md)	 - Export kustomization in YAML format
 * [tk export source](tk_export_source.md)	 - Export source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_export_kustomization.md b/docs/cmd/tk_export_kustomization.md
index 5f7d807d..74d30d83 100644
--- a/docs/cmd/tk_export_kustomization.md
+++ b/docs/cmd/tk_export_kustomization.md
@@ -42,4 +42,4 @@ tk export kustomization [name] [flags]
 
 * [tk export](tk_export.md)	 - Export commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_export_source.md b/docs/cmd/tk_export_source.md
index 40582eb3..228dc581 100644
--- a/docs/cmd/tk_export_source.md
+++ b/docs/cmd/tk_export_source.md
@@ -29,4 +29,4 @@ Export source commands
 * [tk export](tk_export.md)	 - Export commands
 * [tk export source git](tk_export_source_git.md)	 - Export git sources in YAML format
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_export_source_git.md b/docs/cmd/tk_export_source_git.md
index daee6488..f64c4d4c 100644
--- a/docs/cmd/tk_export_source_git.md
+++ b/docs/cmd/tk_export_source_git.md
@@ -43,4 +43,4 @@ tk export source git [name] [flags]
 
 * [tk export source](tk_export_source.md)	 - Export source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_get.md b/docs/cmd/tk_get.md
index d2a81f40..51d293df 100644
--- a/docs/cmd/tk_get.md
+++ b/docs/cmd/tk_get.md
@@ -28,4 +28,4 @@ Get commands
 * [tk get kustomizations](tk_get_kustomizations.md)	 - Get kustomizations status
 * [tk get sources](tk_get_sources.md)	 - Get sources commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_get_kustomizations.md b/docs/cmd/tk_get_kustomizations.md
index d636c2ac..3f454e74 100644
--- a/docs/cmd/tk_get_kustomizations.md
+++ b/docs/cmd/tk_get_kustomizations.md
@@ -31,4 +31,4 @@ tk get kustomizations [flags]
 
 * [tk get](tk_get.md)	 - Get commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_get_sources.md b/docs/cmd/tk_get_sources.md
index c964eed8..911674b8 100644
--- a/docs/cmd/tk_get_sources.md
+++ b/docs/cmd/tk_get_sources.md
@@ -27,4 +27,4 @@ Get sources commands
 * [tk get](tk_get.md)	 - Get commands
 * [tk get sources git](tk_get_sources_git.md)	 - Get git sources status
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_get_sources_git.md b/docs/cmd/tk_get_sources_git.md
index 654c5b0b..5691ade5 100644
--- a/docs/cmd/tk_get_sources_git.md
+++ b/docs/cmd/tk_get_sources_git.md
@@ -31,4 +31,4 @@ tk get sources git [flags]
 
 * [tk get sources](tk_get_sources.md)	 - Get sources commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_install.md b/docs/cmd/tk_install.md
index 285012ca..53dc3bf6 100644
--- a/docs/cmd/tk_install.md
+++ b/docs/cmd/tk_install.md
@@ -49,4 +49,4 @@ tk install [flags]
 
 * [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_resume.md b/docs/cmd/tk_resume.md
index acca85e9..75192317 100644
--- a/docs/cmd/tk_resume.md
+++ b/docs/cmd/tk_resume.md
@@ -27,4 +27,4 @@ Resume commands
 * [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
 * [tk resume kustomization](tk_resume_kustomization.md)	 - Resume kustomization
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_resume_kustomization.md b/docs/cmd/tk_resume_kustomization.md
index b8791852..1d3430ef 100644
--- a/docs/cmd/tk_resume_kustomization.md
+++ b/docs/cmd/tk_resume_kustomization.md
@@ -30,4 +30,4 @@ tk resume kustomization [name] [flags]
 
 * [tk resume](tk_resume.md)	 - Resume commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_suspend.md b/docs/cmd/tk_suspend.md
index 45ca28bb..823af3d8 100644
--- a/docs/cmd/tk_suspend.md
+++ b/docs/cmd/tk_suspend.md
@@ -27,4 +27,4 @@ Suspend commands
 * [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
 * [tk suspend kustomization](tk_suspend_kustomization.md)	 - Suspend kustomization
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_suspend_kustomization.md b/docs/cmd/tk_suspend_kustomization.md
index c22709bb..2e108dc0 100644
--- a/docs/cmd/tk_suspend_kustomization.md
+++ b/docs/cmd/tk_suspend_kustomization.md
@@ -30,4 +30,4 @@ tk suspend kustomization [name] [flags]
 
 * [tk suspend](tk_suspend.md)	 - Suspend commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_sync.md b/docs/cmd/tk_sync.md
index 7a5fa75d..5167d91a 100644
--- a/docs/cmd/tk_sync.md
+++ b/docs/cmd/tk_sync.md
@@ -28,4 +28,4 @@ Synchronize commands
 * [tk sync kustomization](tk_sync_kustomization.md)	 - Synchronize kustomization
 * [tk sync source](tk_sync_source.md)	 - Synchronize source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_sync_kustomization.md b/docs/cmd/tk_sync_kustomization.md
index 1c188a2f..0d2ff3af 100644
--- a/docs/cmd/tk_sync_kustomization.md
+++ b/docs/cmd/tk_sync_kustomization.md
@@ -43,4 +43,4 @@ tk sync kustomization [name] [flags]
 
 * [tk sync](tk_sync.md)	 - Synchronize commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_sync_source.md b/docs/cmd/tk_sync_source.md
index af73f2d5..9b4662d5 100644
--- a/docs/cmd/tk_sync_source.md
+++ b/docs/cmd/tk_sync_source.md
@@ -27,4 +27,4 @@ Synchronize source commands
 * [tk sync](tk_sync.md)	 - Synchronize commands
 * [tk sync source git](tk_sync_source_git.md)	 - Synchronize git source
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_sync_source_git.md b/docs/cmd/tk_sync_source_git.md
index 38be98e0..71803d34 100644
--- a/docs/cmd/tk_sync_source_git.md
+++ b/docs/cmd/tk_sync_source_git.md
@@ -39,4 +39,4 @@ tk sync source git [name] [flags]
 
 * [tk sync source](tk_sync_source.md)	 - Synchronize source commands
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
diff --git a/docs/cmd/tk_uninstall.md b/docs/cmd/tk_uninstall.md
index 5e691b63..913e70d0 100644
--- a/docs/cmd/tk_uninstall.md
+++ b/docs/cmd/tk_uninstall.md
@@ -29,7 +29,7 @@ tk uninstall [flags]
       --crds      removes all CRDs previously installed
       --dry-run   only print the object that would be deleted
   -h, --help      help for uninstall
-      --silent    delete components without asking for confirmation
+  -s, --silent    delete components without asking for confirmation
 ```
 
 ### Options inherited from parent commands
@@ -46,4 +46,4 @@ tk uninstall [flags]
 
 * [tk](tk.md)	 - Command line utility for assembling Kubernetes CD pipelines
 
-###### Auto generated by spf13/cobra on 30-Apr-2020
+###### Auto generated by spf13/cobra on 1-May-2020
-- 
GitLab