bin/replace.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
// replace -- in-place edit a post // usage: replace [old string] [new string] package main import ( "fmt" "log" "os" "strings" ) const dir = "pages/blog/" func main() { if len(os.Args) != 3 { fmt.Println("usage: replace [old string] [new string]") os.Exit(1) } oldStr, newStr := os.Args[1], os.Args[2] posts, err := os.ReadDir(dir) if err != nil { log.Fatalln(err) } for _, p := range posts { path := dir + p.Name() input, err := os.ReadFile(path) if err != nil { log.Fatalln(err) } lines := strings.Split(string(input), "\n") for i, line := range lines { if strings.Contains(line, oldStr) { line = strings.ReplaceAll(line, oldStr, newStr) lines[i] = line } } output := strings.Join(lines, "\n") err = os.WriteFile(path, []byte(output), 644) if err != nil { log.Fatalln(err) } } } |