in cmd/apply.go [27:85]
func applyFunc(auto *bool) func(*cobra.Command, []string) error {
return func(c *cobra.Command, args []string) error {
varFlags, err := varFlags(os.Args)
if err != nil {
return err
}
var cfgDir string
if len(args) == 0 {
cfgDir = "."
} else {
cfgDir = args[0]
}
configPath, cleaner, err := getConfigFolder(cfgDir, c.Context())
if cleaner != nil {
defer cleaner()
}
if err != nil {
return fmt.Errorf("error getting config %s: %+v", cfgDir, err)
}
pwd, err := os.Getwd()
if err != nil {
return fmt.Errorf("error getting os wd: %+v", err)
}
config, err := pkg.BuildGreptConfig(pwd, configPath, c.Context(), varFlags)
if err != nil {
return fmt.Errorf("error parsing config: %s\n", err.Error())
}
plan, err := pkg.RunGreptPlan(config)
if err != nil {
return fmt.Errorf("Error generating plan: %s\n", err.Error())
}
if len(plan.FailedRules) == 0 {
fmt.Println("All rule checks successful, nothing to do.")
return nil
}
fmt.Println(plan.String())
if !*auto {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Do you want to apply this plan? Only `yes` would be accepted. (yes/no): ")
text, _ := reader.ReadString('\n')
text = strings.ToLower(strings.TrimSpace(text))
if text != "yes" {
return nil
}
}
err = plan.Apply()
if err != nil {
return fmt.Errorf("error applying plan: %s\n", err.Error())
}
fmt.Println("Plan applied successfully.")
return nil
}
}