Refactor gitlab to generic remotes
This commit is contained in:
@ -7,8 +7,8 @@ import (
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes"
|
||||
cacheProjects "gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
)
|
||||
|
||||
var aliasAddCmd = &cobra.Command{
|
||||
@ -21,7 +21,7 @@ var aliasAddCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
func runAddAliasCmd(cmd *cobra.Command, args []string) {
|
||||
var project *remotes.Project
|
||||
var project *projects.Project
|
||||
|
||||
// Check by flag
|
||||
if projectID := viper.GetInt("alias.add.projectid"); projectID > 0 {
|
||||
@ -76,12 +76,12 @@ func addNewAliases(projectID int) {
|
||||
}
|
||||
}
|
||||
|
||||
func promptAliasesForProject(p *remotes.Project) []string {
|
||||
func promptAliasesForProject(p *projects.Project) []string {
|
||||
aliases := cache.GetProjectAliases(p)
|
||||
if len(aliases) > 0 {
|
||||
plog.Info("Adding aliases to project", plog.Args(
|
||||
"project", p.String(),
|
||||
"existingAliases", projects.ProjectAliasesString(aliases),
|
||||
"existingAliases", cacheProjects.ProjectAliasesString(aliases),
|
||||
))
|
||||
} else {
|
||||
pterm.Info.Printfln("Adding aliases to %s", p.Name)
|
||||
|
@ -6,7 +6,7 @@ import (
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
)
|
||||
|
||||
var aliasDeleteCmd = &cobra.Command{
|
||||
@ -19,7 +19,7 @@ var aliasDeleteCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
func runDeleteAliasCmd(cmd *cobra.Command, args []string) {
|
||||
var project *remotes.Project
|
||||
var project *projects.Project
|
||||
var err error
|
||||
|
||||
fzfOpts := &fzfProjectOpts{
|
||||
|
@ -3,8 +3,8 @@ package cmd
|
||||
import (
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes"
|
||||
cacheProjects "gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
)
|
||||
|
||||
var projectCmd = &cobra.Command{
|
||||
@ -19,7 +19,7 @@ var projectCmd = &cobra.Command{
|
||||
// Run: projectGoCmdRun,
|
||||
}
|
||||
|
||||
func getProject(args []string) *remotes.Project {
|
||||
func getProject(args []string) *projects.Project {
|
||||
gitlabs := viper.GetStringSlice("project.gitlabs")
|
||||
fzfOpts := &fzfProjectOpts{
|
||||
Ctx: rootCmd.Context(),
|
||||
@ -33,7 +33,7 @@ func getProject(args []string) *remotes.Project {
|
||||
} else {
|
||||
plog.Debug("Houston, we have a project", plog.Args(
|
||||
"project", project.String(),
|
||||
"aliases", projects.ProjectAliasesString(
|
||||
"aliases", cacheProjects.ProjectAliasesString(
|
||||
cache.GetProjectAliases(project)),
|
||||
))
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
"github.com/pterm/pterm"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
)
|
||||
|
||||
var projectShowCmd = &cobra.Command{
|
||||
@ -20,7 +20,7 @@ var projectShowCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
func projectShowCmdRun(cmd *cobra.Command, args []string) {
|
||||
var project *remotes.Project
|
||||
var project *projects.Project
|
||||
var inCwd bool
|
||||
|
||||
gitlabs := viper.GetStringSlice("project.gitlabs")
|
||||
|
@ -4,8 +4,8 @@ import (
|
||||
"context"
|
||||
|
||||
fzf "github.com/ktr0731/go-fuzzyfinder"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes"
|
||||
cacheProjects "gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/projects"
|
||||
"gitlab.sweetwater.com/it/devops/tools/gitlab-project-manager/internal/remotes/projects"
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
@ -18,8 +18,8 @@ type fzfProjectOpts struct {
|
||||
|
||||
// This will try to find a project by alias if a search term
|
||||
// is given, otherwise will fuzzy find by project
|
||||
func fzfFindProject(opts *fzfProjectOpts) *remotes.Project {
|
||||
var project *remotes.Project
|
||||
func fzfFindProject(opts *fzfProjectOpts) *projects.Project {
|
||||
var project *projects.Project
|
||||
|
||||
if opts.Search != "" {
|
||||
project = fzfSearchProjectAliases(opts)
|
||||
@ -37,8 +37,8 @@ func fzfFindProject(opts *fzfProjectOpts) *remotes.Project {
|
||||
// If . is given as a project, will open project from the
|
||||
// current working directory. Otherwise, will attempt to fuzzy-find
|
||||
// a project given a search term if provided
|
||||
func fzfCwdOrSearchProjectAliases(opts *fzfProjectOpts) *remotes.Project {
|
||||
var project *remotes.Project
|
||||
func fzfCwdOrSearchProjectAliases(opts *fzfProjectOpts) *projects.Project {
|
||||
var project *projects.Project
|
||||
if opts.Search == "." {
|
||||
project, _ = cache.GetProjectFromCwd()
|
||||
} else {
|
||||
@ -49,9 +49,9 @@ func fzfCwdOrSearchProjectAliases(opts *fzfProjectOpts) *remotes.Project {
|
||||
|
||||
// This will fuzzy search only aliases, preferring an exact
|
||||
// match if one is given
|
||||
func fzfSearchProjectAliases(opts *fzfProjectOpts) *remotes.Project {
|
||||
var project *remotes.Project
|
||||
var alias *projects.ProjectAlias
|
||||
func fzfSearchProjectAliases(opts *fzfProjectOpts) *projects.Project {
|
||||
var project *projects.Project
|
||||
var alias *cacheProjects.ProjectAlias
|
||||
if alias = cache.GetAliasByName(opts.Search, opts.Gitlabs...); alias != nil {
|
||||
project = cache.GetProjectByAlias(alias)
|
||||
plog.Info("Perfect alias match... flawless")
|
||||
@ -75,8 +75,8 @@ func fzfSearchProjectAliases(opts *fzfProjectOpts) *remotes.Project {
|
||||
// a single one. Replaced by fzfProjectFromAliases in fzfSearchProjectAliases
|
||||
// as merging is preferred, but can be used if it's ever desirable to
|
||||
// return a single alias from all aliases
|
||||
func fzfAliasFromAliases(opts *fzfProjectOpts, aliases []*projects.ProjectAlias) *projects.ProjectAlias {
|
||||
var alias *projects.ProjectAlias
|
||||
func fzfAliasFromAliases(opts *fzfProjectOpts, aliases []*cacheProjects.ProjectAlias) *cacheProjects.ProjectAlias {
|
||||
var alias *cacheProjects.ProjectAlias
|
||||
i, err := fzf.Find(
|
||||
aliases,
|
||||
func(i int) string {
|
||||
@ -95,8 +95,8 @@ func fzfAliasFromAliases(opts *fzfProjectOpts, aliases []*projects.ProjectAlias)
|
||||
|
||||
// Given a list of aliases, merge them together and use the resulting
|
||||
// list of projects to return a project
|
||||
func fzfProjectFromAliases(opts *fzfProjectOpts, aliases []*projects.ProjectAlias) (
|
||||
*remotes.Project, error) {
|
||||
func fzfProjectFromAliases(opts *fzfProjectOpts, aliases []*cacheProjects.ProjectAlias) (
|
||||
*projects.Project, error) {
|
||||
mergedProjects := projectsFromAliases(aliases)
|
||||
if len(mergedProjects) == 1 {
|
||||
return mergedProjects[0], nil
|
||||
@ -104,8 +104,8 @@ func fzfProjectFromAliases(opts *fzfProjectOpts, aliases []*projects.ProjectAlia
|
||||
return fzfProjectFromProjects(opts, mergedProjects)
|
||||
}
|
||||
|
||||
func projectsFromAliases(aliases []*projects.ProjectAlias) []*remotes.Project {
|
||||
projects := make([]*remotes.Project, 0)
|
||||
func projectsFromAliases(aliases []*cacheProjects.ProjectAlias) []*projects.Project {
|
||||
projects := make([]*projects.Project, 0)
|
||||
|
||||
ALIASES:
|
||||
for _, a := range aliases {
|
||||
@ -123,8 +123,8 @@ ALIASES:
|
||||
|
||||
// If opts.MustHaveAlias, will only allow selection of projects
|
||||
// that have at least one alias defined
|
||||
func fzfProject(opts *fzfProjectOpts) (*remotes.Project, error) {
|
||||
var searchableProjects []*remotes.Project
|
||||
func fzfProject(opts *fzfProjectOpts) (*projects.Project, error) {
|
||||
var searchableProjects []*projects.Project
|
||||
if opts.MustHaveAlias {
|
||||
searchableProjects = cache.GetProjectsWithAliases()
|
||||
} else {
|
||||
@ -136,8 +136,8 @@ func fzfProject(opts *fzfProjectOpts) (*remotes.Project, error) {
|
||||
}
|
||||
|
||||
// Takes a list of projects and performs a fuzzyfind
|
||||
func fzfProjectFromProjects(opts *fzfProjectOpts, projects []*remotes.Project) (
|
||||
*remotes.Project, error) {
|
||||
func fzfProjectFromProjects(opts *fzfProjectOpts, projects []*projects.Project) (
|
||||
*projects.Project, error) {
|
||||
i, err := fzf.Find(projects,
|
||||
func(i int) string {
|
||||
// Display the project along with its aliases
|
||||
@ -162,16 +162,16 @@ func fzfPreviewWindow(i, w, h int) string {
|
||||
return cache.ProjectString(p)
|
||||
}
|
||||
|
||||
func filterProjectsWithGitlabs(projects []*remotes.Project, gitlabs ...string) []*remotes.Project {
|
||||
filteredProjects := make([]*remotes.Project, 0, len(projects))
|
||||
func filterProjectsWithGitlabs(gitProjects []*projects.Project, gitlabs ...string) []*projects.Project {
|
||||
filteredProjects := make([]*projects.Project, 0, len(gitProjects))
|
||||
if len(gitlabs) > 0 {
|
||||
for _, p := range projects {
|
||||
for _, p := range gitProjects {
|
||||
if slices.Contains(gitlabs, p.Remote) {
|
||||
filteredProjects = append(filteredProjects, p)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
filteredProjects = projects
|
||||
filteredProjects = gitProjects
|
||||
}
|
||||
return filteredProjects
|
||||
}
|
||||
|
Reference in New Issue
Block a user