mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
Setters with subpackages
This commit is contained in:
@@ -32,16 +32,20 @@ type FieldSetter struct {
|
||||
|
||||
OpenAPIPath string
|
||||
|
||||
OpenAPIFileName string
|
||||
|
||||
ResourcesPath string
|
||||
|
||||
RecurseSubPackages bool
|
||||
}
|
||||
|
||||
func (fs *FieldSetter) Filter(input []*yaml.RNode) ([]*yaml.RNode, error) {
|
||||
fs.Count, _ = fs.Set(fs.OpenAPIPath, fs.ResourcesPath)
|
||||
fs.Count, _ = fs.Set()
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Set updates the OpenAPI definitions and resources with the new setter value
|
||||
func (fs FieldSetter) Set(openAPIPath, resourcesPath string) (int, error) {
|
||||
func (fs FieldSetter) Set() (int, error) {
|
||||
// Update the OpenAPI definitions
|
||||
soa := setters2.SetOpenAPI{
|
||||
Name: fs.Name,
|
||||
@@ -55,30 +59,30 @@ func (fs FieldSetter) Set(openAPIPath, resourcesPath string) (int, error) {
|
||||
// at to get the value and set it to resource files, but if there is error
|
||||
// after updating openAPI file and while updating resources, the openAPI
|
||||
// file should be reverted, as set operation failed
|
||||
stat, err := os.Stat(openAPIPath)
|
||||
stat, err := os.Stat(fs.OpenAPIPath)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
curOpenAPI, err := ioutil.ReadFile(openAPIPath)
|
||||
curOpenAPI, err := ioutil.ReadFile(fs.OpenAPIPath)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// write the new input value to openAPI file
|
||||
if err := soa.UpdateFile(openAPIPath); err != nil {
|
||||
if err := soa.UpdateFile(fs.OpenAPIPath); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Load the updated definitions
|
||||
if err := openapi.AddSchemaFromFile(openAPIPath); err != nil {
|
||||
if err := openapi.AddSchemaFromFile(fs.OpenAPIPath); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Update the resources with the new value
|
||||
// Set NoDeleteFiles to true as SetAll will return only the nodes of files which should be updated and
|
||||
// hence, rest of the files should not be deleted
|
||||
inout := &kio.LocalPackageReadWriter{PackagePath: resourcesPath, NoDeleteFiles: true}
|
||||
inout := &kio.LocalPackageReadWriter{PackagePath: fs.ResourcesPath, NoDeleteFiles: true, PackageFileName: fs.OpenAPIFileName}
|
||||
s := &setters2.Set{Name: fs.Name}
|
||||
err = kio.Pipeline{
|
||||
Inputs: []kio.Reader{inout},
|
||||
@@ -88,7 +92,7 @@ func (fs FieldSetter) Set(openAPIPath, resourcesPath string) (int, error) {
|
||||
|
||||
// revert openAPI file if set operation fails
|
||||
if err != nil {
|
||||
if writeErr := ioutil.WriteFile(openAPIPath, curOpenAPI, stat.Mode().Perm()); writeErr != nil {
|
||||
if writeErr := ioutil.WriteFile(fs.OpenAPIPath, curOpenAPI, stat.Mode().Perm()); writeErr != nil {
|
||||
return 0, writeErr
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user