mirror of
https://gitlab.com/cznic/sqlite.git
synced 2025-04-27 23:07:44 +00:00
65 lines
1.4 KiB
Go
65 lines
1.4 KiB
Go
// Copyright 2022 The Sqlite Authors. All rights reserved
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build ignore
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func fail(rc int, msg string, args ...interface{}) {
|
|
fmt.Fprintf(os.Stderr, msg, args...)
|
|
os.Exit(rc)
|
|
}
|
|
|
|
func main() {
|
|
if len(os.Args) != 3 {
|
|
fail(1, "expected 2 args: pattern and replacement\n")
|
|
}
|
|
|
|
pattern := os.Args[1]
|
|
replacement := os.Args[2]
|
|
if err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if info.IsDir() {
|
|
return nil
|
|
}
|
|
|
|
dir, file := filepath.Split(path)
|
|
if x := strings.Index(file, pattern); x >= 0 {
|
|
// pattern freebsd
|
|
// replacement netbsd
|
|
// file libc_freebsd_amd64.go
|
|
// replaced libc_netbsd_amd64.go
|
|
// 01234567890123456789
|
|
// 1
|
|
// x 5
|
|
file = file[:x] + replacement + file[x+len(pattern):]
|
|
dst := filepath.Join(dir, file)
|
|
b, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return fmt.Errorf("reading %s: %v", path, err)
|
|
}
|
|
|
|
if err := os.WriteFile(dst, b, 0640); err != nil {
|
|
return fmt.Errorf("writing %s: %v", dst, err)
|
|
}
|
|
fmt.Printf("%s -> %s\n", path, dst)
|
|
}
|
|
|
|
return nil
|
|
}); err != nil {
|
|
fail(1, "%s", err)
|
|
}
|
|
}
|