diff --git a/internal/cli/checkupdate.go b/internal/cli/checkupdate.go deleted file mode 100644 index 8ae1d80..0000000 --- a/internal/cli/checkupdate.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "context" - "fmt" - "os" - "strings" - - "git.unistack.org/unistack-org/pkgdash/internal/modules" - "github.com/spf13/cobra" - "go.unistack.org/micro/v4/logger" - "golang.org/x/mod/modfile" - "golang.org/x/mod/semver" -) - -// checkupdateCmd represents the checkupdate command -var checkupdateCmd = NewCheckUpdateCommand() - -var mvs = make(map[string]modules.Update) - -func init() { - rootCmd.AddCommand(checkupdateCmd) -} - -func NewCheckUpdateCommand() *cobra.Command { - ctx := context.Background() - - cmd := &cobra.Command{ - Use: "checkupdate", - Short: "CheckUpdate collects a list of dependencies with the latest updates.", - Long: `CheckUpdate collects a list of dependencies with the latest updates.`, - RunE: func(cmd *cobra.Command, args []string) error { - logger.Info(ctx, "CheckUpdate called") - - path := "." - if len(os.Args) > 1 { - path = os.Args[1] - } - - name, err := modules.FindModFile(path) - if err != nil { - panic(err) - } - buf, err := os.ReadFile(name) - if err != nil { - panic(err) - } - mfile, err := modfile.Parse(name, buf, nil) - if err != nil { - panic(err) - } - - mvs = make(map[string]modules.Update) - - updateOptions := modules.UpdateOptions{ - Pre: cfg.UpdateOpt.Pre, - Major: cfg.UpdateOpt.Major, - UpMajor: cfg.UpdateOpt.UpMajor, - Cached: cfg.UpdateOpt.Cached, - OnUpdate: func(u modules.Update) { - var modpath string // new mod path with major - if u.Err != nil { - logger.Error(ctx, fmt.Sprintf("%s: failed: %v", u.Module.Path, u.Err)) - return - } - modpath = u.Module.Path - v := semver.Major(u.Version) - p := modules.ModPrefix(modpath) - if !strings.HasPrefix(u.Module.Version, v) && v != "v1" && v != "v0" { - switch strings.HasPrefix(u.Module.Path, "gopkg.in") { - case true: - modpath = p + "." + v - case false: - modpath = p + "/" + v - } - } - mvs[modpath] = u - }, - } - - for _, req := range mfile.Require { - updateOptions.Modules = append(updateOptions.Modules, req.Mod) - } - - modules.Updates(updateOptions) - logger.Info(ctx, fmt.Sprintf("Modules get update: /n %s", mvs)) - return nil - }, - } - - return cmd -} diff --git a/internal/cli/delete.go b/internal/cli/delete.go deleted file mode 100644 index 44bfaf1..0000000 --- a/internal/cli/delete.go +++ /dev/null @@ -1,74 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "context" - "fmt" - - "github.com/spf13/cobra" -) - -var deleteCmd = NewDeleteCommand() - -type DeleteFlags struct { - all bool - mod string -} - -func init() { - rootCmd.AddCommand(deleteCmd) -} - -func NewDeleteCommand() *cobra.Command { - var flags DeleteFlags - - ctx := context.Background() - - cmd := &cobra.Command{ - Use: "delete", - Short: "Delete closes the merge requests created with a dependency update.", - Long: `Delete closes the merge requests created with a dependency update.`, - RunE: func(cmd *cobra.Command, args []string) error { - fmt.Println("delete called") - var err error - - if gitsource == nil { - return errSourceNil - } - - if len(prList) == 0 { - return errPRNotExist - } - - if flags.all { - for _, branch := range cfg.Branches { - rMap := prList[branch] - for path, _ := range rMap { - err = gitsource.RequestClose(ctx, branch, path) - if err != nil { - return err - } - } - } - } - - if flags.mod != "" { - for _, branch := range cfg.Branches { - err = gitsource.RequestClose(ctx, branch, flags.mod) - if err != nil { - return err - } - } - } - - return errFlagsNotExist - }, - } - - cmd.Flags().BoolVarP(&flags.all, "all", "a", false, "Deletes everything depending") - cmd.Flags().StringVarP(&flags.mod, "mod", "m", "", "Deletes one dependency") - - return cmd -} diff --git a/internal/cli/init.go b/internal/cli/init.go deleted file mode 100644 index d4e4bec..0000000 --- a/internal/cli/init.go +++ /dev/null @@ -1,133 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "context" - "fmt" - "os" - "path/filepath" - - "git.unistack.org/unistack-org/pkgdash/internal/configcli" - "git.unistack.org/unistack-org/pkgdash/internal/source" - "git.unistack.org/unistack-org/pkgdash/internal/source/github" - "github.com/spf13/cobra" - yamlcodec "go.unistack.org/micro-codec-yaml/v4" - envconfig "go.unistack.org/micro-config-env/v4" - fileconfig "go.unistack.org/micro-config-file/v4" - "go.unistack.org/micro/v4/config" - "go.unistack.org/micro/v4/logger" - "go.unistack.org/micro/v4/logger/slog" - "go.unistack.org/micro/v4/options" -) - -// initCmd represents the init command -var initCmd = NewInitCommand() - -var gitsource source.SourceControl = (*github.Github)(nil) - -var cfg = configcli.NewConfig() - -var ( - DefaultPullRequestTitle = `Bump {{.Name}} from {{.VersionOld}} to {{.VersionNew}}` - DefaultPullRequestBody = `Bumps {{.Name}} from {{.VersionOld}} to {{.VersionNew}}` -) - -var ( - configFiles = []string{ - "dependabot.yml", - "pkgdashcli.yml", - "pkgdashcli.yaml", - } - configDirs = []string{ - ".gitea", - ".github", - ".gitlab", - } -) - -func init() { - rootCmd.AddCommand(initCmd) -} - -func NewInitCommand() *cobra.Command { - ctx := context.Background() - - logger.DefaultLogger = slog.NewLogger() - - if err := logger.DefaultLogger.Init(logger.WithCallerSkipCount(3), logger.WithLevel(logger.DebugLevel)); err != nil { - logger.Error(ctx, fmt.Sprintf("logger init error: %v", err)) - } - - cmd := &cobra.Command{ - Use: "init", - Short: "Init fills the config with data from the configuration file.", - Long: `Init fills the config with data from the configuration file.`, - RunE: func(cmd *cobra.Command, args []string) error { - logger.Info(ctx, "Init called") - var err error - - lCfg := configcli.NewConfig() - - if err = config.Load(ctx, - []config.Config{ - config.NewConfig( - config.Struct(lCfg), - ), - envconfig.NewConfig( - config.Struct(lCfg), - ), - }, - config.LoadOverride(true), - ); err != nil { - logger.Fatal(ctx, fmt.Sprintf("failed to load config: %v", err)) - } - - for _, configDir := range configDirs { - for _, configFile := range configFiles { - path := filepath.Join(configDir, configFile) - if _, err = os.Stat(path); os.IsNotExist(err) { - continue - } - - c := fileconfig.NewConfig( - config.AllowFail(false), - config.Struct(lCfg), - options.Codec(yamlcodec.NewCodec()), - fileconfig.Path(path), - ) - err = c.Init() - if err != nil { - logger.Error(ctx, fmt.Sprintf("failed to init config: %v", err)) - return err - } - if err = c.Load(ctx, config.LoadOverride(true)); err != nil { - logger.Error(ctx, fmt.Sprintf("failed to load config: %v", err)) - return err - } - } - } - - logger.Info(ctx, fmt.Sprintf("Load config... \n %s", cfg)) - - if cfg.PullRequestBody == "" { - cfg.PullRequestBody = DefaultPullRequestBody - } - - if cfg.PullRequestTitle == "" { - cfg.PullRequestTitle = DefaultPullRequestTitle - } - - gitsource = source.NewSourceControl(*lCfg) - - logger.Info(ctx, fmt.Sprintf("Git: %s", gitsource.Name())) - - cfg = lCfg - - return nil - }, - } - - return cmd -} diff --git a/internal/cli/list.go b/internal/cli/list.go deleted file mode 100644 index b8c6536..0000000 --- a/internal/cli/list.go +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "context" - "fmt" - - "github.com/spf13/cobra" - "go.unistack.org/micro/v4/logger" -) - -// updateCmd represents the update command -var listCmd = NewListCommand() - -var prList = map[string]map[string]string{} - -/* [ - "master": - [ - "go.unistack.org/micro/v4" : "Bump go.unistack.org/micro/v4 from v4.0.0 to v4.0.1", - "go.unistack.org/micro-client-http/v4":"Bump go.unistack.org/micro-client-http/v4 from v4.0.0 to v4.0.2", - ], - "v3": - [ - "go.unistack.org/micro/v3" : "Bump go.unistack.org/micro/v4 from v3.0.0 to v3.0.1", - ], -] */ - -func init() { - rootCmd.AddCommand(listCmd) -} - -func NewListCommand() *cobra.Command { - ctx := context.Background() - - cmd := &cobra.Command{ - Use: "list", - Short: "Update allows you to start the process of creating a PR in the repository", - Long: ` -Update allows you to start the process of creating a PR in the repository. -Use the -a flag to update all dependencies or -m flag a specific module. -`, - RunE: func(cmd *cobra.Command, args []string) error { - - logger.Info(ctx, "RequestList start") - - if gitsource == nil { - return errSourceNil - } - - if cfg == nil { - return errCfgNil - } - - prList = make(map[string]map[string]string) - logger.Info(ctx, fmt.Sprintf("Load config... \n %s", cfg)) - for _, branch := range cfg.Branches { - logger.Info(ctx, fmt.Sprintf("Start getting pr for %s", branch)) - rMap, err := gitsource.RequestList(ctx, branch) - if err != nil { - return err - } - prList[branch] = rMap - - logger.Info(ctx, fmt.Sprintf("for %s:\n%s", branch, rMap)) - } - - logger.Info(ctx, "Successful getting pull requests") - - return nil - }, - } - - return cmd -} diff --git a/internal/cli/root.go b/internal/cli/root.go deleted file mode 100644 index e98e955..0000000 --- a/internal/cli/root.go +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" -) - -var ( - errUpdateNotExist = fmt.Errorf("mod not in list of update. Call init") - errFlagsNotExist = fmt.Errorf("empty flags") - errSourceNil = fmt.Errorf("source nil. Call init") - errCfgNil = fmt.Errorf("cfg nil. Call init") - errPRNotExist = fmt.Errorf("pr not exist. Call list") -) - -// rootCmd represents the base command when called without any subcommands -var rootCmd = &cobra.Command{ - Use: "pkgdashcli [flags]", - Short: "Pkgdashcli application to update dependencies.", - Long: `Pkgdashcli allows you to define a version update for a dependency and start merge requests in version control systems.`, - // Uncomment the following line if your bare application - // has an action associated with it: - // Run: func(cmd *cobra.Command, args []string) { }, -} - -// Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute() { - err := rootCmd.Execute() - if err != nil { - os.Exit(1) - } -} - -func init() { - -} diff --git a/internal/cli/update.go b/internal/cli/update.go deleted file mode 100644 index 4fd950e..0000000 --- a/internal/cli/update.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright © 2024 NAME HERE -*/ -package cli - -import ( - "context" - "fmt" - - "github.com/spf13/cobra" - "go.unistack.org/micro/v4/logger" -) - -var updateCmd = NewUpdateCommand() - -type UpdateFlags struct { - all bool - mod string -} - -func init() { - rootCmd.AddCommand(updateCmd) -} - -func NewUpdateCommand() *cobra.Command { - var flags UpdateFlags - - ctx := context.Background() - - cmd := &cobra.Command{ - Use: "update", - Short: "Update allows you to start the process of creating a PR in the repository", - Long: ` - Update allows you to start the process of creating a PR in the repository. - Use the -a flag to update all dependencies or -m flag a specific module. - `, - RunE: func(cmd *cobra.Command, args []string) error { - var err error - - if gitsource == nil { - return errSourceNil - } - if len(mvs) == 0 { - return errUpdateNotExist - } - - if flags.all { - logger.Info(ctx, "update all") - for pathMod, m := range mvs { - for _, branch := range cfg.Branches { - logger.Info(ctx, fmt.Sprintf("update mod: %s", m)) - - if err = gitsource.RequestOpen(ctx, branch, pathMod, m); err != nil { - logger.Error(ctx, fmt.Sprintf("PR open error: %s, base branch: %s", pathMod, branch)) - return err - } - - logger.Info(ctx, fmt.Sprintf("Successful update mod: %s", pathMod)) - } - - delete(mvs, pathMod) // todo возможно чисть не стоит и нужно просто пропускать - } - return nil - } - - if flags.mod != "" { - for _, branch := range cfg.Branches { - logger.Info(ctx, fmt.Sprintf("update mod: %s", flags.mod)) - - if _, ok := mvs[flags.mod]; !ok { - return errUpdateNotExist - } - - if err = gitsource.RequestOpen(ctx, branch, flags.mod, mvs[flags.mod]); err != nil { - logger.Error(ctx, fmt.Sprintf("PR open error: %s, base branch: %s", flags.mod, branch)) - return err - } - - logger.Info(ctx, fmt.Sprintf("Successful update mod: %s", flags.mod)) - } - - delete(mvs, flags.mod) - - return nil - } - - return errFlagsNotExist - }, - } - - cmd.Flags().BoolVarP(&flags.all, "all", "a", false, "Updates everything depending") - cmd.Flags().StringVarP(&flags.mod, "mod", "m", "", "Update one dependency") - - return cmd -}