tailscale/tailscale · error
writing %s: %w
Error message
writing %s: %w
What it means
Error "writing %s: %w" thrown in tailscale/tailscale.
Source
Thrown at cmd/k8s-operator/generate/main.go:159
// by default). The generated template file uses the same base filename as the
// source CRD so no new CRD requires a code change here.
func generate(baseDir string) error {
files, err := crdFiles(baseDir)
if err != nil {
return err
}
for _, name := range files {
src, err := os.ReadFile(filepath.Join(baseDir, crdsPath, name))
if err != nil {
return fmt.Errorf("reading %s: %w", name, err)
}
var buf bytes.Buffer
buf.WriteString(helmConditionalStart)
buf.Write(src)
buf.WriteString(helmConditionalEnd)
dst := filepath.Join(baseDir, helmTemplatesPath, name)
if err := os.WriteFile(dst, buf.Bytes(), 0o664); err != nil {
return fmt.Errorf("writing %s: %w", dst, err)
}
}
return nil
}
// cleanup removes every CRD template file previously written by generate.
// It globs helmTemplatesPath rather than re-reading crdsPath so a CRD deleted
// between generate and cleanup is still tidied up.
func cleanup(baseDir string) error {
log.Print("Cleaning up CRDs from Helm templates")
matches, err := filepath.Glob(filepath.Join(baseDir, helmTemplatesPath, crdFilePrefix+"*.yaml"))
if err != nil {
return fmt.Errorf("globbing Helm templates: %w", err)
}
for _, p := range matches {
if err := os.Remove(p); err != nil && !os.IsNotExist(err) {
return fmt.Errorf("removing %s: %w", p, err)
}View on GitHub (pinned to cfe32b8be6)
When it happens
Trigger: Thrown at cmd/k8s-operator/generate/main.go:159 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@cfe32b8be6 (2026-08-15).
Data as JSON: /api/errors/04e93352e6a9387e.
Report an issue: GitHub.