mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-07 05:23:33 +02:00
[#17] print usage on missing arguments
This commit is contained in:
@@ -15,27 +15,38 @@ PLATFORMS= \
|
|||||||
|
|
||||||
DIST=$(shell pwd)/dist
|
DIST=$(shell pwd)/dist
|
||||||
export GOPATH=$(shell pwd)
|
export GOPATH=$(shell pwd)
|
||||||
|
GOBIN ?= $(shell pwd)/bin
|
||||||
|
NAME=jira
|
||||||
|
|
||||||
build:
|
CURVER ?= $(shell git describe --abbrev=0 --tags)
|
||||||
cd src/github.com/Netflix-Skunkworks/go-jira/jira; \
|
LDFLAGS:=-X main.buildVersion=$(CURVER)
|
||||||
go get -v
|
|
||||||
|
|
||||||
|
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:
|
cross-setup:
|
||||||
for p in $(PLATFORMS); do \
|
for p in $(PLATFORMS); do \
|
||||||
echo "Building for $$p"; \
|
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
|
done
|
||||||
|
|
||||||
all:
|
all:
|
||||||
rm -rf $(DIST); \
|
rm -rf $(DIST); \
|
||||||
mkdir -p $(DIST); \
|
mkdir -p $(DIST); \
|
||||||
cd src/github.com/Netflix-Skunkworks/go-jira/jira; \
|
|
||||||
go get -d; \
|
|
||||||
for p in $(PLATFORMS); do \
|
for p in $(PLATFORMS); do \
|
||||||
echo "Building for $$p"; \
|
echo "Building for $$p"; \
|
||||||
GOOS=$${p/-*/} GOARCH=$${p/*-/} go build -v -ldflags -s -o $(DIST)/jira-$$p; \
|
GOOS=$${p/-*/} GOARCH=$${p/*-/} go build -v -ldflags "$(LDFLAGS) -s" -o $(DIST)/$(NAME)-$$p jira/main.go ; \
|
||||||
done
|
done
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
gofmt -s -w jira
|
gofmt -s -w jira
|
||||||
@@ -43,11 +54,6 @@ fmt:
|
|||||||
install:
|
install:
|
||||||
export GOBIN=~/bin && ${MAKE} build
|
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}')
|
NEWVER ?= $(shell echo $(CURVER) | awk -F. '{print $$1"."$$2"."$$3+1}')
|
||||||
TODAY := $(shell date +%Y-%m-%d)
|
TODAY := $(shell date +%Y-%m-%d)
|
||||||
|
|
||||||
@@ -65,9 +71,7 @@ update-changelog:
|
|||||||
tail +2 CHANGELOG.md >> CHANGELOG.md.new; \
|
tail +2 CHANGELOG.md >> CHANGELOG.md.new; \
|
||||||
mv CHANGELOG.md.new CHANGELOG.md; \
|
mv CHANGELOG.md.new CHANGELOG.md; \
|
||||||
git commit -m "Updated Changelog" 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)
|
git tag $(NEWVER)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf pkg dist bin && find src \! -path \*/go-jira\* -delete
|
rm -rf pkg dist bin src ./toolkit
|
||||||
|
|||||||
+36
-5
@@ -13,8 +13,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.MustGetLogger("jira")
|
var (
|
||||||
var format = "%{color}%{time:2006-01-02T15:04:05.000Z07:00} %{level:-5s} [%{shortfile}]%{color:reset} %{message}"
|
log = logging.MustGetLogger("jira")
|
||||||
|
format = "%{color}%{time:2006-01-02T15:04:05.000Z07:00} %{level:-5s} [%{shortfile}]%{color:reset} %{message}"
|
||||||
|
buildVersion string
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
logBackend := logging.NewLogBackend(os.Stderr, "", 0)
|
logBackend := logging.NewLogBackend(os.Stderr, "", 0)
|
||||||
@@ -166,7 +169,7 @@ Command Options:
|
|||||||
op := optigo.NewDirectAssignParser(map[string]interface{}{
|
op := optigo.NewDirectAssignParser(map[string]interface{}{
|
||||||
"h|help": usage,
|
"h|help": usage,
|
||||||
"version": func() {
|
"version": func() {
|
||||||
fmt.Println("version: 0.0.14")
|
fmt.Println(fmt.Sprintf("version: %s", buildVersion))
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
},
|
},
|
||||||
"v|verbose+": func() {
|
"v|verbose+": func() {
|
||||||
@@ -216,7 +219,7 @@ Command Options:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if command == "" {
|
if command == "" && len(args) > 0 {
|
||||||
command = args[0]
|
command = args[0]
|
||||||
args = args[1:]
|
args = args[1:]
|
||||||
}
|
}
|
||||||
@@ -228,7 +231,9 @@ Command Options:
|
|||||||
if value, ok := opts["command"].(string); ok {
|
if value, ok := opts["command"].(string); ok {
|
||||||
command = value
|
command = value
|
||||||
} else if _, ok := jiraCommands[command]; !ok || command == "" {
|
} else if _, ok := jiraCommands[command]; !ok || command == "" {
|
||||||
args = append([]string{command}, args...)
|
if command != "" {
|
||||||
|
args = append([]string{command}, args...)
|
||||||
|
}
|
||||||
command = "view"
|
command = "view"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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
|
var err error
|
||||||
switch command {
|
switch command {
|
||||||
case "login":
|
case "login":
|
||||||
@@ -279,6 +291,7 @@ Command Options:
|
|||||||
case "list":
|
case "list":
|
||||||
err = c.CmdList()
|
err = c.CmdList()
|
||||||
case "edit":
|
case "edit":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(true)
|
setEditing(true)
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
err = c.CmdEdit(args[0])
|
err = c.CmdEdit(args[0])
|
||||||
@@ -300,8 +313,10 @@ Command Options:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "editmeta":
|
case "editmeta":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdEditMeta(args[0])
|
err = c.CmdEditMeta(args[0])
|
||||||
case "transmeta":
|
case "transmeta":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdTransitionMeta(args[0])
|
err = c.CmdTransitionMeta(args[0])
|
||||||
case "issuelinktypes":
|
case "issuelinktypes":
|
||||||
err = c.CmdIssueLinkTypes()
|
err = c.CmdIssueLinkTypes()
|
||||||
@@ -313,50 +328,66 @@ Command Options:
|
|||||||
setEditing(true)
|
setEditing(true)
|
||||||
err = c.CmdCreate()
|
err = c.CmdCreate()
|
||||||
case "transitions":
|
case "transitions":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdTransitions(args[0])
|
err = c.CmdTransitions(args[0])
|
||||||
case "blocks":
|
case "blocks":
|
||||||
|
requireArgs(2)
|
||||||
err = c.CmdBlocks(args[0], args[1])
|
err = c.CmdBlocks(args[0], args[1])
|
||||||
case "dups":
|
case "dups":
|
||||||
|
requireArgs(2)
|
||||||
if err = c.CmdDups(args[0], args[1]); err == nil {
|
if err = c.CmdDups(args[0], args[1]); err == nil {
|
||||||
opts["resolution"] = "Duplicate"
|
opts["resolution"] = "Duplicate"
|
||||||
err = c.CmdTransition(args[0], "close")
|
err = c.CmdTransition(args[0], "close")
|
||||||
}
|
}
|
||||||
case "watch":
|
case "watch":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdWatch(args[0])
|
err = c.CmdWatch(args[0])
|
||||||
case "transition":
|
case "transition":
|
||||||
|
requireArgs(2)
|
||||||
setEditing(true)
|
setEditing(true)
|
||||||
err = c.CmdTransition(args[0], args[1])
|
err = c.CmdTransition(args[0], args[1])
|
||||||
case "close":
|
case "close":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "close")
|
err = c.CmdTransition(args[0], "close")
|
||||||
case "acknowledge":
|
case "acknowledge":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "acknowledge")
|
err = c.CmdTransition(args[0], "acknowledge")
|
||||||
case "reopen":
|
case "reopen":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "reopen")
|
err = c.CmdTransition(args[0], "reopen")
|
||||||
case "resolve":
|
case "resolve":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "resolve")
|
err = c.CmdTransition(args[0], "resolve")
|
||||||
case "start":
|
case "start":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "start")
|
err = c.CmdTransition(args[0], "start")
|
||||||
case "stop":
|
case "stop":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(false)
|
setEditing(false)
|
||||||
err = c.CmdTransition(args[0], "stop")
|
err = c.CmdTransition(args[0], "stop")
|
||||||
case "comment":
|
case "comment":
|
||||||
|
requireArgs(1)
|
||||||
setEditing(true)
|
setEditing(true)
|
||||||
err = c.CmdComment(args[0])
|
err = c.CmdComment(args[0])
|
||||||
case "take":
|
case "take":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdAssign(args[0], opts["user"].(string))
|
err = c.CmdAssign(args[0], opts["user"].(string))
|
||||||
case "browse":
|
case "browse":
|
||||||
|
requireArgs(1)
|
||||||
opts["browse"] = true
|
opts["browse"] = true
|
||||||
err = c.Browse(args[0])
|
err = c.Browse(args[0])
|
||||||
case "export-templates":
|
case "export-templates":
|
||||||
err = c.CmdExportTemplates()
|
err = c.CmdExportTemplates()
|
||||||
case "assign":
|
case "assign":
|
||||||
|
requireArgs(2)
|
||||||
err = c.CmdAssign(args[0], args[1])
|
err = c.CmdAssign(args[0], args[1])
|
||||||
case "view":
|
case "view":
|
||||||
|
requireArgs(1)
|
||||||
err = c.CmdView(args[0])
|
err = c.CmdView(args[0])
|
||||||
default:
|
default:
|
||||||
log.Error("Unknown command %s", command)
|
log.Error("Unknown command %s", command)
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
../../../../jira
|
|
||||||
Reference in New Issue
Block a user