diff --git a/main.go b/main.go index 9699d68..6755a0d 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "cook/utils" "github.com/go-git/go-git/v5" + "gopkg.in/yaml.v3" logger "git.site.quack-lab.dev/dave/cylogger" ) @@ -63,8 +64,9 @@ func main() { // The plan is: // Load all commands commands, err := utils.LoadCommands(args) - if err != nil { + if err != nil || len(commands) == 0 { logger.Error("Failed to load commands: %v", err) + CreateExampleConfig() flag.Usage() return } @@ -250,6 +252,49 @@ func main() { } } +func CreateExampleConfig() { + commands := []utils.ModifyCommand{ + { + Name: "DoubleNumericValues", + Regex: "(\\d+)", + Lua: "v1 * 2", + Files: []string{"data/*.xml"}, + LogLevel: "INFO", + }, + { + Name: "UpdatePrices", + Regex: "price=\"(\\d+)\"", + Lua: "if num(v1) < 100 then return v1 * 1.5 else return v1 end", + Files: []string{"items/*.xml", "shop/*.xml"}, + Git: true, + LogLevel: "DEBUG", + }, + { + Name: "IsolatedTagUpdate", + Regex: "(.*?)", + Lua: "string.upper(s1)", + Files: []string{"config.xml"}, + Isolate: true, + NoDedup: true, + LogLevel: "TRACE", + }, + } + + data, err := yaml.Marshal(commands) + if err != nil { + logger.Error("Failed to marshal example config: %v", err) + return + } + + err = os.WriteFile("example_cook.yml", data, 0644) + if err != nil { + logger.Error("Failed to write example_cook.yml: %v", err) + return + } + + logger.Info("Wrote example_cook.yml") +} + func RunOtherCommands(file string, fileDataStr string, association utils.FileCommandAssociation, fileMutex *sync.Mutex, commandLoggers map[string]*logger.Logger) (string, error) { // Aggregate all the modifications and execute them modifications := []utils.ReplaceCommand{}