32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package src
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// flags common to pull, push and sync operations
|
|
type CommonFlags struct {
|
|
CacheDir, RepoName, RepoNameList, RepoNameListFile string
|
|
}
|
|
|
|
func (f *CommonFlags) Init(cmd *cobra.Command) {
|
|
cmd.Flags().StringVar(&f.CacheDir, "cache-dir", "", "Directory containing the repositories cache created by the `pull` command")
|
|
_ = cmd.MarkFlagRequired("cache-dir")
|
|
|
|
cmd.Flags().StringVar(&f.RepoName, "repo-name", "", "Single repository name to pull")
|
|
cmd.Flags().StringVar(&f.RepoNameList, "repo-name-list", "", "Comma delimited list of repository names to pull")
|
|
cmd.Flags().StringVar(&f.RepoNameListFile, "repo-name-list-file", "", "Path to file containing a list of repository names to pull")
|
|
}
|
|
|
|
func (f *CommonFlags) Validate(reposRequired bool) Validations {
|
|
var validations Validations
|
|
if reposRequired && !f.HasAtLeastOneRepoFlag() {
|
|
validations = append(validations, "one of --repo-name, --repo-name-list, --repo-name-list-file must be set")
|
|
}
|
|
return validations
|
|
}
|
|
|
|
func (f *CommonFlags) HasAtLeastOneRepoFlag() bool {
|
|
return f.RepoName != "" || f.RepoNameList != "" || f.RepoNameListFile != ""
|
|
}
|