And use it to make our stringer invocations match the existing code. Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>main
parent
0ec9040c5e
commit
4dbbd0aa4a
@ -0,0 +1,77 @@ |
||||
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Program addlicense adds a license header to a file.
|
||||
// It is intended for use with 'go generate',
|
||||
// so it has a slightly weird usage.
|
||||
package main |
||||
|
||||
import ( |
||||
"flag" |
||||
"fmt" |
||||
"os" |
||||
"os/exec" |
||||
) |
||||
|
||||
var ( |
||||
year = flag.Int("year", 0, "copyright year") |
||||
file = flag.String("file", "", "file to modify") |
||||
) |
||||
|
||||
func usage() { |
||||
fmt.Fprintf(os.Stderr, ` |
||||
usage: addlicense -year YEAR -file FILE <subcommand args...> |
||||
`[1:]) |
||||
|
||||
flag.PrintDefaults() |
||||
fmt.Fprintf(os.Stderr, ` |
||||
addlicense adds a Tailscale license to the beginning of file, |
||||
using year as the copyright year. |
||||
|
||||
It is intended for use with 'go generate', so it also runs a subcommand, |
||||
which presumably creates the file. |
||||
|
||||
Sample usage: |
||||
|
||||
addlicense -year 2021 -file pull_strings.go stringer -type=pull |
||||
`[1:]) |
||||
os.Exit(2) |
||||
} |
||||
|
||||
func main() { |
||||
flag.Usage = usage |
||||
flag.Parse() |
||||
if len(flag.Args()) == 0 { |
||||
flag.Usage() |
||||
} |
||||
cmd := exec.Command(flag.Arg(0), flag.Args()[1:]...) |
||||
cmd.Stdout = os.Stdout |
||||
cmd.Stderr = os.Stderr |
||||
err := cmd.Run() |
||||
check(err) |
||||
b, err := os.ReadFile(*file) |
||||
check(err) |
||||
f, err := os.OpenFile(*file, os.O_TRUNC|os.O_WRONLY, 0644) |
||||
check(err) |
||||
_, err = fmt.Fprintf(f, license, *year) |
||||
check(err) |
||||
_, err = f.Write(b) |
||||
check(err) |
||||
err = f.Close() |
||||
check(err) |
||||
} |
||||
|
||||
func check(err error) { |
||||
if err != nil { |
||||
fmt.Fprintln(os.Stderr, err) |
||||
os.Exit(1) |
||||
} |
||||
} |
||||
|
||||
var license = ` |
||||
// Copyright (c) %d Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
`[1:] |
||||
Loading…
Reference in new issue