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.