6
0
mirror of https://github.com/grdl/git-get.git synced 2026-03-22 18:05:07 +00:00

Refactor packages structure

- Isolate files into their own packages
- Create new printer package and interface
- Refactor Repo stuct to embed the go-git *Repository directly
- Simplify cmd package
This commit is contained in:
Grzegorz Dlugoszewski
2020-06-08 12:07:03 +02:00
parent 29c21cb78d
commit f3d0df1bfd
14 changed files with 318 additions and 261 deletions

View File

@@ -2,9 +2,14 @@ package main
import (
"fmt"
"git-get/pkg"
"git-get/cfg"
"git-get/git"
"git-get/path"
"git-get/print"
"os"
pathpkg "path"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
@@ -27,30 +32,37 @@ var list bool
func init() {
cmd.PersistentFlags().BoolVarP(&list, "list", "l", false, "Lists all repositories inside git-get root")
cmd.PersistentFlags().StringP(pkg.KeyReposRoot, "r", "", "repos root")
cmd.PersistentFlags().StringP(pkg.KeyPrivateKey, "p", "", "SSH private key path")
viper.BindPFlag(pkg.KeyReposRoot, cmd.PersistentFlags().Lookup(pkg.KeyReposRoot))
viper.BindPFlag(pkg.KeyPrivateKey, cmd.PersistentFlags().Lookup(pkg.KeyReposRoot))
cmd.PersistentFlags().StringP(cfg.KeyReposRoot, "r", "", "repos root")
cmd.PersistentFlags().StringP(cfg.KeyPrivateKey, "p", "", "SSH private key path")
viper.BindPFlag(cfg.KeyReposRoot, cmd.PersistentFlags().Lookup(cfg.KeyReposRoot))
viper.BindPFlag(cfg.KeyPrivateKey, cmd.PersistentFlags().Lookup(cfg.KeyReposRoot))
}
func Run(cmd *cobra.Command, args []string) {
pkg.InitConfig()
cfg.InitConfig()
root := viper.GetString(cfg.KeyReposRoot)
if list {
paths, err := pkg.FindRepos()
paths, err := path.FindRepos()
exitIfError(err)
repos, err := pkg.OpenAll(paths)
repos, err := path.OpenAll(paths)
exitIfError(err)
pkg.PrintRepos(repos)
//tree := BuildTree(root, repos)
//fmt.Println(RenderSmartTree(tree))
printer := print.NewFlatPrinter()
fmt.Println(printer.Print(root, repos))
os.Exit(0)
}
url, err := pkg.ParseURL(args[0])
url, err := path.ParseURL(args[0])
exitIfError(err)
repoPath := pathpkg.Join(root, path.URLToPath(url))
_, err = pkg.CloneRepo(url, viper.GetString(pkg.KeyReposRoot), false)
_, err = git.CloneRepo(url, repoPath, false)
exitIfError(err)
}