Skip to content

Commit

Permalink
[go-jira#17] print usage on missing arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
coryb committed Nov 23, 2015
1 parent 80322b6 commit c8ae7fc
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 21 deletions.
36 changes: 20 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,39 +15,45 @@ PLATFORMS= \

DIST=$(shell pwd)/dist
export GOPATH=$(shell pwd)
GOBIN ?= $(shell pwd)/bin
NAME=jira

build:
cd src/github.com/Netflix-Skunkworks/go-jira/jira; \
go get -v
CURVER ?= $(shell git describe --abbrev=0 --tags)
LDFLAGS:=-X main.buildVersion=$(CURVER)

build: src/github.com/Netflix-Skunkworks/go-jira
go get -v github.com/coryb/optigo
go get -v github.com/kballard/go-shellquote
go get -v github.com/mgutz/ansi
go get -v github.com/op/go-logging
go get -v golang.org/x/crypto/ssh/terminal
go build -ldflags "$(LDFLAGS)" -o $(GOBIN)/$(NAME) jira/main.go

src/%:
mkdir -p $(@D)
test -L $@ || ln -sf ../../.. $@
go get -v $*

cross-setup:
for p in $(PLATFORMS); do \
echo "Building for $$p"; \
cd $(GOROOT)/src && sudo GOOS=$${p/-*/} GOARCH=$${p/*-/} bash ./make.bash --no-clean; \
cd $(GOROOT)/src && sudo GOROOT_BOOTSTRAP=$(GOROOT) GOOS=$${p/-*/} GOARCH=$${p/*-/} bash ./make.bash --no-clean; \
done

all:
rm -rf $(DIST); \
mkdir -p $(DIST); \
cd src/github.com/Netflix-Skunkworks/go-jira/jira; \
go get -d; \
for p in $(PLATFORMS); do \
echo "Building for $$p"; \
GOOS=$${p/-*/} GOARCH=$${p/*-/} go build -v -ldflags -s -o $(DIST)/jira-$$p; \
done
GOOS=$${p/-*/} GOARCH=$${p/*-/} go build -v -ldflags "$(LDFLAGS) -s" -o $(DIST)/$(NAME)-$$p jira/main.go ; \
done

fmt:
gofmt -s -w jira

install:
export GOBIN=~/bin && ${MAKE} build

# need gsort on OSX (brew install coreutils) or newer sort on linux
# that supports the -V option for version sorting
SORT=gsort

CURVER ?= $(shell git fetch --tags && git tag | $(SORT) -V | tail -1)
NEWVER ?= $(shell echo $(CURVER) | awk -F. '{print $$1"."$$2"."$$3+1}')
TODAY := $(shell date +%Y-%m-%d)

Expand All @@ -65,9 +71,7 @@ update-changelog:
tail +2 CHANGELOG.md >> CHANGELOG.md.new; \
mv CHANGELOG.md.new CHANGELOG.md; \
git commit -m "Updated Changelog" CHANGELOG.md; \
perl -pi -e "s/version: $(CURVER)/version: $(NEWVER)/" jira/main.go; \
git commit -m "bump version" jira/main.go; \
git tag $(NEWVER)

clean:
rm -rf pkg dist bin && find src \! -path \*/go-jira\* -delete
rm -rf pkg dist bin src ./toolkit
41 changes: 36 additions & 5 deletions jira/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,11 @@ import (
"strings"
)

var log = logging.MustGetLogger("jira")
var format = "%{color}%{time:2006-01-02T15:04:05.000Z07:00} %{level:-5s} [%{shortfile}]%{color:reset} %{message}"
var (
log = logging.MustGetLogger("jira")
format = "%{color}%{time:2006-01-02T15:04:05.000Z07:00} %{level:-5s} [%{shortfile}]%{color:reset} %{message}"
buildVersion string
)

func main() {
logBackend := logging.NewLogBackend(os.Stderr, "", 0)
Expand Down Expand Up @@ -166,7 +169,7 @@ Command Options:
op := optigo.NewDirectAssignParser(map[string]interface{}{
"h|help": usage,
"version": func() {
fmt.Println("version: 0.0.14")
fmt.Println(fmt.Sprintf("version: %s", buildVersion))
os.Exit(0)
},
"v|verbose+": func() {
Expand Down Expand Up @@ -216,7 +219,7 @@ Command Options:
}
}

if command == "" {
if command == "" && len(args) > 0 {
command = args[0]
args = args[1:]
}
Expand All @@ -228,7 +231,9 @@ Command Options:
if value, ok := opts["command"].(string); ok {
command = value
} else if _, ok := jiraCommands[command]; !ok || command == "" {
args = append([]string{command}, args...)
if command != "" {
args = append([]string{command}, args...)
}
command = "view"
}

Expand Down Expand Up @@ -270,6 +275,13 @@ Command Options:
}
}

requireArgs := func(count int) {
if len(args) < count {
log.Error("Not enough arguments. %d required, %d provided", count, len(args))
usage(false)
}
}

var err error
switch command {
case "login":
Expand All @@ -279,6 +291,7 @@ Command Options:
case "list":
err = c.CmdList()
case "edit":
requireArgs(1)
setEditing(true)
if len(args) > 0 {
err = c.CmdEdit(args[0])
Expand All @@ -300,8 +313,10 @@ Command Options:
}
}
case "editmeta":
requireArgs(1)
err = c.CmdEditMeta(args[0])
case "transmeta":
requireArgs(1)
err = c.CmdTransitionMeta(args[0])
case "issuelinktypes":
err = c.CmdIssueLinkTypes()
Expand All @@ -313,50 +328,66 @@ Command Options:
setEditing(true)
err = c.CmdCreate()
case "transitions":
requireArgs(1)
err = c.CmdTransitions(args[0])
case "blocks":
requireArgs(2)
err = c.CmdBlocks(args[0], args[1])
case "dups":
requireArgs(2)
if err = c.CmdDups(args[0], args[1]); err == nil {
opts["resolution"] = "Duplicate"
err = c.CmdTransition(args[0], "close")
}
case "watch":
requireArgs(1)
err = c.CmdWatch(args[0])
case "transition":
requireArgs(2)
setEditing(true)
err = c.CmdTransition(args[0], args[1])
case "close":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "close")
case "acknowledge":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "acknowledge")
case "reopen":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "reopen")
case "resolve":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "resolve")
case "start":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "start")
case "stop":
requireArgs(1)
setEditing(false)
err = c.CmdTransition(args[0], "stop")
case "comment":
requireArgs(1)
setEditing(true)
err = c.CmdComment(args[0])
case "take":
requireArgs(1)
err = c.CmdAssign(args[0], opts["user"].(string))
case "browse":
requireArgs(1)
opts["browse"] = true
err = c.Browse(args[0])
case "export-templates":
err = c.CmdExportTemplates()
case "assign":
requireArgs(2)
err = c.CmdAssign(args[0], args[1])
case "view":
requireArgs(1)
err = c.CmdView(args[0])
default:
log.Error("Unknown command %s", command)
Expand Down

0 comments on commit c8ae7fc

Please sign in to comment.