// Copyright 2023 Brian Newman. All rights reserved. /* Perform a global search & replace across multiple files. */ package main import ( "bytes" "os" UI "go.cdmnky.io/v2/ui" ) var ( ui *UI.UI appname = "replace" version = "x.y.z" build = "yyyy.mm.dd" ) func main() { // ----------------------------------------------------------------------------- ui = UI.New(appname, version, build) ui.Param.Add("--search", "string to search for", "", "y", "n") ui.Param.Add("--replace", "string to replace with", "", "y", "n") err := ui.Parse(os.Args) if err != nil { ui.Errorln(err) os.Exit(1) } searchFor := ui.Param.String("--search") replaceWith := ui.Param.String("--replace") ui.Banner() for _, filename := range ui.Param.Other() { ui.Outln(filename) data, err := os.ReadFile(filename) if err != nil { ui.Errorln(err) os.Exit(1) } fs, err := os.Stat(filename) if err != nil { ui.Errorln(err) os.Exit(1) } data = bytes.Replace(data, []byte(searchFor), []byte(replaceWith), -1) os.WriteFile(filename, data, fs.Mode().Perm()) } }