Skip to content

Commit f997640

Browse files
committed
solve some review comments
1 parent caaff9a commit f997640

File tree

11 files changed

+86
-102
lines changed

11 files changed

+86
-102
lines changed

internal/cobraext/flags.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ const (
142142
FilterCodeOwnerFlagName = "code-owner"
143143
FilterCodeOwnerFlagDescription = "code owners to filter by (comma-separated values)"
144144

145-
FilterIntegrationTypeFlagName = "integration-type"
146-
FilterIntegrationTypeFlagDescription = "integration types to filter by (comma-separated values)"
145+
FilterPackageTypeFlagName = "package-type"
146+
FilterPackageTypeFlagDescription = "package types to filter by (comma-separated values)"
147147

148148
FilterInputFlagName = "input"
149149
FilterInputFlagDescription = "name of the inputs to filter by (comma-separated values)"
@@ -155,14 +155,14 @@ const (
155155
FilterOutputPackageNameFlagShorthand = "p"
156156
FilterOutputPackageNameFlagDescription = "print the package name instead of the directory name in the output"
157157

158-
FilterPackagesFlagName = "package-name"
158+
FilterPackagesFlagName = "packages"
159159
FilterPackagesFlagDescription = "package names to filter by (comma-separated values)"
160160

161161
FilterSpecVersionFlagName = "spec-version"
162162
FilterSpecVersionFlagDescription = "Package spec version to filter by (semver)"
163163

164164
ForeachPoolSizeFlagName = "parallel"
165-
ForeachPoolSizeFlagDescription = "number of packages to execute in parallel (defaults to serial execution)"
165+
ForeachPoolSizeFlagDescription = "Number of subcommands to execute in parallel (defaults to serial execution)"
166166

167167
GenerateTestResultFlagName = "generate"
168168
GenerateTestResultFlagDescription = "generate test result file"

internal/filter/category_flag.go renamed to internal/filter/category.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
type CategoryFlag struct {
1515
FilterFlagBase
1616

17-
values map[string]struct{}
17+
values []string
1818
}
1919

2020
func (f *CategoryFlag) Parse(cmd *cobra.Command) error {
@@ -26,7 +26,8 @@ func (f *CategoryFlag) Parse(cmd *cobra.Command) error {
2626
return nil
2727
}
2828

29-
f.values = splitAndTrim(category, ",")
29+
categories := splitAndTrim(category, ",")
30+
f.values = categories
3031
f.isApplied = true
3132
return nil
3233
}

internal/filter/codeowner_flag.go renamed to internal/filter/codeowner.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616

1717
type CodeOwnerFlag struct {
1818
FilterFlagBase
19-
values map[string]struct{}
19+
values []string
2020
}
2121

2222
func (f *CodeOwnerFlag) Parse(cmd *cobra.Command) error {
@@ -37,7 +37,7 @@ func (f *CodeOwnerFlag) Validate() error {
3737
validator := tui.Validator{Cwd: "."}
3838

3939
if f.values != nil {
40-
for value := range f.values {
40+
for _, value := range f.values {
4141
if err := validator.GithubOwner(value); err != nil {
4242
return fmt.Errorf("invalid code owner: %s: %w", value, err)
4343
}

internal/filter/input_flag.go renamed to internal/filter/input.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type InputFlag struct {
1515
FilterFlagBase
1616

1717
// flag specific fields
18-
values map[string]struct{}
18+
values []string
1919
}
2020

2121
func (f *InputFlag) Parse(cmd *cobra.Command) error {

internal/filter/integrationtype_flag.go

Lines changed: 0 additions & 66 deletions
This file was deleted.

internal/filter/packagename_flag.go renamed to internal/filter/packagename.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (f *PackageNameFlag) Parse(cmd *cobra.Command) error {
2727
}
2828

2929
patterns := splitAndTrim(packageNamePatterns, ",")
30-
for patternString := range patterns {
30+
for _, patternString := range patterns {
3131
pattern, err := glob.Compile(patternString)
3232
if err != nil {
3333
return fmt.Errorf("invalid package name pattern: %s: %w", patternString, err)

internal/filter/packagetype.go

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
2+
// or more contributor license agreements. Licensed under the Elastic License;
3+
// you may not use this file except in compliance with the Elastic License.
4+
5+
package filter
6+
7+
import (
8+
"github.com/spf13/cobra"
9+
10+
"github.com/elastic/elastic-package/internal/cobraext"
11+
"github.com/elastic/elastic-package/internal/packages"
12+
)
13+
14+
type PackageTypeFlag struct {
15+
FilterFlagBase
16+
17+
// flag specific fields
18+
values []string
19+
}
20+
21+
func (f *PackageTypeFlag) Parse(cmd *cobra.Command) error {
22+
packageTypes, err := cmd.Flags().GetString(cobraext.FilterPackageTypeFlagName)
23+
if err != nil {
24+
return cobraext.FlagParsingError(err, cobraext.FilterPackageTypeFlagName)
25+
}
26+
if packageTypes == "" {
27+
return nil
28+
}
29+
f.values = splitAndTrim(packageTypes, ",")
30+
f.isApplied = true
31+
return nil
32+
}
33+
34+
func (f *PackageTypeFlag) Validate() error {
35+
return nil
36+
}
37+
38+
func (f *PackageTypeFlag) Matches(dirName string, manifest *packages.PackageManifest) bool {
39+
return hasAnyMatch(f.values, []string{manifest.Type})
40+
}
41+
42+
func (f *PackageTypeFlag) ApplyTo(pkgs []packages.PackageDirNameAndManifest) ([]packages.PackageDirNameAndManifest, error) {
43+
filtered := make([]packages.PackageDirNameAndManifest, 0, len(pkgs))
44+
for _, pkg := range pkgs {
45+
if f.Matches(pkg.DirName, pkg.Manifest) {
46+
filtered = append(filtered, pkg)
47+
}
48+
}
49+
return filtered, nil
50+
}
51+
52+
func initPackageTypeFlag() *PackageTypeFlag {
53+
return &PackageTypeFlag{
54+
FilterFlagBase: FilterFlagBase{
55+
name: cobraext.FilterPackageTypeFlagName,
56+
description: cobraext.FilterPackageTypeFlagDescription,
57+
shorthand: "",
58+
defaultValue: "",
59+
},
60+
}
61+
}

internal/filter/registry.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ var registry = []Filter{
1818
initCategoryFlag(),
1919
initCodeOwnerFlag(),
2020
initInputFlag(),
21-
initIntegrationTypeFlag(),
2221
initPackageNameFlag(),
22+
initPackageTypeFlag(),
2323
initSpecVersionFlag(),
2424
}
2525

@@ -83,6 +83,7 @@ func (r *FilterRegistry) Execute() (filtered []packages.PackageDirNameAndManifes
8383

8484
filtered = pkgs
8585
for _, filter := range r.filters {
86+
logger.Infof("Applying for %d packages", len(filtered))
8687
filtered, err = filter.ApplyTo(filtered)
8788
if err != nil {
8889
errors = append(errors, err)
File renamed without changes.

internal/filter/type.go

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,16 @@
55
package filter
66

77
import (
8+
"fmt"
9+
810
"github.com/spf13/cobra"
911

1012
"github.com/elastic/elastic-package/internal/packages"
1113
)
1214

1315
// FilterFlag defines the basic interface for filter flags.
1416
type FilterFlag interface {
15-
Name() string
16-
Description() string
17-
Shorthand() string
18-
DefaultValue() string
19-
17+
String() string
2018
Register(cmd *cobra.Command)
2119
IsApplied() bool
2220
}
@@ -44,24 +42,12 @@ type FilterFlagBase struct {
4442
isApplied bool
4543
}
4644

47-
func (f *FilterFlagBase) Name() string {
48-
return f.name
49-
}
50-
51-
func (f *FilterFlagBase) Description() string {
52-
return f.description
53-
}
54-
55-
func (f *FilterFlagBase) Shorthand() string {
56-
return f.shorthand
57-
}
58-
59-
func (f *FilterFlagBase) DefaultValue() string {
60-
return f.defaultValue
45+
func (f *FilterFlagBase) String() string {
46+
return fmt.Sprintf("name=%s defaultValue=%s applied=%v", f.name, f.defaultValue, f.isApplied)
6147
}
6248

6349
func (f *FilterFlagBase) Register(cmd *cobra.Command) {
64-
cmd.Flags().StringP(f.Name(), f.Shorthand(), f.DefaultValue(), f.Description())
50+
cmd.Flags().StringP(f.name, f.shorthand, f.defaultValue, f.description)
6551
}
6652

6753
func (f *FilterFlagBase) IsApplied() bool {

0 commit comments

Comments
 (0)