mirror of
https://github.com/grdl/git-get.git
synced 2026-02-08 17:29:18 +00:00
Replace two separate binaries with a single one
This commit is contained in:
63
cmd/list.go
Normal file
63
cmd/list.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git-get/pkg"
|
||||
"git-get/pkg/cfg"
|
||||
"git-get/pkg/git"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
func newListCommand() *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "git list",
|
||||
Short: "List all repositories cloned by 'git get' and their status.",
|
||||
RunE: runListCommand,
|
||||
Args: cobra.NoArgs,
|
||||
Version: cfg.Version(),
|
||||
SilenceUsage: true, // We don't want to show usage on legit errors (eg, wrong path, repo already existing etc.)
|
||||
}
|
||||
|
||||
cmd.PersistentFlags().BoolP(cfg.KeyFetch, "f", false, "First fetch from remotes before listing repositories.")
|
||||
cmd.PersistentFlags().StringP(cfg.KeyOutput, "o", cfg.Defaults[cfg.KeyOutput], fmt.Sprintf("Output format. Allowed values: [%s].", strings.Join(cfg.AllowedOut, ", ")))
|
||||
cmd.PersistentFlags().StringP(cfg.KeyReposRoot, "r", cfg.Defaults[cfg.KeyReposRoot], "Path to repos root where repositories are cloned.")
|
||||
cmd.PersistentFlags().BoolP("help", "h", false, "Print this help and exit.")
|
||||
cmd.PersistentFlags().BoolP("version", "v", false, "Print version and exit.")
|
||||
|
||||
viper.BindPFlag(cfg.KeyFetch, cmd.PersistentFlags().Lookup(cfg.KeyFetch))
|
||||
viper.BindPFlag(cfg.KeyOutput, cmd.PersistentFlags().Lookup(cfg.KeyOutput))
|
||||
viper.BindPFlag(cfg.KeyReposRoot, cmd.PersistentFlags().Lookup(cfg.KeyReposRoot))
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
func runListCommand(cmd *cobra.Command, args []string) error {
|
||||
cfg.Expand(cfg.KeyReposRoot)
|
||||
|
||||
config := &pkg.ListCfg{
|
||||
Fetch: viper.GetBool(cfg.KeyFetch),
|
||||
Output: viper.GetString(cfg.KeyOutput),
|
||||
Root: viper.GetString(cfg.KeyReposRoot),
|
||||
}
|
||||
|
||||
return pkg.List(config)
|
||||
}
|
||||
|
||||
func runList(args []string) {
|
||||
// Initialize configuration
|
||||
cfg.Init(&git.ConfigGlobal{})
|
||||
|
||||
// Create and execute the list command
|
||||
cmd := newListCommand()
|
||||
|
||||
// Set args for cobra to parse
|
||||
cmd.SetArgs(args)
|
||||
|
||||
if err := cmd.Execute(); err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user