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("{{.ShortName}}"), aeus.WithVersion("{{.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: build build: go mod tidy go mod vendor go build -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 ` )