Compare commits

...

2 Commits

Author SHA1 Message Date
b044825d1a parse my args properly! 2024-03-06 16:14:33 +05:30
d856a3bcd7 test arg parsing even more 2024-03-06 16:10:53 +05:30
2 changed files with 36 additions and 20 deletions

View File

@@ -1,10 +1,14 @@
package argparser package argparser
import "errors" import (
"errors"
"strings"
)
func Parse(args []string) (err error, commit_type string, commit_scope string, shouldCommit bool, shouldStage bool, commit_message []string) { func Parse(args []string) (err error, commit_type string, commit_scope string, shouldCommit bool, shouldStage bool, commit_message []string) {
argparseloop: argparseloop:
for i := 0; i < len(args); i++ { for i := 0; i < len(args); i++ {
if strings.HasPrefix(args[i],"-") {
switch args[i] { switch args[i] {
case "-c", "--commit", "-commit": case "-c", "--commit", "-commit":
shouldCommit = true shouldCommit = true
@@ -14,18 +18,22 @@ func Parse(args []string) (err error, commit_type string, commit_scope string, s
commit_message = args[i+1:] commit_message = args[i+1:]
break argparseloop break argparseloop
default: default:
if commit_type == "" {
commit_type = args[i]
continue argparseloop
}
if commit_scope == "" {
commit_scope = args[i]
continue argparseloop
}
err = errors.New("unknown argument") err = errors.New("unknown argument")
return return
} }
} }
if commit_type == "" {
commit_type = args[i]
} else if commit_scope == "" {
commit_scope = args[i]
} else {
err = errors.New("unknown argument")
return
}
}
if commit_type == "" {
err = errors.New("need at least type")
}
return return
} }

View File

@@ -26,5 +26,13 @@ func TestParse(t *testing.T) {
assert.Equal(t, shouldCommit, false) assert.Equal(t, shouldCommit, false)
assert.Equal(t, shouldStage, false) assert.Equal(t, shouldStage, false)
}) })
t.Run("fake arg", func(t *testing.T) {
error,_,_,_,_,_ := Parse([]string{"-f"})
assert.NotEqual(t, error, nil)
})
t.Run("excess arg", func(t *testing.T) {
error,_,_,_,_,_ := Parse([]string{"type","scope","fool me"})
assert.NotEqual(t, error, nil)
})
} }