// 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. // +build ignore package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "os/exec" ) func main() { var x struct { Imports []string } j, err := exec.Command("go", "list", "-json", "tailscale.com/cmd/tailscaled").Output() if err != nil { log.Fatal(err) } if err := json.Unmarshal(j, &x); err != nil { log.Fatal(err) } var out bytes.Buffer out.WriteString(`// 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. // 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 { fmt.Fprintf(&out, "\t_ %q\n", dep) } fmt.Fprintf(&out, ")\n") err = ioutil.WriteFile("tailscaled_deps_test.go", out.Bytes(), 0644) if err != nil { log.Fatal(err) } }