Skip to content

Commit 9b4e544

Browse files
committed
refactor(构建器): 将依赖独立出来
1 parent 404cd06 commit 9b4e544

27 files changed

+234
-158
lines changed

get.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package pangu
22

33
import (
4-
"github.com/pangum/pangu/internal/runtime"
4+
"github.com/pangum/pangu/internal/container"
55
)
66

77
// Get 用于向框架获取一系列依赖
8-
type Get = runtime.Get
8+
type Get = container.Get

internal/builder/banner.go

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ func (b *Banner) Binary(binary []byte) (ban *Banner) {
3535
}
3636

3737
func (b *Banner) Build() (application *Application) {
38+
b.params.Set = true
3839
b.application.params.Banner = b.params
3940
application = b.application
4041

internal/builder/code.go

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func (c *Code) Panic(panic int) (code *Code) {
3939
}
4040

4141
func (c *Code) Build() (application *Application) {
42+
c.params.Set = true
4243
c.application.params.Code = c.params
4344
application = c.application
4445

internal/builder/config.go

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ func NewConfig(application *Application) (config *Config) {
2323
}
2424

2525
func (c *Config) Build() (application *Application) {
26+
c.params.Set = true
2627
application.params.Config = c.params
2728
application = c.application
2829

internal/builder/help.go

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func (h *Help) Subcommand(tooltip string) (help *Help) {
3939
}
4040

4141
func (h *Help) Build() (application *Application) {
42+
h.params.Set = true
4243
h.application.params.Help = h.params
4344
application = h.application
4445

internal/command/serve.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ func (s *Serve) start(ctx *runtime.Context) (err error) {
5555
wg.Add(len(s.serves))
5656

5757
for _, serve := range s.serves {
58-
go s.startServe(serve, wg, &err)
58+
cloned := serve
59+
go s.startServe(cloned, wg, &err)
5960
}
6061

6162
// 注册退出信号处理

internal/container/dependencies.go

-70
This file was deleted.

internal/container/dependency.go

+58-14
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,84 @@ import (
99

1010
type Dependency struct {
1111
container *dig.Container
12-
param *param.Dependency
12+
params *param.Dependency
1313
constructor *verifier.Constructor
1414
}
1515

1616
func NewDependency(container *dig.Container, params *param.Dependency, constructor *verifier.Constructor) *Dependency {
1717
return &Dependency{
1818
container: container,
1919
constructor: constructor,
20-
param: params,
20+
params: params,
2121
}
2222
}
2323

24-
func (d *Dependency) Put(constructor runtime.Constructor) (err error) {
25-
if ve := d.constructor.Verify(constructor); nil != ve {
26-
err = ve
27-
} else if pe := d.container.Provide(constructor); nil != pe {
28-
err = pe
24+
func (d *Dependency) Inject() (err error) {
25+
if de := d.puts(); nil != de {
26+
err = de
27+
} else if ge := d.gets(); nil != ge {
28+
err = ge
2929
}
3030

3131
return
3232
}
3333

34-
func (d *Dependency) Provide(constructor runtime.Constructor) {
35-
if err := d.Put(constructor); nil != err {
34+
func (d *Dependency) Apply() {
35+
if err := d.Inject(); nil != err {
3636
panic(err)
3737
}
3838
}
3939

40-
func (d *Dependency) Get(getter runtime.Getter) error {
41-
return d.container.Invoke(getter)
40+
func (d *Dependency) gets() (err error) {
41+
for _, get := range d.params.Gets {
42+
err = d.invoke(get)
43+
if nil != err {
44+
break
45+
}
46+
}
47+
48+
return
4249
}
4350

44-
func (d *Dependency) Invoke(getter runtime.Getter) {
45-
if err := d.Get(getter); nil != err {
46-
panic(err)
51+
func (d *Dependency) invoke(get *param.Get) (err error) {
52+
for _, getter := range get.Getters {
53+
err = d.container.Invoke(getter)
54+
if nil != err {
55+
break
56+
}
4757
}
58+
59+
return
60+
}
61+
62+
func (d *Dependency) puts() (err error) {
63+
for _, put := range d.params.Puts {
64+
err = d.put(put)
65+
if nil != err {
66+
break
67+
}
68+
}
69+
70+
return
71+
}
72+
73+
func (d *Dependency) put(put *param.Put) (err error) {
74+
for _, constructor := range put.Constructors {
75+
err = d.provide(constructor)
76+
if nil != err {
77+
break
78+
}
79+
}
80+
81+
return
82+
}
83+
84+
func (d *Dependency) provide(constructor runtime.Constructor) (err error) {
85+
if ve := d.constructor.Verify(constructor); nil != ve {
86+
err = ve
87+
} else if pe := d.container.Provide(constructor); nil != pe {
88+
err = pe
89+
}
90+
91+
return
4892
}

internal/runtime/get.go internal/container/get.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package runtime
1+
package container
22

33
import (
44
"github.com/storezhang/dig"

internal/runtime/put.go internal/container/put.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package runtime
1+
package container
22

33
import (
44
"github.com/storezhang/dig"

0 commit comments

Comments
 (0)