diff --git a/CHANGELOG.md b/CHANGELOG.md index 750c3b2..3d6bc83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## vNext +- Added `version` command to support viewing the current release version of the running binary + ## v0.4.0 - Added `--tf-init-options` and `--tf-apply-options` for greater control over underlying provisioner - Added `--save-options` flag to persist the `--tf-init-options` and `--tf-apply-options` to the diff --git a/Makefile b/Makefile index cf837de..3561591 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +VERSION := $(shell git describe --always --long --dirty) + all: mocks test build # Generate client code from swagger in a local dce repo (make openapi DCE_REPO=/path/to/dce) @@ -31,7 +33,7 @@ test_unit: go test -count=1 -v ./tests/unit/ build: - go build . + go build -ldflags "-X github.com/Optum/dce-cli/cmd.version=${VERSION}" . .PHONY: docs docs: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e628963..b1d69d5 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -23,6 +23,10 @@ pool: steps: +- bash: | + GIT_VERSION="$(git describe --always --long --dirty)" + echo "##vso[task.setvariable variable=VERSION]${GIT_VERSION}" + - task: GoTool@0 inputs: version: '1.13' @@ -36,7 +40,7 @@ steps: - script: | set -x # etcd depdendency bug workaround. See commends in go.mod for more details. - go build -v . + go build -ldflags "-X github.com/Optum/dce-cli/cmd.version=$(VERSION)" -v . sudo rm /home/vsts/go/pkg/mod/github.com/coreos/etcd@v3.3.10+incompatible/client/keys.generated.go make test displayName: 'Run tests' @@ -46,19 +50,19 @@ steps: mkdir dist && cd dist # zip for windows and calculate sha256 hash WINFILE=dce_windows_amd64.zip - env GOOS=windows GOARCH=amd64 go build -v -o ./dce .. + env GOOS=windows GOARCH=amd64 go build -ldflags "-X github.com/Optum/dce-cli/cmd.version=$(VERSION)" -v -o ./dce .. zip -m $WINFILE ./dce WINSHA=$(IFS=' '; read -ra ADDR <<< $(sha256sum $WINFILE); echo "${ADDR[0]}") # zip for linux and calculate sha256 hash LINFILE=dce_linux_amd64.zip - env GOOS=linux GOARCH=amd64 go build -v -o ./dce .. + env GOOS=linux GOARCH=amd64 go build -ldflags "-X github.com/Optum/dce-cli/cmd.version=$(VERSION)" -v -o ./dce .. zip -m $LINFILE ./dce LINSHA=$(IFS=' '; read -ra ADDR <<< $(sha256sum $LINFILE); echo "${ADDR[0]}") # zip for mac and calculate sha256 hash MACFILE=dce_darwin_amd64.zip - env GOOS=darwin GOARCH=amd64 go build -v -o ./dce .. + env GOOS=darwin GOARCH=amd64 go build -ldflags "-X github.com/Optum/dce-cli/cmd.version=$(VERSION)" -v -o ./dce .. zip -m $MACFILE ./dce MACSHA=$(IFS=' '; read -ra ADDR <<< $(sha256sum $MACFILE); echo "${ADDR[0]}") cat> ../release.md <<- EOF diff --git a/cmd/root.go b/cmd/root.go index ed8954a..1a844dc 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -71,6 +71,13 @@ func preRun(cmd *cobra.Command, args []string) error { return err } + // Check if the requested command is for a version check + // If it is, return here, as no creds are needed + + if cmd.Name() == versionCmd.Name() { + return nil + } + // Check if the user has valid creds, // otherwise require authentication creds := Util.AWSSession.Config.Credentials @@ -129,7 +136,9 @@ func onInit(cmd *cobra.Command, args []string) error { // If config file does not exist, // run the `dce init` command if !fsUtil.IsExistingFile(cfgFile) { - if cmd.Name() != initCmd.Name() { + if cmd.Name() == versionCmd.Name() { + return nil + } else if cmd.Name() != initCmd.Name() { return errors.New("Config file not found. Please type 'dce init' to generate one.") } } else { diff --git a/cmd/version.go b/cmd/version.go new file mode 100644 index 0000000..d953441 --- /dev/null +++ b/cmd/version.go @@ -0,0 +1,24 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "strings" +) + +var version string + +func init() { + RootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "View the running version of dce-cli", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + shortVersion := strings.Split(version, "-")[0] + finalVersion := strings.Replace(shortVersion, "v", "", 1) + fmt.Println(finalVersion) + }, +} diff --git a/docs/dce.md b/docs/dce.md index 8e5b346..eb65063 100644 --- a/docs/dce.md +++ b/docs/dce.md @@ -26,5 +26,6 @@ Disposable Cloud Environment (DCE) * [dce leases](dce_leases.md) - Manage dce leases * [dce system](dce_system.md) - Deploy and configure the DCE system * [dce usage](dce_usage.md) - View lease budget information +* [dce version](dce_version.md) - View the running version of dce-cli -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_accounts.md b/docs/dce_accounts.md index 02065a8..611a611 100644 --- a/docs/dce_accounts.md +++ b/docs/dce_accounts.md @@ -26,4 +26,4 @@ Manage dce accounts * [dce accounts list](dce_accounts_list.md) - list accounts * [dce accounts remove](dce_accounts_remove.md) - Remove an account from the accounts pool. -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_accounts_add.md b/docs/dce_accounts_add.md index d05040a..ef46f3b 100644 --- a/docs/dce_accounts_add.md +++ b/docs/dce_accounts_add.md @@ -28,4 +28,4 @@ dce accounts add [flags] * [dce accounts](dce_accounts.md) - Manage dce accounts -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_accounts_describe.md b/docs/dce_accounts_describe.md index 12ddd53..14a8b03 100644 --- a/docs/dce_accounts_describe.md +++ b/docs/dce_accounts_describe.md @@ -26,4 +26,4 @@ dce accounts describe [Accound ID] [flags] * [dce accounts](dce_accounts.md) - Manage dce accounts -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_accounts_list.md b/docs/dce_accounts_list.md index 6a947aa..475639b 100644 --- a/docs/dce_accounts_list.md +++ b/docs/dce_accounts_list.md @@ -26,4 +26,4 @@ dce accounts list [flags] * [dce accounts](dce_accounts.md) - Manage dce accounts -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_accounts_remove.md b/docs/dce_accounts_remove.md index 9335f29..8cdbcc2 100644 --- a/docs/dce_accounts_remove.md +++ b/docs/dce_accounts_remove.md @@ -26,4 +26,4 @@ dce accounts remove [Account ID] [flags] * [dce accounts](dce_accounts.md) - Manage dce accounts -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_auth.md b/docs/dce_auth.md index 76a75d2..f7e6239 100644 --- a/docs/dce_auth.md +++ b/docs/dce_auth.md @@ -26,4 +26,4 @@ dce auth [flags] * [dce](dce.md) - Disposable Cloud Environment (DCE) -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_init.md b/docs/dce_init.md index b4402a8..003054a 100644 --- a/docs/dce_init.md +++ b/docs/dce_init.md @@ -26,4 +26,4 @@ dce init [flags] * [dce](dce.md) - Disposable Cloud Environment (DCE) -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases.md b/docs/dce_leases.md index 4433bbb..ee96671 100644 --- a/docs/dce_leases.md +++ b/docs/dce_leases.md @@ -27,4 +27,4 @@ Manage dce leases * [dce leases list](dce_leases_list.md) - List leases using various query filters. * [dce leases login](dce_leases_login.md) - Login to a leased DCE account. (Sets AWS CLI credentials if used with no flags) -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases_create.md b/docs/dce_leases_create.md index fccf568..d4d7580 100644 --- a/docs/dce_leases_create.md +++ b/docs/dce_leases_create.md @@ -31,4 +31,4 @@ dce leases create [flags] * [dce leases](dce_leases.md) - Manage dce leases -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases_describe.md b/docs/dce_leases_describe.md index a447a74..af31561 100644 --- a/docs/dce_leases_describe.md +++ b/docs/dce_leases_describe.md @@ -26,4 +26,4 @@ dce leases describe [Lease ID] [flags] * [dce leases](dce_leases.md) - Manage dce leases -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases_end.md b/docs/dce_leases_end.md index 2d6c5a0..15e49e6 100644 --- a/docs/dce_leases_end.md +++ b/docs/dce_leases_end.md @@ -28,4 +28,4 @@ dce leases end [flags] * [dce leases](dce_leases.md) - Manage dce leases -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases_list.md b/docs/dce_leases_list.md index c68caad..950648a 100644 --- a/docs/dce_leases_list.md +++ b/docs/dce_leases_list.md @@ -32,4 +32,4 @@ dce leases list [flags] * [dce leases](dce_leases.md) - Manage dce leases -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_leases_login.md b/docs/dce_leases_login.md index 4a9bc73..283b619 100644 --- a/docs/dce_leases_login.md +++ b/docs/dce_leases_login.md @@ -29,4 +29,4 @@ dce leases login [Lease ID] [flags] * [dce leases](dce_leases.md) - Manage dce leases -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_system.md b/docs/dce_system.md index 6d88822..4bbaa12 100644 --- a/docs/dce_system.md +++ b/docs/dce_system.md @@ -23,4 +23,4 @@ Deploy and configure the DCE system * [dce](dce.md) - Disposable Cloud Environment (DCE) * [dce system deploy](dce_system_deploy.md) - Deploy DCE to a new master account -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_system_deploy.md b/docs/dce_system_deploy.md index 548bbd7..e334f0f 100644 --- a/docs/dce_system_deploy.md +++ b/docs/dce_system_deploy.md @@ -40,4 +40,4 @@ dce system deploy [flags] * [dce system](dce_system.md) - Deploy and configure the DCE system -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_usage.md b/docs/dce_usage.md index 58fe85e..c8a7a4b 100644 --- a/docs/dce_usage.md +++ b/docs/dce_usage.md @@ -28,4 +28,4 @@ dce usage [flags] * [dce](dce.md) - Disposable Cloud Environment (DCE) -###### Auto generated by spf13/cobra on 21-Jan-2020 +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/docs/dce_version.md b/docs/dce_version.md new file mode 100644 index 0000000..6858f53 --- /dev/null +++ b/docs/dce_version.md @@ -0,0 +1,29 @@ +## dce version + +View the running version of dce-cli + +### Synopsis + +View the running version of dce-cli + +``` +dce version [flags] +``` + +### Options + +``` + -h, --help help for version +``` + +### Options inherited from parent commands + +``` + --config string config file (default is "$HOME/.dce/config.yaml") +``` + +### SEE ALSO + +* [dce](dce.md) - Disposable Cloud Environment (DCE) + +###### Auto generated by spf13/cobra on 5-Feb-2020 diff --git a/go.mod b/go.mod index e9142f9..c157efd 100644 --- a/go.mod +++ b/go.mod @@ -31,18 +31,16 @@ require ( github.com/gogo/protobuf v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect github.com/grpc-ecosystem/grpc-gateway v1.9.0 // indirect - github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f - github.com/hashicorp/terraform v0.12.10 + github.com/hashicorp/terraform v0.12.10 // indirect github.com/manifoldco/promptui v0.3.2 github.com/mholt/archiver v3.1.1+incompatible - github.com/mitchellh/cli v1.0.0 github.com/mitchellh/go-homedir v1.1.0 github.com/nwaples/rardecode v1.0.0 // indirect github.com/pierrec/lz4 v2.3.0+incompatible // indirect github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4 github.com/pkg/errors v0.8.0 github.com/prometheus/client_golang v0.9.3 // indirect - github.com/shurcooL/githubv4 v0.0.0-20191006152017-6d1ea27df521 + github.com/shurcooL/githubv4 v0.0.0-20191006152017-6d1ea27df521 // indirect github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect github.com/sirupsen/logrus v1.2.0 github.com/spf13/cobra v0.0.5 @@ -56,7 +54,6 @@ require ( go.uber.org/atomic v1.4.0 // indirect go.uber.org/thriftrw v1.20.2 go.uber.org/zap v1.10.0 // indirect - golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20191105091915-95d230a53780 // indirect gopkg.in/yaml.v2 v2.2.4 ) diff --git a/go.sum b/go.sum index 25ea753..a7301f4 100644 --- a/go.sum +++ b/go.sum @@ -431,6 +431,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/nicksnyder/go-i18n v2.0.3+incompatible h1:XCCaWsCoy4KlWkhOr+63dkv6oJmitJ573uJqDBAiFiQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/nwaples/rardecode v1.0.0 h1:r7vGuS5akxOnR4JQSkko62RJ1ReCMXxQRPtxsiFMBOs=