// Command openapi writes the MusicServer API description without starting the server. // // go run ./cmd/openapi -out . // // It writes openapi.json (OpenAPI 3.1) and openapi-3.0.json (OpenAPI 3.0, for tools // that don't support 3.1 yet). A running server serves the same files at /openapi.json // and /openapi-3.0.json. package main import ( "flag" "fmt" "os" "path/filepath" "music-server/internal/server" ) func main() { out := flag.String("out", ".", "directory to write openapi.json and openapi-3.0.json to") flag.Parse() if err := run(*out); err != nil { fmt.Fprintln(os.Stderr, "openapi:", err) os.Exit(1) } } func run(out string) error { spec := server.OpenAPISpec() v31, err := spec.MarshalJSON() if err != nil { return err } v30, err := spec.Downgrade() if err != nil { return err } if err := os.MkdirAll(out, 0o755); err != nil { return err } for name, data := range map[string][]byte{"openapi.json": v31, "openapi-3.0.json": v30} { path := filepath.Join(out, name) if err := os.WriteFile(path, data, 0o644); err != nil { return err } fmt.Println("Wrote", path) } return nil }