tailscale/tstest/integration/gen_deps.go
Will Norris 947c14793a all: update tools that manage copyright headers
Update all code generation tools, and those that check for license
headers to use the new standard header.

Also update copyright statement in LICENSE file.

Fixes #6865

Signed-off-by: Will Norris <will@tailscale.com>
2023-01-27 15:36:29 -08:00

66 lines
1.5 KiB
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
//go:build ignore
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
"os"
"os/exec"
"strings"
)
func main() {
for _, goos := range []string{"windows", "linux", "darwin", "freebsd", "openbsd"} {
generate(goos)
}
}
func generate(goos string) {
var x struct {
Imports []string
}
cmd := exec.Command("go", "list", "-json", "tailscale.com/cmd/tailscaled")
cmd.Env = append(os.Environ(), "GOOS="+goos, "GOARCH=amd64")
j, err := cmd.Output()
if err != nil {
log.Fatalf("GOOS=%s GOARCH=amd64 %s: %v", goos, cmd, err)
}
if err := json.Unmarshal(j, &x); err != nil {
log.Fatal(err)
}
var out bytes.Buffer
out.WriteString(`// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
// Code generated by gen_deps.go; DO NOT EDIT.
package integration
import (
// And depend on a bunch of tailscaled innards, for Go's test caching.
// Otherwise cmd/go never sees that we depend on these packages'
// transitive deps when we run "go install tailscaled" in a child
// process and can cache a prior success when a dependency changes.
`)
for _, dep := range x.Imports {
if !strings.Contains(dep, ".") {
// Omit standard library deps.
continue
}
fmt.Fprintf(&out, "\t_ %q\n", dep)
}
fmt.Fprintf(&out, ")\n")
filename := fmt.Sprintf("tailscaled_deps_test_%s.go", goos)
err = os.WriteFile(filename, out.Bytes(), 0644)
if err != nil {
log.Fatal(err)
}
}