func main() { flag.Parse() if *mainApiFile == "" { *mainApiFile = *apiPackage + "/main.go" } if *apiPackage == "" { flag.PrintDefaults() return } parser := InitParser() gopath := os.Getenv("GOPATH") if gopath == "" { log.Fatalf("Please, set $GOPATH environment variable\n") } log.Println("Start parsing") //Support gopaths with multiple directories dirs := strings.Split(gopath, ":") found := false for _, d := range dirs { apifile := path.Join(d, "src", *mainApiFile) if _, err := os.Stat(apifile); err == nil { parser.ParseGeneralApiInfo(apifile) found = true } } if found == false { apifile := path.Join(gopath, "src", *mainApiFile) f, _ := fmt.Printf("Could not find apifile %s to parse\n", apifile) panic(f) } parser.ParseApi(*apiPackage) log.Println("Finish parsing") format := strings.ToLower(*outputFormat) switch format { case "go": generateSwaggerDocs(parser) log.Println("Doc file generated") case "asciidoc": markup.GenerateMarkup(parser, new(markup.MarkupAsciiDoc), outputSpec, ".adoc") log.Println("AsciiDoc file generated") case "markdown": markup.GenerateMarkup(parser, new(markup.MarkupMarkDown), outputSpec, ".md") log.Println("MarkDown file generated") case "confluence": markup.GenerateMarkup(parser, new(markup.MarkupConfluence), outputSpec, ".confluence") log.Println("Confluence file generated") case "swagger": generateSwaggerUiFiles(parser) log.Println("Swagger UI files generated") default: log.Fatalf("Invalid -format specified. Must be one of %v.", AVAILABLE_FORMATS) } }
func Generate(params GeneratorParams) error { parser := InitParser() gopath := os.Getenv("GOPATH") if gopath == "" { return errors.New("Please, set $GOPATH environment variable\n") } log.Println("Start parsing") //Support gopaths with multiple directories dirs := strings.Split(gopath, ":") found := false for _, d := range dirs { apifile := path.Join(d, "src", params.MainApiFile) if _, err := os.Stat(apifile); err == nil { parser.ParseGeneralApiInfo(apifile) found = true } } if found == false { apifile := path.Join(gopath, "src", params.MainApiFile) return fmt.Errorf("Could not find apifile %s to parse\n", apifile) } parser.ParseApi(params.ApiPackage) log.Println("Finish parsing") var err error confirmMsg := "" format := strings.ToLower(params.OutputFormat) switch format { case "go": err = generateSwaggerDocs(parser) confirmMsg = "Doc file generated" case "asciidoc": err = markup.GenerateMarkup(parser, new(markup.MarkupAsciiDoc), ¶ms.OutputSpec, ".adoc") confirmMsg = "AsciiDoc file generated" case "markdown": err = markup.GenerateMarkup(parser, new(markup.MarkupMarkDown), ¶ms.OutputSpec, ".md") confirmMsg = "MarkDown file generated" case "confluence": err = markup.GenerateMarkup(parser, new(markup.MarkupConfluence), ¶ms.OutputSpec, ".confluence") confirmMsg = "Confluence file generated" case "swagger": err = generateSwaggerUiFiles(parser) confirmMsg = "Swagger UI files generated" default: err = fmt.Errorf("Invalid -format specified. Must be one of %v.", AVAILABLE_FORMATS) } if err != nil { return err } log.Println(confirmMsg) return nil }