Files
actions-sync/src/commonflags.go
2020-09-25 15:31:52 -04:00

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 != ""
}