commands: add bridge token subcommand

Amine created

Change summary

commands/bridge_token.go | 64 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)

Detailed changes

commands/bridge_token.go 🔗

@@ -0,0 +1,64 @@
+package commands
+
+import (
+	"fmt"
+
+	"github.com/spf13/cobra"
+
+	"github.com/MichaelMure/git-bug/bridge/core"
+	"github.com/MichaelMure/git-bug/cache"
+	"github.com/MichaelMure/git-bug/util/interrupt"
+)
+
+var (
+	bridgeTokenAll        bool
+	bridgeTokenLocalOnly  bool
+	bridgeTokenGlobalOnly bool
+)
+
+func runTokenBridge(cmd *cobra.Command, args []string) error {
+	backend, err := cache.NewRepoCache(repo)
+	if err != nil {
+		return err
+	}
+	defer backend.Close()
+	interrupt.RegisterCleaner(backend.Close)
+
+	var tokens []string
+	if bridgeTokenLocalOnly || bridgeTokenAll {
+		localTokens, err := core.ListTokens(backend)
+		if err != nil {
+			return err
+		}
+		tokens = localTokens
+	}
+
+	if bridgeTokenGlobalOnly || bridgeTokenAll {
+		globalTokens, err := core.ListGlobalTokens(backend)
+		if err != nil {
+			return err
+		}
+		tokens = append(tokens, globalTokens...)
+	}
+
+	for _, c := range tokens {
+		fmt.Println(c)
+	}
+	return nil
+}
+
+var bridgeTokenCmd = &cobra.Command{
+	Use:     "token",
+	Short:   "Configure and use bridge tokens.",
+	PreRunE: loadRepo,
+	RunE:    runTokenBridge,
+	Args:    cobra.NoArgs,
+}
+
+func init() {
+	bridgeCmd.AddCommand(bridgeTokenCmd)
+	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenAll, "all", "a", false, "")
+	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenLocalOnly, "local", "l", true, "")
+	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenGlobalOnly, "global", "g", false, "")
+	bridgeTokenCmd.Flags().SortFlags = false
+}