diff --git a/example/use_default/README.md b/example/use_default/README.md new file mode 100644 index 0000000..98a80a8 --- /dev/null +++ b/example/use_default/README.md @@ -0,0 +1,7 @@ +# New code directory structure + +## 1. `import.gone.go` and `init.gone.go` will be generated by `gonectr` automatically + +## 2. `init.gone.go` is responsible for loading goner module to the `gone` framework + +## 3. `import.gone.go` is responsible for importing all packages which contain goner module in the project \ No newline at end of file diff --git a/example/use_default/go.mod b/example/use_default/go.mod new file mode 100644 index 0000000..3429c6d --- /dev/null +++ b/example/use_default/go.mod @@ -0,0 +1,43 @@ +module use_default + +go 1.22.2 + +require github.com/gone-io/gone v1.0.9 + +require ( + github.com/bytedance/sonic v1.10.2 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect + github.com/chenzhuoyu/iasm v0.9.1 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gin-gonic/gin v1.9.1 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.17.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.6 // indirect + github.com/leodido/go-urn v1.3.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/soheilhy/cmux v0.1.5 // indirect + github.com/syndtr/goleveldb v1.0.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + golang.org/x/arch v0.7.0 // indirect + golang.org/x/crypto v0.22.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect + xorm.io/xorm v1.3.2 // indirect +) + +replace ( + github.com/gone-io/gone v1.0.9 => ../../ +) diff --git a/example/use_default/import.gone.go b/example/use_default/import.gone.go new file mode 100644 index 0000000..264c932 --- /dev/null +++ b/example/use_default/import.gone.go @@ -0,0 +1,8 @@ +// Code generated by Goner. DO NOT EDIT. + +package main + +import ( + _ "use_default/internal/food" + _ "use_default/internal/user" +) diff --git a/example/use_default/internal/food/food.go b/example/use_default/internal/food/food.go new file mode 100644 index 0000000..7826a90 --- /dev/null +++ b/example/use_default/internal/food/food.go @@ -0,0 +1,11 @@ +package food + +import "github.com/gone-io/gone" + +type iFood struct { + gone.Flag +} + +func (s *iFood) Create() error { + return nil +} diff --git a/example/use_default/internal/food/init.gone.go b/example/use_default/internal/food/init.gone.go new file mode 100644 index 0000000..da252e5 --- /dev/null +++ b/example/use_default/internal/food/init.gone.go @@ -0,0 +1,9 @@ +// Code generated by Goner. DO NOT EDIT. + +package food + +import "github.com/gone-io/gone" + +func init() { + gone.Default.Load(&iFood{}) +} diff --git a/example/use_default/internal/user/init.gone.go b/example/use_default/internal/user/init.gone.go new file mode 100644 index 0000000..ad4cd27 --- /dev/null +++ b/example/use_default/internal/user/init.gone.go @@ -0,0 +1,12 @@ +// Code generated by Goner. DO NOT EDIT. + +package user + +import "github.com/gone-io/gone" + +func init() { + gone. + Default. + Load(&iUser{}). + Load(&iSession{}) +} diff --git a/example/use_default/internal/user/session.go b/example/use_default/internal/user/session.go new file mode 100644 index 0000000..ae7c337 --- /dev/null +++ b/example/use_default/internal/user/session.go @@ -0,0 +1,15 @@ +package user + +import "github.com/gone-io/gone" + +type iSession struct { + gone.Flag +} + +func (s *iSession) Put(any) error { + return nil +} + +func (s *iSession) Get() (any, error) { + return nil, nil +} diff --git a/example/use_default/internal/user/user.go b/example/use_default/internal/user/user.go new file mode 100644 index 0000000..b4dad5d --- /dev/null +++ b/example/use_default/internal/user/user.go @@ -0,0 +1,11 @@ +package user + +import "github.com/gone-io/gone" + +type iUser struct { + gone.Flag +} + +func (s *iUser) Hello() string { + return "hello" +} diff --git a/example/use_default/main.go b/example/use_default/main.go new file mode 100644 index 0000000..6a47ab3 --- /dev/null +++ b/example/use_default/main.go @@ -0,0 +1,19 @@ +package main + +import ( + "github.com/gone-io/gone" + "use_default/service" +) + +func main() { + gone.Default.Run(func(i struct { + iFood service.IFood `gone:"*"` + iSession service.ISession `gone:"*"` + iUser service.IUser `gone:"*"` + }) { + _ = i.iSession.Put("ok") + _ = i.iFood.Create() + hello := i.iUser.Hello() + println(hello) + }) +} diff --git a/example/use_default/service/i_food.go b/example/use_default/service/i_food.go new file mode 100644 index 0000000..710501d --- /dev/null +++ b/example/use_default/service/i_food.go @@ -0,0 +1,5 @@ +package service + +type IFood interface { + Create() error +} diff --git a/example/use_default/service/i_session.go b/example/use_default/service/i_session.go new file mode 100644 index 0000000..a95eb4f --- /dev/null +++ b/example/use_default/service/i_session.go @@ -0,0 +1,6 @@ +package service + +type ISession interface { + Put(any) error + Get() (any, error) +} diff --git a/example/use_default/service/i_user.go b/example/use_default/service/i_user.go new file mode 100644 index 0000000..9549e88 --- /dev/null +++ b/example/use_default/service/i_user.go @@ -0,0 +1,5 @@ +package service + +type IUser interface { + Hello() string +} diff --git a/heaven.go b/heaven.go index 9dd395f..496242d 100644 --- a/heaven.go +++ b/heaven.go @@ -47,6 +47,10 @@ type heaven struct { afterStopSignalWaitSecond int } +func (h *heaven) GetCemetery() Cemetery { + return h.cemetery +} + func (h *heaven) SetAfterStopSignalWaitSecond(sec int) { h.afterStopSignalWaitSecond = sec } diff --git a/interface.go b/interface.go index 362c2a1..72c39a4 100644 --- a/interface.go +++ b/interface.go @@ -127,6 +127,8 @@ type Heaven interface { AfterStop(Process) Heaven SetAfterStopSignalWaitSecond(sec int) + + GetCemetery() Cemetery } type AfterReviveError error diff --git a/prepare.go b/prepare.go index 260b9d5..0314a7d 100644 --- a/prepare.go +++ b/prepare.go @@ -50,6 +50,14 @@ func (p *Preparer) Serve(fns ...any) { Stop() } +func (p *Preparer) Load(goner Goner) *Preparer { + p.heaven.GetCemetery().Bury(goner) + return p +} +func (p *Preparer) Bury(goner Goner) *Preparer { + return p.Load(goner) +} + func Prepare(priests ...Priest) *Preparer { h := New(priests...) @@ -58,6 +66,8 @@ func Prepare(priests ...Priest) *Preparer { } } +var Default = Prepare() + /* Run A Gone Program;