Skip to content

Commit f893d38

Browse files
committed
fix issues raised in the review
1 parent 81ae831 commit f893d38

15 files changed

+293
-216
lines changed

contracts/packages/manager.go contracts/packages/setup.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import (
66
)
77

88
type FileModifier interface {
9-
Apply(dir string) error
9+
Apply() error
1010
}
1111

12-
type Manager interface {
13-
Install(dir string) error
14-
Uninstall(dir string) error
12+
type Setup interface {
13+
Install() error
14+
Uninstall() error
1515
}
1616

1717
type GoNodeMatcher interface {

foundation/console/package_install_command.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,8 @@ func (r *PackageInstallCommand) Handle(ctx console.Context) error {
6262
}
6363

6464
// handle package version
65-
pkg, version, ok := strings.Cut(pkg, "@")
66-
manager := pkg + "/manager"
67-
if ok {
68-
pkg = pkg + "@" + version
69-
}
65+
pkgPath, _, _ := strings.Cut(pkg, "@")
66+
setup := pkgPath + "/setup"
7067

7168
// get package
7269
var output []byte
@@ -87,7 +84,7 @@ func (r *PackageInstallCommand) Handle(ctx console.Context) error {
8784
}
8885

8986
// install package
90-
install := exec.Command("go", "run", manager, "install")
87+
install := exec.Command("go", "run", setup, "install")
9188
if err = ctx.Spinner(fmt.Sprintf("> @%s", strings.Join(install.Args, " ")), console.SpinnerOption{
9289
Action: func() error {
9390
output, err = install.CombinedOutput()

foundation/console/package_make_command.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@ func (r *PackageMakeCommand) Extend() command.Extend {
3131
return command.Extend{
3232
Category: "make",
3333
Flags: []command.Flag{
34-
&command.BoolFlag{
35-
Name: "manager",
36-
Aliases: []string{"m"},
37-
Usage: "Create a package manager",
38-
DisableDefaultText: true,
39-
},
4034
&command.StringFlag{
4135
Name: "root",
4236
Aliases: []string{"r"},
@@ -84,10 +78,7 @@ func (r *PackageMakeCommand) Handle(ctx console.Context) error {
8478
filepath.Join("config", packageName+".go"): packageMakeCommandStubs.Config,
8579
filepath.Join("contracts", packageName+".go"): packageMakeCommandStubs.Contracts,
8680
filepath.Join("facades", packageName+".go"): packageMakeCommandStubs.Facades,
87-
}
88-
89-
if ctx.OptionBool("manager") {
90-
files[filepath.Join("manager", "manager.go")] = packageMakeCommandStubs.Manager
81+
filepath.Join("setup", "setup.go"): packageMakeCommandStubs.Setup,
9182
}
9283

9384
for path, content := range files {

foundation/console/package_make_command_stubs.go

+31-50
Original file line numberDiff line numberDiff line change
@@ -123,54 +123,36 @@ func DummyCamelName() contracts.DummyCamelName {
123123
return content
124124
}
125125

126-
func (r PackageMakeCommandStubs) Manager() string {
126+
func (r PackageMakeCommandStubs) Setup() string {
127127
content := `package main
128128
129129
import (
130130
"os"
131-
"path"
132131
"path/filepath"
133132
"runtime/debug"
134-
"strings"
133+
"strings"
135134
136135
pkgcontracts "github.com/goravel/framework/contracts/packages"
137136
"github.com/goravel/framework/packages"
138137
"github.com/goravel/framework/support/color"
138+
"github.com/goravel/framework/support/path"
139139
)
140140
141-
var (
142-
module string
143-
dir string
144-
force bool
145-
)
146-
147-
func init() {
148-
for i, arg := range os.Args {
149-
if arg == "--force" || arg == "-f" {
150-
force = true
151-
}
152-
153-
if (arg == "--dir" || arg == "-d") && len(os.Args) > i+1 {
154-
dir = os.Args[i+1]
155-
}
156-
}
157-
158-
if info, ok := debug.ReadBuildInfo(); ok && strings.HasSuffix(info.Path, "manager") {
159-
module = path.Dir(info.Path)
141+
func main() {
142+
info, ok := debug.ReadBuildInfo()
143+
if !ok || !strings.HasSuffix(info.Path, "setup") {
144+
color.Errorln("Package module name is empty, please run command with module name.")
145+
return
160146
}
147+
module := filepath.Dir(info.Path)
148+
force := len(os.Args) == 2 && (os.Args[1] == "--force" || os.Args[1] == "-f")
161149
162-
if dir == "" {
163-
dir, _ = os.Getwd()
164-
}
165-
}
166-
167-
func main() {
168-
var pkg = packages.Manager{
169-
ContinueOnError: force,
150+
var pkg = &packages.Setup{
151+
Force: force,
170152
Module: module,
171153
OnInstall: []pkgcontracts.FileModifier{
172154
packages.ModifyGoFile{
173-
File: filepath.Join("config", "app.go"),
155+
File: path.Config("app.go"),
174156
Modifiers: []pkgcontracts.GoNodeModifier{
175157
packages.AddImportSpec(module),
176158
packages.AddProviderSpec(
@@ -181,7 +163,7 @@ func main() {
181163
},
182164
OnUninstall: []pkgcontracts.FileModifier{
183165
packages.ModifyGoFile{
184-
File: filepath.Join("config", "app.go"),
166+
File: path.Config("app.go"),
185167
Modifiers: []pkgcontracts.GoNodeModifier{
186168
packages.RemoveImportSpec(module),
187169
packages.RemoveProviderSpec("&DummyName.ServiceProvider{}"),
@@ -190,30 +172,29 @@ func main() {
190172
},
191173
}
192174
193-
if module == "" {
194-
color.Errorln("Package module name is empty, please run command with module name.")
195-
return
175+
if len(os.Args) > 1 {
176+
execute(pkg, os.Args[1])
196177
}
178+
}
197179
198-
if len(os.Args) > 1 && os.Args[1] == "install" {
199-
err := pkg.Install(dir)
200-
if err != nil {
201-
color.Errorln(err)
202-
return
203-
}
204-
color.Successf("Package %s installed successfully\n", module)
180+
func execute(pkg pkgcontracts.Setup, command string) {
181+
var err error
182+
switch command {
183+
case "install":
184+
err = pkg.Install()
185+
case "uninstall":
186+
err = pkg.Uninstall()
187+
default:
188+
return
205189
}
206190
207-
if len(os.Args) > 1 && os.Args[1] == "uninstall" {
208-
err := pkg.Uninstall(dir)
209-
if err != nil {
210-
color.Errorln(err)
211-
return
212-
}
213-
color.Successf("Package %s uninstalled successfully\n", module)
191+
if err != nil {
192+
color.Errorln(err)
193+
return
214194
}
215-
}
216195
196+
color.Successf("Package %sed successfully\n", command)
197+
}
217198
`
218199
content = strings.ReplaceAll(content, "DummyName", r.name)
219200

foundation/console/package_make_command_test.go

+8-38
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,7 @@ func (s *PackageMakeCommandTestSuite) TestExtend() {
4242

4343
if len(got.Flags) > 0 {
4444
s.Run("should have correctly configured StringFlag", func() {
45-
managerFlag, ok := got.Flags[0].(*command.BoolFlag)
46-
if !ok {
47-
s.Fail("First flag is not BoolFlag (got type: %T)", got.Flags[0])
48-
}
49-
50-
rootFlag, ok := got.Flags[1].(*command.StringFlag)
45+
flag, ok := got.Flags[0].(*command.StringFlag)
5146
if !ok {
5247
s.Fail("First flag is not StringFlag (got type: %T)", got.Flags[0])
5348
}
@@ -57,13 +52,10 @@ func (s *PackageMakeCommandTestSuite) TestExtend() {
5752
got interface{}
5853
expected interface{}
5954
}{
60-
{"Name", rootFlag.Name, "root"},
61-
{"Aliases", rootFlag.Aliases, []string{"r"}},
62-
{"Usage", rootFlag.Usage, "The root path of package, default: packages"},
63-
{"Value", rootFlag.Value, "packages"},
64-
{"Name", managerFlag.Name, "manager"},
65-
{"Aliases", managerFlag.Aliases, []string{"m"}},
66-
{"Usage", managerFlag.Usage, "Create a package manager"},
55+
{"Name", flag.Name, "root"},
56+
{"Aliases", flag.Aliases, []string{"r"}},
57+
{"Usage", flag.Usage, "The root path of package, default: packages"},
58+
{"Value", flag.Value, "packages"},
6759
}
6860

6961
for _, tc := range testCases {
@@ -101,32 +93,10 @@ func (s *PackageMakeCommandTestSuite) TestHandle() {
10193
},
10294
},
10395
{
104-
name: "name is sms and use default root(hasn't manager)",
105-
setup: func() {
106-
mockContext.EXPECT().Argument(0).Return("sms").Once()
107-
mockContext.EXPECT().Option("root").Return("packages").Once()
108-
mockContext.EXPECT().OptionBool("manager").Return(false).Once()
109-
mockContext.EXPECT().Success("Package created successfully: packages/sms").Once()
110-
},
111-
assert: func() {
112-
s.NoError(NewPackageMakeCommand().Handle(mockContext))
113-
s.True(file.Exists("packages/sms/README.md"))
114-
s.True(file.Exists("packages/sms/service_provider.go"))
115-
s.True(file.Exists("packages/sms/sms.go"))
116-
s.True(file.Exists("packages/sms/config/sms.go"))
117-
s.True(file.Exists("packages/sms/contracts/sms.go"))
118-
s.True(file.Exists("packages/sms/facades/sms.go"))
119-
s.True(file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms"))
120-
s.True(file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms/contracts"))
121-
s.NoError(file.Remove("packages"))
122-
},
123-
},
124-
{
125-
name: "name is sms and use default root(has manager)",
96+
name: "name is sms and use default root",
12697
setup: func() {
12798
mockContext.EXPECT().Argument(0).Return("sms").Once()
12899
mockContext.EXPECT().Option("root").Return("packages").Once()
129-
mockContext.EXPECT().OptionBool("manager").Return(true).Once()
130100
mockContext.EXPECT().Success("Package created successfully: packages/sms").Once()
131101
},
132102
assert: func() {
@@ -139,7 +109,7 @@ func (s *PackageMakeCommandTestSuite) TestHandle() {
139109
s.True(file.Exists("packages/sms/facades/sms.go"))
140110
s.True(file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms"))
141111
s.True(file.Contain("packages/sms/facades/sms.go", "goravel/packages/sms/contracts"))
142-
s.True(file.Exists("packages/sms/manager/manager.go"))
112+
s.True(file.Exists("packages/sms/setup/setup.go"))
143113
s.NoError(file.Remove("packages"))
144114
},
145115
},
@@ -148,7 +118,6 @@ func (s *PackageMakeCommandTestSuite) TestHandle() {
148118
setup: func() {
149119
mockContext.EXPECT().Argument(0).Return("github.com/goravel/sms-aws").Once()
150120
mockContext.EXPECT().Option("root").Return("package").Once()
151-
mockContext.EXPECT().OptionBool("manager").Return(false).Once()
152121
mockContext.EXPECT().Success("Package created successfully: package/github_com_goravel_sms_aws").Once()
153122
},
154123
assert: func() {
@@ -159,6 +128,7 @@ func (s *PackageMakeCommandTestSuite) TestHandle() {
159128
s.True(file.Exists("package/github_com_goravel_sms_aws/config/github_com_goravel_sms_aws.go"))
160129
s.True(file.Exists("package/github_com_goravel_sms_aws/contracts/github_com_goravel_sms_aws.go"))
161130
s.True(file.Exists("package/github_com_goravel_sms_aws/facades/github_com_goravel_sms_aws.go"))
131+
s.True(file.Exists("package/github_com_goravel_sms_aws/setup/setup.go"))
162132
s.NoError(file.Remove("package"))
163133
},
164134
},

foundation/console/package_uninstall_command.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ func (r *PackageUninstallCommand) Handle(ctx console.Context) error {
6868
}
6969
}
7070

71-
pkg, _, _ = strings.Cut(pkg, "@")
72-
manager := pkg + "/manager"
71+
pkgPath, _, _ := strings.Cut(pkg, "@")
72+
setup := pkgPath + "/setup"
7373

7474
// uninstall package
7575
var output []byte
76-
uninstall := exec.Command("go", "run", manager, "uninstall")
76+
uninstall := exec.Command("go", "run", setup, "uninstall")
7777
if ctx.OptionBool("force") {
7878
uninstall.Args = append(uninstall.Args, "--force")
7979
}

mocks/packages/FileModifier.go

+10-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)