diff options
| -rw-r--r-- | cmd/beku/command.go | 22 | ||||
| -rw-r--r-- | cmd/beku/command_test.go | 2 | ||||
| -rw-r--r-- | cmd/beku/main.go | 3 | ||||
| -rw-r--r-- | cmd/beku/operation.go | 1 |
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 ) |
