102 lines
1.9 KiB
Go
102 lines
1.9 KiB
Go
|
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
|
||
|
}
|