Skip to content

Commit 5e5f983

Browse files
authored
Merge pull request #9 from nxtcoder17/refactor/cmd-executors
feat: improves command executor's parallel processing [Github PR](#9)
2 parents ed882c7 + d16c627 commit 5e5f983

12 files changed

Lines changed: 425 additions & 290 deletions

File tree

Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ tasks:
3232
3333
test:executor:
3434
cmds:
35-
- go test ./pkg/executor/...
35+
- go test -json ./pkg/executor/... | gotestfmt
3636

3737
test:watcher:
3838
env:

cmd/main.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"time"
1111

1212
"github.com/nxtcoder17/fwatcher/pkg/executor"
13-
"github.com/nxtcoder17/fwatcher/pkg/logging"
1413
"github.com/nxtcoder17/fwatcher/pkg/watcher"
14+
"github.com/nxtcoder17/go.pkgs/log"
1515
"github.com/urfave/cli/v3"
1616
)
1717

@@ -84,11 +84,11 @@ func main() {
8484
},
8585
},
8686
Action: func(ctx context.Context, c *cli.Command) error {
87-
logger := logging.NewSlogLogger(logging.SlogOptions{
88-
ShowTimestamp: false,
89-
ShowCaller: false,
90-
ShowDebugLogs: c.Bool("debug"),
91-
SetAsDefaultLogger: true,
87+
logger := log.New(log.Options{
88+
Writer: os.Stderr,
89+
ShowTimestamp: false,
90+
ShowCaller: true,
91+
ShowDebugLogs: c.Bool("debug"),
9292
})
9393

9494
if c.NArg() == 0 {
@@ -151,13 +151,17 @@ func main() {
151151
executors = append(executors, executor.NewCmdExecutor(ctx, executor.CmdExecutorArgs{
152152
Logger: logger,
153153
Interactive: c.Bool("interactive"),
154-
Commands: []func(context.Context) *exec.Cmd{
155-
func(c context.Context) *exec.Cmd {
156-
cmd := exec.CommandContext(ctx, execCmd, execArgs...)
157-
cmd.Stdout = os.Stdout
158-
cmd.Stderr = os.Stderr
159-
cmd.Stdin = os.Stdin
160-
return cmd
154+
Commands: []executor.CommandGroup{
155+
{
156+
Commands: []func(context.Context) *exec.Cmd{
157+
func(c context.Context) *exec.Cmd {
158+
cmd := exec.CommandContext(ctx, execCmd, execArgs...)
159+
cmd.Stdout = os.Stdout
160+
cmd.Stderr = os.Stderr
161+
cmd.Stdin = os.Stdin
162+
return cmd
163+
},
164+
},
161165
},
162166
},
163167
}))

go.mod

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
module github.com/nxtcoder17/fwatcher
22

3-
go 1.20
3+
go 1.22.10
44

55
require (
6-
github.com/charmbracelet/lipgloss v0.13.0
7-
github.com/charmbracelet/log v0.4.0
86
github.com/fsnotify/fsnotify v1.6.0
7+
github.com/nxtcoder17/go.pkgs v0.0.0-20250126144455-1acf7c99bcd9
98
github.com/urfave/cli/v3 v3.0.0-beta1
109
)
1110

1211
require (
13-
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
14-
github.com/charmbracelet/x/ansi v0.1.4 // indirect
15-
github.com/go-logfmt/logfmt v0.6.0 // indirect
16-
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
12+
github.com/mattn/go-colorable v0.1.13 // indirect
1713
github.com/mattn/go-isatty v0.0.20 // indirect
18-
github.com/mattn/go-runewidth v0.0.15 // indirect
19-
github.com/muesli/termenv v0.15.2 // indirect
20-
github.com/rivo/uniseg v0.4.7 // indirect
21-
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
14+
github.com/rs/zerolog v1.33.0 // indirect
2215
golang.org/x/sys v0.19.0 // indirect
2316
)

go.sum

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,32 @@
1-
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
2-
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
3-
github.com/charmbracelet/lipgloss v0.13.0 h1:4X3PPeoWEDCMvzDvGmTajSyYPcZM4+y8sCA/SsA3cjw=
4-
github.com/charmbracelet/lipgloss v0.13.0/go.mod h1:nw4zy0SBX/F/eAO1cWdcvy6qnkDUxr8Lw7dvFrAIbbY=
5-
github.com/charmbracelet/log v0.4.0 h1:G9bQAcx8rWA2T3pWvx7YtPTPwgqpk7D68BX21IRW8ZM=
6-
github.com/charmbracelet/log v0.4.0/go.mod h1:63bXt/djrizTec0l11H20t8FDSvA4CRZJ1KH22MdptM=
7-
github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM=
8-
github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw=
1+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
92
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
104
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
115
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
12-
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
13-
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
14-
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
15-
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
6+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
7+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
8+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
9+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
10+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1611
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
1712
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
18-
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
19-
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
20-
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
21-
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
13+
github.com/nxtcoder17/go.pkgs v0.0.0-20250126144455-1acf7c99bcd9 h1:TsA6jYmrJiPgYa5pjfk+eMNuYGBvme7Wrj2ZL5ZIhwI=
14+
github.com/nxtcoder17/go.pkgs v0.0.0-20250126144455-1acf7c99bcd9/go.mod h1:Wwlf5tiz7hvWSeZKjZm2KQ+5gViid9z25DDB9TankX8=
15+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2216
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
23-
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
24-
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
25-
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
17+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
18+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
19+
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
20+
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
2621
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
22+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
2723
github.com/urfave/cli/v3 v3.0.0-beta1 h1:6DTaaUarcM0wX7qj5Hcvs+5Dm3dyUTBbEwIWAjcw9Zg=
2824
github.com/urfave/cli/v3 v3.0.0-beta1/go.mod h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y=
29-
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
30-
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
25+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3126
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3227
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
28+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3329
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
3430
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
3531
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
32+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)