Simplify the cmd/config ext package

This commit is contained in:
Morten Torkildsen
2020-09-14 09:15:21 -07:00
parent 0770661b2a
commit cfab28a5ff
14 changed files with 42 additions and 120 deletions

View File

@@ -3,22 +3,8 @@
package ext package ext
import ( // KRMFileName returns the name of the KRM file. KRM file determines package
"path/filepath" // boundaries and contains the openapi information for a package.
) var KRMFileName = func() string {
return "Krmfile"
// GetOpenAPIFile returns the path to the file containing supplementary OpenAPI definitions.
// Maybe be overridden to configure which file to read OpenAPI definitions from.
var GetOpenAPIFile = func(args []string) (string, error) {
return filepath.Join(args[0], "Krmfile"), nil
}
// OpenAPIFileName returns the name of the file with openAPI definitions
// uses OpenAPIFile function to derive it
func OpenAPIFileName() (string, error) {
openAPIFileName, err := GetOpenAPIFile([]string{"."})
if err != nil {
return "", err
}
return openAPIFileName, nil
} }

View File

@@ -85,14 +85,14 @@ func (r *AnnotateRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *AnnotateRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *AnnotateRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName() rw := &kio.LocalPackageReadWriter{
if err != nil { PackagePath: pkgPath,
return err NoDeleteFiles: true,
PackageFileName: ext.KRMFileName(),
} }
rw := &kio.LocalPackageReadWriter{PackagePath: pkgPath, NoDeleteFiles: true, PackageFileName: openAPIFileName}
input := []kio.Reader{rw} input := []kio.Reader{rw}
output := []kio.Writer{rw} output := []kio.Writer{rw}
err = kio.Pipeline{ err := kio.Pipeline{
Inputs: input, Inputs: input,
Filters: []kio.Filter{r}, Filters: []kio.Filter{r},
Outputs: output, Outputs: output,

View File

@@ -109,12 +109,7 @@ func (r *CatRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *CatRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *CatRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName() input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
if err != nil {
return err
}
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: openAPIFileName}
outputs, err := r.out(w) outputs, err := r.out(w)
if err != nil { if err != nil {
return err return err

View File

@@ -205,10 +205,6 @@ func (r *CreateSetterRunner) createSetter(c *cobra.Command, args []string) error
} }
func (r *CreateSetterRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *CreateSetterRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.CreateSetter = settersutil.SetterCreator{ r.CreateSetter = settersutil.SetterCreator{
Name: r.CreateSetter.Name, Name: r.CreateSetter.Name,
SetBy: r.CreateSetter.SetBy, SetBy: r.CreateSetter.SetBy,
@@ -219,12 +215,12 @@ func (r *CreateSetterRunner) executeCmd(w io.Writer, pkgPath string) error {
FieldValue: r.CreateSetter.FieldValue, FieldValue: r.CreateSetter.FieldValue,
Required: r.CreateSetter.Required, Required: r.CreateSetter.Required,
RecurseSubPackages: r.CreateSetter.RecurseSubPackages, RecurseSubPackages: r.CreateSetter.RecurseSubPackages,
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
OpenAPIPath: filepath.Join(pkgPath, openAPIFileName), OpenAPIPath: filepath.Join(pkgPath, ext.KRMFileName()),
ResourcesPath: pkgPath, ResourcesPath: pkgPath,
} }
err = r.CreateSetter.Create() err := r.CreateSetter.Create()
if err != nil { if err != nil {
// return err if RecurseSubPackages is false // return err if RecurseSubPackages is false
if !r.CreateSetter.RecurseSubPackages { if !r.CreateSetter.RecurseSubPackages {

View File

@@ -65,22 +65,18 @@ func (r *CreateSubstitutionRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *CreateSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *CreateSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.CreateSubstitution = settersutil.SubstitutionCreator{ r.CreateSubstitution = settersutil.SubstitutionCreator{
Name: r.CreateSubstitution.Name, Name: r.CreateSubstitution.Name,
FieldName: r.CreateSubstitution.FieldName, FieldName: r.CreateSubstitution.FieldName,
FieldValue: r.CreateSubstitution.FieldValue, FieldValue: r.CreateSubstitution.FieldValue,
RecurseSubPackages: r.CreateSubstitution.RecurseSubPackages, RecurseSubPackages: r.CreateSubstitution.RecurseSubPackages,
Pattern: r.CreateSubstitution.Pattern, Pattern: r.CreateSubstitution.Pattern,
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
OpenAPIPath: filepath.Join(pkgPath, openAPIFileName), OpenAPIPath: filepath.Join(pkgPath, ext.KRMFileName()),
ResourcesPath: pkgPath, ResourcesPath: pkgPath,
} }
err = r.CreateSubstitution.Create() err := r.CreateSubstitution.Create()
if err != nil { if err != nil {
// return err if RecurseSubPackages is false // return err if RecurseSubPackages is false
if !r.CreateSubstitution.RecurseSubPackages { if !r.CreateSubstitution.RecurseSubPackages {

View File

@@ -47,14 +47,10 @@ type DeleteSetterRunner struct {
} }
func (r *DeleteSetterRunner) preRunE(c *cobra.Command, args []string) error { func (r *DeleteSetterRunner) preRunE(c *cobra.Command, args []string) error {
var err error
r.DeleteSetter.Name = args[1] r.DeleteSetter.Name = args[1]
r.DeleteSetter.DefinitionPrefix = fieldmeta.SetterDefinitionPrefix r.DeleteSetter.DefinitionPrefix = fieldmeta.SetterDefinitionPrefix
r.OpenAPIFile, err = ext.GetOpenAPIFile(args) r.OpenAPIFile = filepath.Join(args[0], ext.KRMFileName())
if err != nil {
return err
}
return nil return nil
} }
@@ -75,20 +71,17 @@ func (r *DeleteSetterRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *DeleteSetterRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *DeleteSetterRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.DeleteSetter = settersutil.DeleterCreator{ r.DeleteSetter = settersutil.DeleterCreator{
Name: r.DeleteSetter.Name, Name: r.DeleteSetter.Name,
DefinitionPrefix: fieldmeta.SetterDefinitionPrefix, DefinitionPrefix: fieldmeta.SetterDefinitionPrefix,
RecurseSubPackages: r.RecurseSubPackages, RecurseSubPackages: r.RecurseSubPackages,
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
OpenAPIPath: filepath.Join(pkgPath, openAPIFileName), OpenAPIPath: filepath.Join(pkgPath, ext.KRMFileName()),
ResourcesPath: pkgPath, ResourcesPath: pkgPath,
} }
err = r.DeleteSetter.Delete() err := r.DeleteSetter.Delete()
if err != nil { if err != nil {
// return err if RecurseSubPackages is false // return err if RecurseSubPackages is false
if !r.DeleteSetter.RecurseSubPackages { if !r.DeleteSetter.RecurseSubPackages {

View File

@@ -43,14 +43,10 @@ type DeleteSubstitutionRunner struct {
} }
func (r *DeleteSubstitutionRunner) preRunE(c *cobra.Command, args []string) error { func (r *DeleteSubstitutionRunner) preRunE(c *cobra.Command, args []string) error {
var err error
r.DeleteSubstitution.Name = args[1] r.DeleteSubstitution.Name = args[1]
r.DeleteSubstitution.DefinitionPrefix = fieldmeta.SubstitutionDefinitionPrefix r.DeleteSubstitution.DefinitionPrefix = fieldmeta.SubstitutionDefinitionPrefix
r.OpenAPIFile, err = ext.GetOpenAPIFile(args) r.OpenAPIFile = filepath.Join(args[0], ext.KRMFileName())
if err != nil {
return err
}
return nil return nil
} }
@@ -71,20 +67,16 @@ func (r *DeleteSubstitutionRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *DeleteSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *DeleteSubstitutionRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.DeleteSubstitution = settersutil.DeleterCreator{ r.DeleteSubstitution = settersutil.DeleterCreator{
Name: r.DeleteSubstitution.Name, Name: r.DeleteSubstitution.Name,
DefinitionPrefix: fieldmeta.SubstitutionDefinitionPrefix, DefinitionPrefix: fieldmeta.SubstitutionDefinitionPrefix,
RecurseSubPackages: r.RecurseSubPackages, RecurseSubPackages: r.RecurseSubPackages,
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
OpenAPIPath: filepath.Join(pkgPath, openAPIFileName), OpenAPIPath: filepath.Join(pkgPath, ext.KRMFileName()),
ResourcesPath: pkgPath, ResourcesPath: pkgPath,
} }
err = r.DeleteSubstitution.Delete() err := r.DeleteSubstitution.Delete()
if err != nil { if err != nil {
// return err if RecurseSubPackages is false // return err if RecurseSubPackages is false
if !r.DeleteSubstitution.RecurseSubPackages { if !r.DeleteSubstitution.RecurseSubPackages {

View File

@@ -85,15 +85,11 @@ func (r *ListSettersRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *ListSettersRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *ListSettersRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.List = setters2.List{ r.List = setters2.List{
Name: r.List.Name, Name: r.List.Name,
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
} }
openAPIPath := filepath.Join(pkgPath, openAPIFileName) openAPIPath := filepath.Join(pkgPath, ext.KRMFileName())
if err := r.ListSetters(w, openAPIPath, pkgPath); err != nil { if err := r.ListSetters(w, openAPIPath, pkgPath); err != nil {
return err return err
} }

View File

@@ -108,7 +108,6 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error {
} }
} }
if setterVersion == "v2" { if setterVersion == "v2" {
var err error
r.Set.Name = args[1] r.Set.Name = args[1]
if valueFlagSet { if valueFlagSet {
r.Set.Value = r.Values[0] r.Set.Value = r.Values[0]
@@ -125,10 +124,7 @@ func (r *SetRunner) preRunE(c *cobra.Command, args []string) error {
r.Set.Description = r.Perform.Description r.Set.Description = r.Perform.Description
r.Set.SetBy = r.Perform.SetBy r.Set.SetBy = r.Perform.SetBy
r.OpenAPIFile, err = ext.GetOpenAPIFile(args) r.OpenAPIFile = filepath.Join(args[0], ext.KRMFileName())
if err != nil {
return err
}
} }
return nil return nil
} }
@@ -155,10 +151,6 @@ func (r *SetRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *SetRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *SetRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
r.Set = settersutil.FieldSetter{ r.Set = settersutil.FieldSetter{
Name: r.Set.Name, Name: r.Set.Name,
Value: r.Set.Value, Value: r.Set.Value,
@@ -166,8 +158,8 @@ func (r *SetRunner) executeCmd(w io.Writer, pkgPath string) error {
Description: r.Set.Description, Description: r.Set.Description,
SetBy: r.Set.SetBy, SetBy: r.Set.SetBy,
Count: 0, Count: 0,
OpenAPIPath: filepath.Join(pkgPath, openAPIFileName), OpenAPIPath: filepath.Join(pkgPath, ext.KRMFileName()),
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
ResourcesPath: pkgPath, ResourcesPath: pkgPath,
RecurseSubPackages: r.Set.RecurseSubPackages, RecurseSubPackages: r.Set.RecurseSubPackages,
} }

View File

@@ -69,14 +69,9 @@ func (r *CountRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *CountRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *CountRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName() input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
if err != nil {
return err
}
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: openAPIFileName} err := kio.Pipeline{
err = kio.Pipeline{
Inputs: []kio.Reader{input}, Inputs: []kio.Reader{input},
Outputs: r.out(w), Outputs: r.out(w),
}.Execute() }.Execute()

View File

@@ -96,16 +96,11 @@ func (r *FmtRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *FmtRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *FmtRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName()
if err != nil {
return err
}
rw := &kio.LocalPackageReadWriter{ rw := &kio.LocalPackageReadWriter{
NoDeleteFiles: true, NoDeleteFiles: true,
PackagePath: pkgPath, PackagePath: pkgPath,
KeepReaderAnnotations: r.KeepAnnotations, PackageFileName: openAPIFileName} KeepReaderAnnotations: r.KeepAnnotations, PackageFileName: ext.KRMFileName()}
err = kio.Pipeline{ err := kio.Pipeline{
Inputs: []kio.Reader{rw}, Filters: r.fmtFilters(), Outputs: []kio.Writer{rw}}.Execute() Inputs: []kio.Reader{rw}, Filters: r.fmtFilters(), Outputs: []kio.Writer{rw}}.Execute()
if err != nil { if err != nil {

View File

@@ -128,14 +128,9 @@ func (r *GrepRunner) runE(c *cobra.Command, args []string) error {
} }
func (r *GrepRunner) executeCmd(w io.Writer, pkgPath string) error { func (r *GrepRunner) executeCmd(w io.Writer, pkgPath string) error {
openAPIFileName, err := ext.OpenAPIFileName() input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: ext.KRMFileName()}
if err != nil {
return err
}
input := kio.LocalPackageReader{PackagePath: pkgPath, PackageFileName: openAPIFileName} err := kio.Pipeline{
err = kio.Pipeline{
Inputs: []kio.Reader{input}, Inputs: []kio.Reader{input},
Filters: []kio.Filter{r.GrepFilter}, Filters: []kio.Filter{r.GrepFilter},
Outputs: []kio.Writer{kio.ByteWriter{ Outputs: []kio.Writer{kio.ByteWriter{

View File

@@ -77,11 +77,7 @@ type TreeRunner struct {
func (r *TreeRunner) runE(c *cobra.Command, args []string) error { func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
var input kio.Reader var input kio.Reader
var root = "." var root = "."
openAPIFileName, err := ext.OpenAPIFileName() matchFilesGlob := append([]string{ext.KRMFileName()}, kio.DefaultMatch...)
if err != nil {
return err
}
matchFilesGlob := append([]string{openAPIFileName}, kio.DefaultMatch...)
if len(args) == 1 { if len(args) == 1 {
root = filepath.Clean(args[0]) root = filepath.Clean(args[0])
input = kio.LocalPackageReader{PackagePath: args[0], MatchFilesGlob: matchFilesGlob} input = kio.LocalPackageReader{PackagePath: args[0], MatchFilesGlob: matchFilesGlob}
@@ -163,7 +159,7 @@ func (r *TreeRunner) runE(c *cobra.Command, args []string) error {
Writer: c.OutOrStdout(), Writer: c.OutOrStdout(),
Fields: fields, Fields: fields,
Structure: kio.TreeStructure(r.structure), Structure: kio.TreeStructure(r.structure),
OpenAPIFileName: openAPIFileName, OpenAPIFileName: ext.KRMFileName(),
}}, }},
}.Execute()) }.Execute())
} }

View File

@@ -37,12 +37,7 @@ type executeCmdOnPkgs struct {
// executeCmdOnPkgs takes the function definition for a command to be executed on single package, applies that definition // executeCmdOnPkgs takes the function definition for a command to be executed on single package, applies that definition
// recursively on all the subpackages present in rootPkgPath if recurseSubPackages is true, else applies the command on rootPkgPath only // recursively on all the subpackages present in rootPkgPath if recurseSubPackages is true, else applies the command on rootPkgPath only
func (e executeCmdOnPkgs) execute() error { func (e executeCmdOnPkgs) execute() error {
openAPIFileName, err := ext.OpenAPIFileName() pkgsPaths, err := pathutil.DirsWithFile(e.rootPkgPath, ext.KRMFileName(), e.recurseSubPackages)
if err != nil {
return err
}
pkgsPaths, err := pathutil.DirsWithFile(e.rootPkgPath, openAPIFileName, e.recurseSubPackages)
if err != nil { if err != nil {
return err return err
} }
@@ -51,7 +46,7 @@ func (e executeCmdOnPkgs) execute() error {
// at this point, there are no openAPI files in the rootPkgPath // at this point, there are no openAPI files in the rootPkgPath
if e.needOpenAPI { if e.needOpenAPI {
// few executions need openAPI file to be present(ex: setters commands), if true throw an error // few executions need openAPI file to be present(ex: setters commands), if true throw an error
return errors.Errorf("unable to find %q in package %q", openAPIFileName, e.rootPkgPath) return errors.Errorf("unable to find %q in package %q", ext.KRMFileName(), e.rootPkgPath)
} }
// add root path for commands which doesn't need openAPI(ex: annotate, fmt) // add root path for commands which doesn't need openAPI(ex: annotate, fmt)
@@ -62,7 +57,7 @@ func (e executeCmdOnPkgs) execute() error {
pkgPath := pkgsPaths[i] pkgPath := pkgsPaths[i]
// Add schema present in openAPI file for current package // Add schema present in openAPI file for current package
if e.needOpenAPI { if e.needOpenAPI {
if err := openapi.AddSchemaFromFile(filepath.Join(pkgPath, openAPIFileName)); err != nil { if err := openapi.AddSchemaFromFile(filepath.Join(pkgPath, ext.KRMFileName())); err != nil {
return err return err
} }
} }
@@ -82,7 +77,7 @@ func (e executeCmdOnPkgs) execute() error {
// Delete schema present in openAPI file for current package // Delete schema present in openAPI file for current package
if e.needOpenAPI { if e.needOpenAPI {
if err := openapi.DeleteSchemaInFile(filepath.Join(pkgPath, openAPIFileName)); err != nil { if err := openapi.DeleteSchemaInFile(filepath.Join(pkgPath, ext.KRMFileName())); err != nil {
return err return err
} }
} }