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 }