navidrome/navidrome · error
generating Rust client code for %s: %w
Error message
generating Rust client code for %s: %w
What it means
generateAllCode wraps any error from generateRustClientCode for a service with the service name. The root cause is inside Rust client generation (GenerateCapabilityRust-style failures or file writes) for that service.
Source
Thrown at plugins/cmd/ndpgen/main.go:712
if verbose {
fmt.Printf("Generated Rust lib.rs: %s\n", libPath)
}
}
return nil
}
// generateAllCode generates all requested code for the services.
func generateAllCode(cfg *config, services []internal.Service) error {
for _, svc := range services {
if cfg.generateGoClient {
if err := generateGoClientCode(svc, cfg.goOutputDir, cfg.pkgName, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Go client code for %s: %w", svc.Name, err)
}
}
if cfg.generateRsClient {
if err := generateRustClientCode(svc, cfg.rustOutputDir, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Rust client code for %s: %w", svc.Name, err)
}
}
}
if cfg.generateRsClient && len(services) > 0 {
if err := generateRustLibFile(services, cfg.rustOutputDir, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Rust lib.rs: %w", err)
}
}
if cfg.generateGoClient && len(services) > 0 {
if err := generateGoDocFile(services, cfg.goOutputDir, cfg.pkgName, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Go doc.go: %w", err)
}
if err := generateGoModFile(cfg.goOutputDir, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Go go.mod: %w", err)
}
// Generate PDK abstraction layer alongside host client codeView on GitHub (pinned to 4ed7494a32)
Solutions
- Read the inner wrapped error for the precise cause
- Check the failing service's field types against the generator's Rust mappings
- Verify rustOutputDir exists and is writable
- Re-run with --dry-run to isolate generation vs. write failures
Defensive patterns
Strategy: validation
Validate before calling
if cfg.generateRsClient {
if st, err := os.Stat(cfg.rustOutputDir); err != nil || !st.IsDir() {
os.MkdirAll(cfg.rustOutputDir, 0755)
}
} Try / catch
if err := generateRustClientCode(svc, cfg.rustOutputDir, cfg.dryRun, cfg.verbose); err != nil {
return fmt.Errorf("generating Rust client code for %s: %w", svc.Name, err)
} // unwrap to find whether generation or the write failed Prevention
- Pre-create and pre-permission the Rust output directory
- Deduplicate service names before generation
- Validate all service field types against Rust mappings upfront
When it happens
Trigger: cfg.generateRsClient is set and generateRustClientCode(svc, cfg.rustOutputDir, ...) returns an error — unsupported field type mapping to Rust, invalid service name in module naming, or write failure in rustOutputDir.
Common situations: Service schema uses types with no Rust equivalent; rustOutputDir is read-only or missing; name collisions between services after snake_casing module names.
Related errors
- generating Go client code for %s: %w
- generating Rust lib.rs: %w
- executing template: %w
- generating Rust code for %s: %w
- generating lib.rs: %w
AI-assisted analysis of navidrome/navidrome@4ed7494a32 (2026-09-01).
Data as JSON: /api/errors/94cc5219020bcf51.
Report an issue: GitHub.