aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-07-03 01:42:49 +0700
committerShulhan <ms@kilabit.info>2018-07-03 01:42:49 +0700
commit3cd3c933bea972b3eb9f1abb06de7e60dabfc4f0 (patch)
tree418c1fd5d9df805aba141fbdd13d837ba74219a7
parent53d50f6c36df97f9c02e0bd313204b7dda6a81be (diff)
downloadbeku-3cd3c933bea972b3eb9f1abb06de7e60dabfc4f0.tar.xz
Add flag operation to display version of CLI
-rw-r--r--cmd/beku/command.go22
-rw-r--r--cmd/beku/command_test.go2
-rw-r--r--cmd/beku/main.go3
-rw-r--r--cmd/beku/operation.go1
4 files changed, 25 insertions, 3 deletions
diff --git a/cmd/beku/command.go b/cmd/beku/command.go
index d237b22..87b02b9 100644
--- a/cmd/beku/command.go
+++ b/cmd/beku/command.go
@@ -12,6 +12,13 @@ import (
"github.com/shuLhan/beku"
)
+const (
+ verMajor = 0
+ verMinor = 3
+ verPatch = 0
+ verMetadata = "-dev"
+)
+
var (
errInvalidOptions = errors.New("error: invalid options")
errMultiOperations = errors.New("error: only at operation may be used at a time")
@@ -27,6 +34,7 @@ const (
flagOperationQuery = "Query the package database."
flagOperationRemove = "Remove package."
flagOperationSync = "Synchronize package. If no package is given, it will do rescan."
+ flagOperationVersion = "Print beku version."
flagOptionExclude = "Exclude package from further operation"
flagOptionNoConfirm = "No confirmation will be asked on any operation."
@@ -61,6 +69,9 @@ operations:
beku {-h|--help}
` + flagOperationHelp + `
+ beku {--version}
+ ` + flagOperationVersion + `
+
beku {-B|--freeze}
` + flagOperationFreeze + `
@@ -95,6 +106,10 @@ operations:
fmt.Fprint(os.Stderr, help)
}
+func (cmd *command) version() {
+ fmt.Printf("beku v%d.%d.%d%s\n", verMajor, verMinor, verPatch, verMetadata)
+}
+
func (cmd *command) parseDatabaseFlags(arg string) (operation, error) {
if len(arg) == 0 {
return opNone, nil
@@ -254,6 +269,8 @@ func (cmd *command) parseLongFlags(arg string) (op operation, err error) {
op = opUpdate
case "vendor":
cmd.vendor = true
+ case "version":
+ op = opVersion
default:
return opNone, errInvalidOptions
}
@@ -266,7 +283,7 @@ func (cmd *command) parseLongFlags(arg string) (op operation, err error) {
//
// parseFlags for multiple operations, invalid options, or empty targets.
//
-// (0) "-h" or "--help" flag is a stopper.
+// (0) "-h", "--help", "--version" flag is a stopper.
// (1) Only one operation is allowed.
// (2) "-R" or "-S" must have target
//
@@ -313,7 +330,8 @@ func (cmd *command) parseFlags(args []string) (err error) {
break
}
// (0)
- if op == opHelp {
+ if op == opHelp || op == opVersion {
+ cmd.op = op
return
}
}
diff --git a/cmd/beku/command_test.go b/cmd/beku/command_test.go
index 1b84781..cae8e55 100644
--- a/cmd/beku/command_test.go
+++ b/cmd/beku/command_test.go
@@ -126,7 +126,7 @@ func testParseFlags(t *testing.T) {
}, {
args: []string{"-Q", "-h"},
expCmd: &command{
- op: opQuery | opHelp,
+ op: opHelp,
},
}, {
args: []string{"A", "-Q", "B"},
diff --git a/cmd/beku/main.go b/cmd/beku/main.go
index 512cd42..9f40c80 100644
--- a/cmd/beku/main.go
+++ b/cmd/beku/main.go
@@ -35,6 +35,9 @@ func main() {
case opHelp:
cmd.usage()
os.Exit(1)
+ case opVersion:
+ cmd.version()
+ os.Exit(0)
case opDatabase | opExclude:
cmd.env.Exclude(cmd.pkgs)
case opFreeze:
diff --git a/cmd/beku/operation.go b/cmd/beku/operation.go
index 85b2097..dc82cab 100644
--- a/cmd/beku/operation.go
+++ b/cmd/beku/operation.go
@@ -19,4 +19,5 @@ const (
opSync
opSyncInto
opUpdate
+ opVersion
)