diff options
Diffstat (limited to 'doWITCOM.go')
| -rw-r--r-- | doWITCOM.go | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/doWITCOM.go b/doWITCOM.go new file mode 100644 index 0000000..221602a --- /dev/null +++ b/doWITCOM.go @@ -0,0 +1,101 @@ +package main + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "go.wit.com/log" +) + +func doWITCOM() { + pwd, err := os.Getwd() + if err != nil { + return + } + files, err := scanForGoFiles(pwd) + if err != nil { + return + } + + for _, file := range files { + addCommonHeader(file) + } +} + +// add a common header for WIT files + +func addCommonHeader(filename string) error { + // read in the .proto file + data, err := os.ReadFile(filename) + if err != nil { + log.Info("file read failed", filename, err) + return err + } + + pf, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) + defer pf.Close() + if err != nil { + log.Info("file open error. permissions?", filename, err) + return err + } + + var start bool = true + var found bool + + // drop the old copywrite lines + for _, line := range strings.Split(string(data), "\n") { + // first line must have WIT.COM + if strings.HasPrefix(line, "//") && start { + start = false + if strings.Contains(line, "WIT.COM") { + found = true + continue + } else { + fmt.Fprintln(pf, line) + } + } + + // dump every other comment + if strings.HasPrefix(line, "//") && found { + continue + } else { + fmt.Fprintln(pf, "// Copyright 2017-2025 WIT.COM Inc. All rights reserved.") + fmt.Fprintln(pf, "// Use of this source code is governed by the GPL 3.0") + fmt.Fprintln(pf, "") + fmt.Fprintln(pf, line) + found = false + } + fmt.Fprintln(pf, line) + } + + return nil +} + +// look for any .go files. do not enter directories +func scanForGoFiles(startDir string) ([]string, error) { + var files []string + err := filepath.Walk(startDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + // ignore the start dir + if startDir == path { + return nil + } + + if strings.HasSuffix(path, ".go") { + files = append(files, path) + } + + // don't go into any directories + if info.IsDir() { + return filepath.SkipDir + } + return nil + }) + + return files, err +} |
