diff --git a/commander.go b/commander.go index 391f34a..72e60b2 100644 --- a/commander.go +++ b/commander.go @@ -33,7 +33,7 @@ func (c DefaultCommander) Exec(cmd *exec.Cmd) (string, error) { output, err := cmd.CombinedOutput() if err != nil { if c.logger != nil { - c.logger.Println(err) + c.logger.Println(err, string(output)) } return "", &ShellError{strings.Join(cmd.Args, " "), err} } diff --git a/options.go b/options.go index 658072d..d24aa34 100644 --- a/options.go +++ b/options.go @@ -136,12 +136,6 @@ func ParseOptions(argv []string) (*Options, error) { return nil, err } - // If config file flag is not set, and env is, use the env - val, ok := os.LookupEnv("SMUG_SESSION_CONFIG_PATH") - if *config == "" && ok { - *config = val - } - var project string if *config == "" { if errors.Is(cmdErr, ErrCommandNotFound) { @@ -151,6 +145,12 @@ func ParseOptions(argv []string) (*Options, error) { } } + // If config file flag is not set, and env is, use the env + val, ok := os.LookupEnv("SMUG_SESSION_CONFIG_PATH") + if *config == "" && project == "" && ok { + *config = val + } + if strings.Contains(project, ":") { parts := strings.Split(project, ":") project = parts[0] diff --git a/options_test.go b/options_test.go index 054c70c..33b7387 100644 --- a/options_test.go +++ b/options_test.go @@ -2,6 +2,7 @@ package main import ( "errors" + "os" "reflect" "testing" ) @@ -10,6 +11,7 @@ var usageTestTable = []struct { argv []string opts Options err error + env map[string]string }{ { []string{"start", "smug"}, @@ -24,6 +26,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "smug", "-w", "foo"}, @@ -38,6 +41,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "smug:foo,bar"}, @@ -52,6 +56,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "smug", "--attach", "--debug", "--detach"}, @@ -66,6 +71,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "smug", "-ad"}, @@ -80,6 +86,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "-f", "test.yml"}, @@ -94,6 +101,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "-f", "test.yml", "-w", "win1", "-w", "win2"}, @@ -108,6 +116,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"start", "project", "a=b", "x=y"}, @@ -125,6 +134,7 @@ var usageTestTable = []struct { }, }, nil, + nil, }, { []string{"start", "-f", "test.yml", "a=b", "x=y"}, @@ -142,6 +152,7 @@ var usageTestTable = []struct { }, }, nil, + nil, }, { []string{"start", "-f", "test.yml", "-w", "win1", "-w", "win2", "a=b", "x=y"}, @@ -159,11 +170,13 @@ var usageTestTable = []struct { }, }, nil, + nil, }, { []string{"start", "--help"}, Options{}, ErrHelp, + nil, }, { []string{"test"}, @@ -174,6 +187,7 @@ var usageTestTable = []struct { Settings: map[string]string{}, }, nil, + nil, }, { []string{"test", "-w", "win1", "-w", "win2", "a=b", "x=y"}, @@ -184,26 +198,47 @@ var usageTestTable = []struct { Settings: map[string]string{"a": "b", "x": "y"}, }, nil, + nil, + }, + { + []string{"test"}, + Options{ + Command: "start", + Project: "test", + Config: "", + Windows: []string{}, + Settings: map[string]string{}, + }, + nil, + map[string]string{ + "SMUG_SESSION_CONFIG_PATH": "test", + }, }, { []string{}, Options{}, ErrHelp, + nil, }, { []string{"--help"}, Options{}, ErrHelp, + nil, }, { []string{"start", "--test"}, Options{}, errors.New("unknown flag: --test"), + nil, }, } func TestParseOptions(t *testing.T) { for _, v := range usageTestTable { + for k, v := range v.env { + os.Setenv(k, v) + } opts, err := ParseOptions(v.argv) if v.err != nil && err != nil && err.Error() != v.err.Error() { t.Errorf("expected error %v, got %v", v.err, err)