refactor(api): streamline spec export paths
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
ec945970ee
commit
ed5822058d
2 changed files with 22 additions and 13 deletions
|
|
@ -68,14 +68,17 @@ func addSDKCommand(parent *cli.Command) {
|
|||
if err != nil {
|
||||
return coreerr.E("sdk.Generate", "create temp spec file", err)
|
||||
}
|
||||
defer coreio.Local.Delete(tmpFile.Name())
|
||||
tmpPath := tmpFile.Name()
|
||||
if err := tmpFile.Close(); err != nil {
|
||||
_ = coreio.Local.Delete(tmpPath)
|
||||
return coreerr.E("sdk.Generate", "close temp spec file", err)
|
||||
}
|
||||
defer coreio.Local.Delete(tmpPath)
|
||||
|
||||
if err := goapi.ExportSpecIter(tmpFile, "json", builder, groups); err != nil {
|
||||
tmpFile.Close()
|
||||
if err := goapi.ExportSpecToFileIter(tmpPath, "json", builder, groups); err != nil {
|
||||
return coreerr.E("sdk.Generate", "generate spec", err)
|
||||
}
|
||||
tmpFile.Close()
|
||||
specFile = tmpFile.Name()
|
||||
specFile = tmpPath
|
||||
}
|
||||
|
||||
gen := &goapi.SDKGenerator{
|
||||
|
|
|
|||
22
export.go
22
export.go
|
|
@ -75,7 +75,9 @@ func writeSpec(w io.Writer, format string, data []byte, op string) error {
|
|||
//
|
||||
// _ = api.ExportSpecToFile("./api/openapi.yaml", "yaml", builder, engine.Groups())
|
||||
func ExportSpecToFile(path, format string, builder *SpecBuilder, groups []RouteGroup) error {
|
||||
return exportSpecToFile(path, format, builder, groups, "ExportSpecToFile")
|
||||
return exportSpecToFile(path, "ExportSpecToFile", func(w io.Writer) error {
|
||||
return ExportSpec(w, format, builder, groups)
|
||||
})
|
||||
}
|
||||
|
||||
// ExportSpecToFileIter writes the OpenAPI spec from an iterator to the given path.
|
||||
|
|
@ -85,10 +87,12 @@ func ExportSpecToFile(path, format string, builder *SpecBuilder, groups []RouteG
|
|||
//
|
||||
// _ = api.ExportSpecToFileIter("./api/openapi.json", "json", builder, api.RegisteredSpecGroupsIter())
|
||||
func ExportSpecToFileIter(path, format string, builder *SpecBuilder, groups iter.Seq[RouteGroup]) error {
|
||||
return exportSpecToFile(path, format, builder, collectRouteGroups(groups), "ExportSpecToFileIter")
|
||||
return exportSpecToFile(path, "ExportSpecToFileIter", func(w io.Writer) error {
|
||||
return ExportSpecIter(w, format, builder, groups)
|
||||
})
|
||||
}
|
||||
|
||||
func exportSpecToFile(path, format string, builder *SpecBuilder, groups []RouteGroup, op string) error {
|
||||
func exportSpecToFile(path, op string, write func(io.Writer) error) (err error) {
|
||||
if err := coreio.Local.EnsureDir(filepath.Dir(path)); err != nil {
|
||||
return coreerr.E(op, "create directory", err)
|
||||
}
|
||||
|
|
@ -96,12 +100,14 @@ func exportSpecToFile(path, format string, builder *SpecBuilder, groups []RouteG
|
|||
if err != nil {
|
||||
return coreerr.E(op, "create file", err)
|
||||
}
|
||||
if err := ExportSpec(f, format, builder, groups); err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
if closeErr := f.Close(); closeErr != nil && err == nil {
|
||||
err = coreerr.E(op, "close file", closeErr)
|
||||
}
|
||||
}()
|
||||
|
||||
if err := f.Close(); err != nil {
|
||||
return coreerr.E(op, "close file", err)
|
||||
if err = write(f); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue