fix cli single-file execution
This commit is contained in:
@@ -2,13 +2,19 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"git.apinb.com/bsm-sdk/core/database"
|
"git.apinb.com/bsm-sdk/core/database"
|
||||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/config"
|
"git.apinb.com/heqiapp/platforms/backend/api/internal/config"
|
||||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/initdb"
|
"git.apinb.com/heqiapp/platforms/backend/api/internal/initdb"
|
||||||
|
"git.apinb.com/heqiapp/platforms/backend/api/internal/logic/platform"
|
||||||
|
"git.apinb.com/heqiapp/platforms/backend/api/internal/routers"
|
||||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/seed"
|
"git.apinb.com/heqiapp/platforms/backend/api/internal/seed"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
const serviceKey = "heqi"
|
const serviceKey = "heqi"
|
||||||
@@ -43,6 +49,46 @@ func printUsage() {
|
|||||||
fmt.Fprintln(os.Stderr, "usage: platform-cli <version|resource-contract|mock-data>")
|
fmt.Fprintln(os.Stderr, "usage: platform-cli <version|resource-contract|mock-data>")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type route struct {
|
||||||
|
Method string `json:"method"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type contract struct {
|
||||||
|
Domain string `json:"domain"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Path string `json:"path"`
|
||||||
|
PageKind string `json:"pageKind"`
|
||||||
|
Mode string `json:"mode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type manifest struct {
|
||||||
|
Resources []contract `json:"resources"`
|
||||||
|
Routes []route `json:"routes"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeResourceContract(output io.Writer) error {
|
||||||
|
gin.SetMode(gin.ReleaseMode)
|
||||||
|
engine := gin.New()
|
||||||
|
routers.RegisterPlatform(serviceKey, engine)
|
||||||
|
routes := make([]route, 0, len(engine.Routes()))
|
||||||
|
for _, item := range engine.Routes() {
|
||||||
|
routes = append(routes, route{
|
||||||
|
Method: item.Method,
|
||||||
|
Path: strings.TrimPrefix(item.Path, "/"+serviceKey+"/platform/v1"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
expected := platform.ExpectedResources()
|
||||||
|
contracts := make([]contract, 0, len(expected))
|
||||||
|
for _, item := range expected {
|
||||||
|
contracts = append(contracts, contract{
|
||||||
|
Domain: item.Domain, Name: item.Name, Path: item.Path,
|
||||||
|
PageKind: item.PageKind, Mode: string(item.Mode),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return json.NewEncoder(output).Encode(manifest{Resources: contracts, Routes: routes})
|
||||||
|
}
|
||||||
|
|
||||||
func writeMockData() error {
|
func writeMockData() error {
|
||||||
config.New("platform")
|
config.New("platform")
|
||||||
if config.Spec.Databases == nil {
|
if config.Spec.Databases == nil {
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"io"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/logic/platform"
|
|
||||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/routers"
|
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
)
|
|
||||||
|
|
||||||
type route struct {
|
|
||||||
Method string `json:"method"`
|
|
||||||
Path string `json:"path"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type contract struct {
|
|
||||||
Domain string `json:"domain"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
Path string `json:"path"`
|
|
||||||
PageKind string `json:"pageKind"`
|
|
||||||
Mode string `json:"mode"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type manifest struct {
|
|
||||||
Resources []contract `json:"resources"`
|
|
||||||
Routes []route `json:"routes"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func writeResourceContract(output io.Writer) error {
|
|
||||||
gin.SetMode(gin.ReleaseMode)
|
|
||||||
engine := gin.New()
|
|
||||||
routers.RegisterPlatform("heqi", engine)
|
|
||||||
routes := make([]route, 0, len(engine.Routes()))
|
|
||||||
for _, item := range engine.Routes() {
|
|
||||||
routes = append(routes, route{Method: item.Method, Path: strings.TrimPrefix(item.Path, "/heqi/platform/v1")})
|
|
||||||
}
|
|
||||||
expected := platform.ExpectedResources()
|
|
||||||
contracts := make([]contract, 0, len(expected))
|
|
||||||
for _, item := range expected {
|
|
||||||
contracts = append(contracts, contract{
|
|
||||||
Domain: item.Domain, Name: item.Name, Path: item.Path,
|
|
||||||
PageKind: item.PageKind, Mode: string(item.Mode),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return json.NewEncoder(output).Encode(manifest{Resources: contracts, Routes: routes})
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user