fix cli single-file execution

This commit is contained in:
david
2026-07-29 16:25:03 +08:00
parent e2d5d29556
commit 4742b6eea3
2 changed files with 46 additions and 48 deletions

View File

@@ -2,13 +2,19 @@
package main
import (
"encoding/json"
"fmt"
"io"
"os"
"strings"
"git.apinb.com/bsm-sdk/core/database"
"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/logic/platform"
"git.apinb.com/heqiapp/platforms/backend/api/internal/routers"
"git.apinb.com/heqiapp/platforms/backend/api/internal/seed"
"github.com/gin-gonic/gin"
)
const serviceKey = "heqi"
@@ -43,6 +49,46 @@ func printUsage() {
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 {
config.New("platform")
if config.Spec.Databases == nil {