aboutsummaryrefslogtreecommitdiff
path: root/cmd/version.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/version.go')
-rw-r--r--cmd/version.go62
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/version.go b/cmd/version.go
new file mode 100644
index 0000000..787e2cd
--- /dev/null
+++ b/cmd/version.go
@@ -0,0 +1,62 @@
+/*
+ * version.go - Version subcommand that can be added to any binary
+ *
+ * Copyright 2017 Google Inc.
+ * Author: Joe Richey (joerichey@google.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package cmd
+
+// Templates for use with the version command, which both parse the Info var.
+var (
+ VersionShortTemplate = "{{.Command}} version {{.VersionTag}}\n"
+ VersionLongTemplate = VersionShortTemplate + `{{if .Compiled}}
+Compiled:
+ {{.Compiled}}
+{{end}}{{if len .Authors}}
+Author{{with $length := len .Authors}}{{if ne 1 $length}}s{{end}}{{end}}:{{range .Authors}}
+ {{.}}{{end}}
+{{end}}{{if .Copyright}}
+Copyright:
+ {{.Copyright}}
+{{end}}`
+)
+
+// Version is a command which will display either the VersionTag (by default) or
+// the full version information (version, copyright, authors).
+var Version = &Command{
+ Name: "version",
+ UsageLines: []string{""},
+ Flags: []Flag{longFlag},
+ Action: versionAction,
+}
+
+// Using longFlag with the version command displays the longer version info.
+var longFlag = &BoolFlag{
+ Name: "long",
+ Usage: "Print the detailed version and copyright information.",
+}
+
+func versionAction(_ []string) error {
+ if Info.VersionTag == "" {
+ return ErrUnknownVersion
+ }
+ if longFlag.Value {
+
+ } else {
+
+ }
+ return nil
+}