Skip to content

Commit e78d8a6

Browse files
committed
fixed issues with flag system
1 parent daad22d commit e78d8a6

File tree

14 files changed

+499
-334
lines changed

14 files changed

+499
-334
lines changed

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gaka.iml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/builder.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ type ShakaRunnerBuilder struct {
99
}
1010

1111
func NewBuilder(binary ...string) *ShakaRunnerBuilder {
12-
binaryPath := ""
13-
if len(binary) > 0 && binary[0] != "" {
14-
binaryPath = binary[0]
15-
}
12+
binaryPath := ""
13+
if len(binary) > 0 && binary[0] != "" {
14+
binaryPath = binary[0]
15+
}
1616

1717
return &ShakaRunnerBuilder{
1818
runner: NewShakaPackager(binaryPath),
@@ -34,15 +34,15 @@ func (b *ShakaRunnerBuilder) Build() *ShakaPackager {
3434
return b.runner
3535
}
3636

37-
func (s *ShakaPackager) Args() ([]string, string, error) {
37+
func (s *ShakaPackager) Args() ([]string, []string, error) {
3838
streamOptions, err := buildStreamDescriptors(s.StreamOptions...)
3939
if err != nil {
40-
return nil, "", err
40+
return nil, nil, err
4141
}
4242

4343
flags, err := buildFlags(s.Flags)
4444
if err != nil {
45-
return nil, "", err
45+
return nil, nil, err
4646
}
4747

4848
return streamOptions, flags, nil

pkg/executor.go

Lines changed: 86 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -5,127 +5,127 @@
55
package packlit
66

77
import (
8-
"bufio"
9-
"context"
10-
"io"
11-
"log"
12-
"os"
13-
"os/exec"
8+
"bufio"
9+
"context"
10+
"io"
11+
"log"
12+
"os"
13+
"os/exec"
1414
)
1515

1616
type CommandRunner interface {
17-
CommandContext(context.Context, string, ...string) *exec.Cmd
17+
CommandContext(context.Context, string, ...string) *exec.Cmd
1818
}
1919

2020
type NativeCommandRunner struct{}
2121

2222
func (n *NativeCommandRunner) CommandContext(ctx context.Context, name string, args ...string) *exec.Cmd {
23-
return exec.CommandContext(ctx, name, args...)
23+
return exec.CommandContext(ctx, name, args...)
2424
}
2525

2626
type ShakaExecutor struct {
27-
shaka *ShakaPackager
28-
logger *log.Logger
29-
commandRunner CommandRunner
27+
shaka *ShakaPackager
28+
logger *log.Logger
29+
commandRunner CommandRunner
3030
}
3131

3232
// Creates new executor.
3333
// If logger is nil, it will create a new one with prefix [packlit]
3434
func NewExecutor(shaka *ShakaPackager, logger ...*log.Logger) *ShakaExecutor {
35-
return &ShakaExecutor{
36-
shaka: shaka,
37-
logger: getLogger(logger...),
38-
commandRunner: &NativeCommandRunner{},
39-
}
35+
return &ShakaExecutor{
36+
shaka: shaka,
37+
logger: getLogger(logger...),
38+
commandRunner: &NativeCommandRunner{},
39+
}
4040
}
4141

4242
func (e *ShakaExecutor) RunWithContext(ctx context.Context) error {
43-
args, err := e.shaka.BuildAndValidate()
44-
if err != nil {
45-
return err
46-
}
43+
args, err := e.shaka.BuildAndValidate()
44+
if err != nil {
45+
return err
46+
}
4747

48-
return e.runShaka(ctx, e.shaka.Binary, args)
48+
return e.runShaka(ctx, e.shaka.Binary, args)
4949
}
5050

5151
func (e *ShakaExecutor) Run() error {
52-
return e.RunWithContext(context.Background())
52+
return e.RunWithContext(context.Background())
5353
}
5454

5555
func (e *ShakaExecutor) RunAsync(ctx context.Context) (<-chan error, error) {
56-
args, flags, err := e.shaka.Args()
57-
if err != nil {
58-
return nil, err
59-
}
60-
61-
errorChn := make(chan error)
62-
63-
go func() {
64-
defer close(errorChn)
65-
66-
select {
67-
case <-ctx.Done():
68-
errorChn <- ctx.Err()
69-
return
70-
default:
71-
args = append(args, flags)
72-
err := e.runShaka(ctx, e.shaka.Binary, args)
73-
if err != nil {
74-
errorChn <- err
75-
}
76-
}
77-
}()
78-
79-
return errorChn, nil
56+
args, flags, err := e.shaka.Args()
57+
if err != nil {
58+
return nil, err
59+
}
60+
61+
errorChn := make(chan error)
62+
63+
go func() {
64+
defer close(errorChn)
65+
66+
select {
67+
case <-ctx.Done():
68+
errorChn <- ctx.Err()
69+
return
70+
default:
71+
args = append(args, flags...)
72+
err := e.runShaka(ctx, e.shaka.Binary, args)
73+
if err != nil {
74+
errorChn <- err
75+
}
76+
}
77+
}()
78+
79+
return errorChn, nil
8080
}
8181

8282
func readLog(reader io.Reader, fn func(string)) error {
83-
scanner := bufio.NewScanner(reader)
84-
for scanner.Scan() {
85-
msg := scanner.Text()
86-
fn(msg)
87-
}
83+
scanner := bufio.NewScanner(reader)
84+
for scanner.Scan() {
85+
msg := scanner.Text()
86+
fn(msg)
87+
}
8888

89-
return scanner.Err()
89+
return scanner.Err()
9090
}
9191

9292
func (e *ShakaExecutor) runShaka(ctx context.Context, binaryPath string, args []string) error {
93-
cmd := e.commandRunner.CommandContext(ctx, binaryPath, args...)
94-
95-
stdout, err := cmd.StdoutPipe()
96-
if err != nil {
97-
return err
98-
}
99-
100-
stderr, err := cmd.StderrPipe()
101-
if err != nil {
102-
return err
103-
}
104-
105-
err = cmd.Start()
106-
if err != nil {
107-
log.Fatalf("failed to start command: %v", err)
108-
}
109-
110-
go func() {
111-
_ = readLog(stdout, func(msg string) {
112-
log.Printf("[debug] %s", msg)
113-
})
114-
}()
115-
116-
go func() {
117-
_ = readLog(stderr, func(msg string) {
118-
log.Printf("[stderr] %s", msg)
119-
})
120-
}()
121-
122-
return cmd.Wait()
93+
cmd := e.commandRunner.CommandContext(ctx, binaryPath, args...)
94+
95+
stdout, err := cmd.StdoutPipe()
96+
if err != nil {
97+
return err
98+
}
99+
100+
stderr, err := cmd.StderrPipe()
101+
if err != nil {
102+
return err
103+
}
104+
105+
err = cmd.Start()
106+
if err != nil {
107+
log.Fatalf("failed to start command: %v", err)
108+
}
109+
110+
go func() {
111+
_ = readLog(stdout, func(msg string) {
112+
log.Printf("[debug] %s", msg)
113+
})
114+
}()
115+
116+
go func() {
117+
_ = readLog(stderr, func(msg string) {
118+
log.Printf("[stderr] %s", msg)
119+
})
120+
}()
121+
122+
return cmd.Wait()
123123
}
124124

125125
func getLogger(logger ...*log.Logger) *log.Logger {
126-
if len(logger) != 0 && logger[0] != nil {
127-
return logger[0]
128-
}
126+
if len(logger) != 0 && logger[0] != nil {
127+
return logger[0]
128+
}
129129

130-
return log.New(os.Stdout, "[packlit] ", log.LstdFlags)
130+
return log.New(os.Stdout, "[packlit] ", log.LstdFlags)
131131
}

pkg/executor_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestShakaExecutorRun(t *testing.T) {
3333
ctx := context.Background()
3434

3535
mockRunner := &MockCommandRunner{}
36-
mockRunner.On("CommandContext", ctx, "mock_binary", []string{"\\ "}).
36+
mockRunner.On("CommandContext", ctx, "mock_binary", []string{}).
3737
Return(exec.Command("echo", "hello world"))
3838

3939
shaka := NewShakaPackager("mock_binary")
@@ -48,15 +48,15 @@ func TestShakaExecutorRun(t *testing.T) {
4848

4949
// then
5050
require.NoError(t, err)
51-
mockRunner.AssertCalled(t, "CommandContext", ctx, "mock_binary", []string{"\\ "})
51+
mockRunner.AssertCalled(t, "CommandContext", ctx, "mock_binary", []string{})
5252
}
5353

5454
func TestShakaExecutorRunError(t *testing.T) {
5555
// given
5656
ctx := context.Background()
5757

5858
mockRunner := &MockCommandRunner{}
59-
mockRunner.On("CommandContext", ctx, "shaka-packager", []string{"\\ "}).
59+
mockRunner.On("CommandContext", ctx, "shaka-packager", []string{}).
6060
Return(exec.Command("false"))
6161

6262
shaka := NewShakaPackager("shaka-packager")
@@ -80,7 +80,7 @@ func TestShakaExecutorRunAsync(t *testing.T) {
8080
ctx := context.Background()
8181

8282
mockRunner := &MockCommandRunner{}
83-
mockRunner.On("CommandContext", ctx, "mock_binary", []string{""}).
83+
mockRunner.On("CommandContext", ctx, "mock_binary", []string{}).
8484
Return(exec.Command("echo", "hello world"))
8585

8686
shaka := NewShakaPackager("mock_binary")
@@ -96,14 +96,14 @@ func TestShakaExecutorRunAsync(t *testing.T) {
9696
// then
9797
require.NoError(t, err)
9898
require.NoError(t, <-chn)
99-
mockRunner.AssertCalled(t, "CommandContext", ctx, "mock_binary", []string{""})
99+
mockRunner.AssertCalled(t, "CommandContext", ctx, "mock_binary", []string{})
100100
}
101101

102102
func TestShakaExecutorErrorAsync(t *testing.T) {
103103
ctx := context.Background()
104104

105105
mockRunner := &MockCommandRunner{}
106-
mockRunner.On("CommandContext", ctx, "shaka-packager", []string{""}).
106+
mockRunner.On("CommandContext", ctx, "shaka-packager", []string{}).
107107
Return(exec.Command("false"))
108108

109109
shaka := NewShakaPackager("shaka-packager")
@@ -124,4 +124,4 @@ func TestShakaExecutorErrorAsync(t *testing.T) {
124124
require.Contains(t, err.Error(), "exit status 1")
125125

126126
mockRunner.AssertCalled(t, "CommandContext", ctx, mock.Anything, mock.Anything)
127-
}
127+
}

0 commit comments

Comments
 (0)