func generateSwaggerUiFiles(parser *parser.Parser, outputSpec string) error { fd, err := os.Create(path.Join(outputSpec, "index.json")) if err != nil { return fmt.Errorf("Can not create the master index.json file: %v\n", err) } defer fd.Close() fd.WriteString(string(parser.GetResourceListingJson())) for apiKey, apiDescription := range parser.TopLevelApis { err = os.MkdirAll(path.Join(outputSpec, apiKey), 0777) if err != nil { return err } fd, err = os.Create(path.Join(outputSpec, apiKey, "index.json")) if err != nil { return fmt.Errorf("Can not create the %s/index.json file: %v\n", apiKey, err) } defer fd.Close() json, err := json.MarshalIndent(apiDescription, "", " ") if err != nil { return fmt.Errorf("Can not serialise []ApiDescription to JSON: %v\n", err) } fd.Write(json) log.Printf("Wrote %v/index.json", apiKey) } return nil }
func generateSwaggerDocs(parser *parser.Parser, outputSpec string) error { fd, err := os.Create(path.Join(outputSpec, "docs.go")) if err != nil { return fmt.Errorf("Can not create document file: %v\n", err) } defer fd.Close() var apiDescriptions bytes.Buffer for apiKey, apiDescription := range parser.TopLevelApis { apiDescriptions.WriteString("\"" + apiKey + "\":") apiDescriptions.WriteString("`") json, err := json.MarshalIndent(apiDescription, "", " ") if err != nil { return fmt.Errorf("Can not serialise []ApiDescription to JSON: %v\n", err) } apiDescriptions.Write(json) apiDescriptions.WriteString("`,") } doc := strings.Replace(generatedFileTemplate, "{{resourceListing}}", "`"+string(parser.GetResourceListingJson())+"`", -1) doc = strings.Replace(doc, "{{apiDescriptions}}", "map[string]string{"+apiDescriptions.String()+"}", -1) doc = strings.Replace(doc, "{{packageName}}", parser.PackageName, -1) fd.WriteString(doc) return nil }