package generator var ( MainTemp = ` package main import ( "fmt" "os" "flag" "git.nobla.cn/golang/aeus" "git.nobla.cn/golang/aeus/transport/cli" "git.nobla.cn/golang/aeus/transport/grpc" "git.nobla.cn/golang/aeus/transport/http" "{{.PackageName}}/version" "{{.PackageName}}/internal/scope" "{{.PackageName}}/internal/service" ) var ( versionFlag = flag.Bool("version", false, "Show version") ) func main() { var ( err error ) flag.Parse() if *versionFlag{ fmt.Println(version.Info()) os.Exit(0) } app := aeus.New( aeus.WithName(version.ProductName), aeus.WithVersion(version.Version), aeus.WithServer( http.New(), grpc.New(), cli.New(), ), aeus.WithScope(scope.NewScope()), aeus.WithServiceLoader(service.NewLoader()), ) if err = app.Run(); err != nil { fmt.Println("app run error:", err) os.Exit(1) } } ` ScopeTemp = ` package scope import ( "context" "git.nobla.cn/golang/aeus/transport/cli" "git.nobla.cn/golang/aeus/transport/grpc" "git.nobla.cn/golang/aeus/transport/http" ) type ScopeContext struct { ctx context.Context Http *http.Server Grpc *grpc.Server Cli *cli.Server } func (s *ScopeContext) Init(ctx context.Context) (err error) { s.ctx = ctx return } func NewScope() *ScopeContext { return &ScopeContext{} } ` ServiceLoaderTemp = ` package service import ( "context" "{{.PackageName}}/internal/scope" "git.nobla.cn/golang/aeus/transport/cli" "git.nobla.cn/golang/aeus/transport/grpc" "git.nobla.cn/golang/aeus/transport/http" ) type serviceLoader struct { Sope *scope.ScopeContext Http *http.Server Grpc *grpc.Server Cli *cli.Server } func (s *serviceLoader) Init(ctx context.Context) (err error) { // bind services here return } func (s *serviceLoader) Run(ctx context.Context) (err error) { return } func NewLoader() *serviceLoader { return &serviceLoader{} } ` MakefileTemp = ` GOHOSTOS:=$(shell go env GOHOSTOS) GOPATH:=$(shell go env GOPATH) VERSION=$(shell git describe --tags --always) DATETIME:=$(shell date "+%Y-%m-%d %H:%M:%S") PROTO_DIR="api/v1/pb" PROTO_OUT_DIR="api/v1/pb" PROTO_FILES=$(shell find api -name *.proto) .PHONY: proto proto: protoc --proto_path=$(PROTO_DIR) \ --proto_path=./third_party \ --go_out=paths=source_relative:$(PROTO_OUT_DIR) \ --go-grpc_out=paths=source_relative:$(PROTO_OUT_DIR) \ --go-aeus_out=paths=source_relative:$(PROTO_OUT_DIR) \ --validate_out=paths=source_relative,lang=go:$(PROTO_OUT_DIR) \ $(PROTO_FILES) .PHONY: proto-clean proto-clean: rm -rf $(PROTO_OUT_DIR)/*.pb.go rm -rf $(PROTO_OUT_DIR)/*.pb.validate.go .PHONY: docker docker: docker build . -t $(IMAGE_REGISTRY_URL) .PHONY: deploy deploy: dkctl apply -f deployment.yaml .PHONY: build build: go mod tidy go mod vendor CGO_ENABLED=0 go build -a -installsuffix cgo -ldflags "-s -w -X '{{.PackageName}}/version.Version=$(VERSION)' -X '{{.PackageName}}/version.BuildDate=$(DATETIME)'" -o bin/{{.ShortName}} cmd/main.go ` GreeterTemp = ` syntax = "proto3"; package greeter; import "google/api/annotations.proto"; import "aeus/command.proto"; import "aeus/rest.proto"; import "validate/validate.proto"; option go_package = "{{.PackageName}}/api/v1/pb;pb"; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) { option (google.api.http) = { get: "/helloworld/{name}" }; option (aeus.command) = { path: "/helloworld/:name", description: "Greeter" }; } } // The request message containing the user's name. message HelloRequest { option (aeus.rest) = { table: "users" }; int64 id = 1 [(aeus.field)={gorm:"primary_key"},(validate.rules).int64.gt = 999]; string name = 2; } // The response message containing the greetings message HelloReply { string message = 1; } ` VersionTemp = ` package version import "fmt" var ( Version = "{{.Version}}" BuildDate = "{{.Datetime}}" ProductName = "{{.ShortName}}" ) func Info() string { return fmt.Sprintf("%s version: %s (built at %s)", ProductName, Version, BuildDate) } ` GitIgnoreTemp = ` .vscode .idea bin/ .svn/ .godeps ./build .cover/ *.dat vendor *.o *.a *.so # Folders _obj _test ` ReadmeTemp = `` GoModTemp = ` module {{.PackageName}} go 1.23.0 ` WebhookTemp = ` name: {{.ShortName}} steps: - name: build run: "make build" - name: docker run: "make docker" - name: deploy run: "make deploy" replacements: - src: deploy/docker/deployment.yaml dst: deployment.yaml ` DeploymentTemp = ` name: {{.ShortName}} image: {{.ImageRegistry}} command: ["{{.ShortName}}"] network: name: employ ip: 10.5.10.2 env: - name: TZ value: "Asia/Shanghai" - name: APP_NAME value: "{{.ShortName}}" volume: - name: config path: /etc/{{.ShortName}}/ hostPath: /apps/{{.ShortName}}/conf/ ` )