Compare commits

...

7 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
69d2eb70a1 gitignore the output binaries 2024-03-06 12:58:34 +05:30
7910cec1e0 update module refs to work in outside GOPATH 2024-03-06 12:55:23 +05:30
664f82d4cf update Makefile to work with toolbox
- don't use podman prefix if `go` command is found
2024-03-06 12:51:13 +05:30
96f507fbe3 test: null args should return error 2024-02-05 14:30:23 +05:30
c9bad27e1d test: cli arg of just type 2024-02-05 14:28:32 +05:30
5 changed files with 58 additions and 25 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/out/

View File

@@ -1,16 +1,21 @@
GO_MODULE = qc MOD_NAME = qc
GO_MODULE_FULL = gitea.kevinnlsamuel.com/kevinnls/$(GO_MODULE) GO_MODULE = gitea.kevinnlsamuel.com/kevinnls/$(MOD_NAME)
OUTDIR = out/
ifeq "$(shell command -v go)" ""
prefix = podman run --interactive --tty --rm \ prefix = podman run --interactive --tty --rm \
--workdir /usr/local/go/src/$(GO_MODULE) \ --workdir /usr/local/go/src/$(GO_MODULE) \
--volume $(PWD)/:/usr/local/go/src/$(GO_MODULE)/:Z \ --volume $(PWD)/:/usr/local/go/src/$(GO_MODULE)/:Z \
golang:alpine golang:alpine
else
prefix =
endif
run: run:
$(prefix) go run $(GO_MODULE) $(ARGS) $(prefix) go run $(GO_MODULE) $(ARGS)
test: test:
$(prefix) go test ./... $(ARGS) $(prefix) go test ./... $(ARGS)
build: build:
$(prefix) go build -v $(GO_MODULE) $(ARGS) $(prefix) go build -o $(OUTDIR)/ -v $(GO_MODULE) $(ARGS)
sh: sh:
$(prefix) sh $(prefix) sh

View File

@@ -1,30 +1,38 @@
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++ {
switch args[i] { if strings.HasPrefix(args[i],"-") {
case "-c", "--commit", "-commit": switch args[i] {
shouldCommit = true case "-c", "--commit", "-commit":
case "-a", "--add", "-add": shouldCommit = true
shouldStage = true case "-a", "--add", "-add":
case "--": shouldStage = true
commit_message = args[i+1:] case "--":
break argparseloop commit_message = args[i+1:]
default: break argparseloop
if commit_type == "" { default:
commit_type = args[i] err = errors.New("unknown argument")
continue argparseloop return
} }
if commit_scope == "" {
commit_scope = args[i]
continue argparseloop
}
err = errors.New("unknown argument")
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

@@ -8,7 +8,7 @@ import (
func TestParse(t *testing.T) { func TestParse(t *testing.T) {
t.Run("no args", func(t *testing.T) { t.Run("no args", func(t *testing.T) {
error,ctype,cscope,shouldCommit,shouldStage,cmessage := Parse([]string{}) error,ctype,cscope,shouldCommit,shouldStage,cmessage := Parse([]string{})
assert.Equal(t, error, nil) assert.NotEqual(t, error, nil)
assert.Equal(t, ctype, "") assert.Equal(t, ctype, "")
assert.Equal(t, cscope, "") assert.Equal(t, cscope, "")
var wantedMessage []string var wantedMessage []string
@@ -16,4 +16,23 @@ 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("only type", func(t *testing.T) {
error,ctype,cscope,shouldCommit,shouldStage,cmessage := Parse([]string{"fix"})
assert.Equal(t, error, nil)
assert.Equal(t, ctype, "fix")
assert.Equal(t, cscope, "")
var wantedMessage []string
assert.DeepEqual(t, cmessage, wantedMessage)
assert.Equal(t, shouldCommit, 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)
})
} }

View File

@@ -3,7 +3,7 @@ package main
import ( import (
"fmt" "fmt"
"os" "os"
"qc/internal/argparser" "gitea.kevinnlsamuel.com/kevinnls/qc/internal/argparser"
) )
func main() { func main() {