func()

in pkg/fix_yaml_transform.go [34:66]


func (y *YamlTransformFix) Apply() error {
	fs := FsFactory()
	yf, err := afero.ReadFile(fs, y.FilePath)
	if err != nil {
		return fmt.Errorf("error on reading yaml file %s, %+v fix.%s.%s %s", y.FilePath, err, y.Type(), y.Name(), y.HclBlock().Range().String())
	}
	root := new(yaml.Node)
	err = yaml.Unmarshal(yf, root)
	if err != nil {
		return fmt.Errorf("error on ummarshal yaml file %s, %+v fix.%s.%s %s", y.FilePath, err, y.Type(), y.Name(), y.HclBlock().Range().String())
	}
	var ops []splice.Op
	for _, t := range y.Transform {
		target, findErr := yptr.Find(root, t.YamlPath)
		if findErr != nil {
			err = multierror.Append(err, findErr)
			continue
		}
		ops = append(ops, yamled.Node(target).With(t.StringValue))
	}
	if err != nil {
		return fmt.Errorf("error on finding yaml node, %+v fix.%s.%s %s", err, y.Type(), y.Name(), y.HclBlock().Range().String())
	}
	out, _, err := transform.Bytes(yamled.T(ops...), yf)
	if err != nil {
		return fmt.Errorf("error on transforming yaml node, %+v fix.%s.%s %s", err, y.Type(), y.Name(), y.HclBlock().Range().String())
	}
	err = afero.WriteFile(fs, y.FilePath, out, 0600)
	if err != nil {
		return fmt.Errorf("error on writing yaml file %s, %+v fix.%s.%s %s", y.FilePath, err, y.Type(), y.Name(), y.HclBlock().Range().String())
	}
	return nil
}