Add a skip field to the repository configuration
This commit is contained in:
parent
62dadc53bf
commit
19e68df732
@ -139,6 +139,11 @@ func (g *GitRepositoryManager) runCommand(cmd commands.Command) {
|
||||
|
||||
var wg sync.WaitGroup
|
||||
for _, repo := range g.configuration.Repositories {
|
||||
|
||||
if repo.Skip && !g.cliArguments.IgnoreSkipped {
|
||||
continue
|
||||
}
|
||||
|
||||
wg.Add(1)
|
||||
|
||||
go func(r config.RepositoryConfig) {
|
||||
|
@ -371,3 +371,63 @@ func TestDescribeStatusNoChangeColor(t *testing.T) {
|
||||
|
||||
describeStatus(status)
|
||||
}
|
||||
|
||||
func TestSkipRepository(t *testing.T) {
|
||||
grm := GitRepositoryManager{
|
||||
cliArguments: config.CliArguments{
|
||||
LimitToTags: []string{"example"},
|
||||
Routines: 10,
|
||||
},
|
||||
configuration: config.Configuration{
|
||||
Repositories: []config.RepositoryConfig{
|
||||
{Name: "example1"},
|
||||
{Name: "example2", Skip: true},
|
||||
{Name: "example3"},
|
||||
},
|
||||
},
|
||||
}
|
||||
fakeCommand := FakeCommandToTest{
|
||||
triggerError: false,
|
||||
triggerChanged: false,
|
||||
}
|
||||
emt := ExpectedMessageTester{
|
||||
expectedMessages: []string{
|
||||
"Repository \"example1\": response from fake command\n",
|
||||
"Repository \"example3\": response from fake command\n",
|
||||
},
|
||||
}
|
||||
echo.Color(false)
|
||||
echo.Output(emt)
|
||||
grm.runCommand(fakeCommand)
|
||||
}
|
||||
|
||||
func TestSkipRepositoryWithIgnore(t *testing.T) {
|
||||
grm := GitRepositoryManager{
|
||||
cliArguments: config.CliArguments{
|
||||
LimitToTags: []string{"example"},
|
||||
Routines: 10,
|
||||
IgnoreSkipped: true,
|
||||
},
|
||||
configuration: config.Configuration{
|
||||
Repositories: []config.RepositoryConfig{
|
||||
{Name: "example1"},
|
||||
{Name: "example2", Skip: true},
|
||||
{Name: "example3"},
|
||||
},
|
||||
},
|
||||
}
|
||||
fakeCommand := FakeCommandToTest{
|
||||
triggerError: false,
|
||||
triggerChanged: false,
|
||||
}
|
||||
emt := ExpectedMessageTester{
|
||||
expectedMessages: []string{
|
||||
"Repository \"example1\": response from fake command\n",
|
||||
"Repository \"example2\": response from fake command\n",
|
||||
"Repository \"example3\": response from fake command\n",
|
||||
},
|
||||
}
|
||||
echo.Color(false)
|
||||
echo.Output(emt)
|
||||
grm.runCommand(fakeCommand)
|
||||
}
|
||||
|
@ -53,6 +53,10 @@ func ParseCliArguments(name, description string, arguments []string) (CliArgumen
|
||||
Help: "Determine how many tasks can run simultaneously",
|
||||
})
|
||||
|
||||
ignoreSkipped := parser.Flag("", "ignore-skip-flag", &argparse.Options{
|
||||
Help: "Run selected command for all repositories with ignoring the skip flag",
|
||||
})
|
||||
|
||||
if err := parser.Parse(arguments); err != nil {
|
||||
return CliArguments{}, errors.New(parser.Usage("Please follow this help"))
|
||||
}
|
||||
@ -74,5 +78,6 @@ func ParseCliArguments(name, description string, arguments []string) (CliArgumen
|
||||
LimitToName: *limitName,
|
||||
LimitToTags: *limitTags,
|
||||
Routines: *limitRoutines,
|
||||
IgnoreSkipped: *ignoreSkipped,
|
||||
}, nil
|
||||
}
|
||||
|
@ -7,9 +7,10 @@ type Configuration struct {
|
||||
|
||||
type RepositoryConfig struct {
|
||||
Name string `yaml:",omitempty"`
|
||||
Src string `yaml:",omitempty"`
|
||||
Src string
|
||||
Dest string `yaml:",omitempty"`
|
||||
Tags []string `yaml:",omitempty"`
|
||||
Skip bool
|
||||
}
|
||||
|
||||
type CliArguments struct {
|
||||
@ -21,4 +22,5 @@ type CliArguments struct {
|
||||
LimitToName string
|
||||
LimitToTags []string
|
||||
Routines int
|
||||
IgnoreSkipped bool
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user