Skip to content

Commit

Permalink
Added --version to all but ecs-dashboard
Browse files Browse the repository at this point in the history
Due to the way kingpin handles arguments you need to pass required args to get the version at the moment.
  • Loading branch information
hamstah committed Jun 19, 2018
1 parent 3d652b6 commit a2209e2
Show file tree
Hide file tree
Showing 15 changed files with 79 additions and 20 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.6.0
5.7.0
2 changes: 2 additions & 0 deletions cloudwatch/put-metric-data/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
metricName = kingpin.Flag("metric-name", "Name of the Cloudwatch metric").Required().String()
namespace = kingpin.Flag("namespace", "Name of the Cloudwatch namespace").Required().String()
dimensions = kingpin.Flag("dimension", "Dimensions name=value").StringMap()
Expand All @@ -19,6 +20,7 @@ func main() {
kingpin.CommandLine.Name = "cloudwatch-put-metric-data"
kingpin.CommandLine.Help = "Put a cloudwatch metric value."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
35 changes: 35 additions & 0 deletions common/info.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package common

import (
"fmt"
"os"

kingpin "gopkg.in/alecthomas/kingpin.v2"
)

var (
Version string = "???"
CommitHash string = "???"
)

type InfoFlags struct {
Version *bool
}

func VersionString() string {
return fmt.Sprintf("%s (%s)", Version, CommitHash)
}

func HandleInfoFlags(flags *InfoFlags) {
if *flags.Version {
fmt.Println(VersionString())
os.Exit(0)
}
}

func KingpinInfoFlags() *InfoFlags {

return &InfoFlags{
Version: kingpin.Flag("version", "Display the version").Short('v').Bool(),
}
}
2 changes: 2 additions & 0 deletions ec2/ip-from-name/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
name = kingpin.Flag("name", "Name of the EC2 instance").Required().String()
maxResults = kingpin.Flag("max-results", "Max number of IPs to return").Default("9").Int()
)
Expand All @@ -20,6 +21,7 @@ func main() {
kingpin.CommandLine.Name = "ec2-ip-from-name"
kingpin.CommandLine.Help = "Returns a list of instances IP with a given name."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
6 changes: 4 additions & 2 deletions ecr/get-login/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@ import (
)

var (
flags = common.KingpinSessionFlags()
output = kingpin.Flag("output", "Return the credentials instead of docker command").Default("shell").Enum("raw", "shell")
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
output = kingpin.Flag("output", "Return the credentials instead of docker command").Default("shell").Enum("raw", "shell")
)

func main() {
kingpin.CommandLine.Name = "ecr-get-login"
kingpin.CommandLine.Help = "Returns an authorization token from ECR."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
2 changes: 1 addition & 1 deletion ecs/dashboard/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import (

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/gobuffalo/packr"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/gobuffalo/packr"
kingpin "gopkg.in/alecthomas/kingpin.v2"
)

Expand Down
14 changes: 8 additions & 6 deletions ecs/deploy/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,20 @@ import (
)

var (
flags = common.KingpinSessionFlags()
taskName = kingpin.Flag("task-name", "ECS task name").Required().String()
cluster = kingpin.Flag("cluster", "ECS cluster").Required().String()
services = kingpin.Flag("service", "ECS services").Required().Strings()
images = kingpin.Flag("image", "Change the images to the new ones. Container name=image").StringMap()
timeout = kingpin.Flag("timeout", "Timeout when waiting for services to update").Default("300s").Duration()
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
taskName = kingpin.Flag("task-name", "ECS task name").Required().String()
cluster = kingpin.Flag("cluster", "ECS cluster").Required().String()
services = kingpin.Flag("service", "ECS services").Required().Strings()
images = kingpin.Flag("image", "Change the images to the new ones. Container name=image").StringMap()
timeout = kingpin.Flag("timeout", "Timeout when waiting for services to update").Default("300s").Duration()
)

func main() {
kingpin.CommandLine.Name = "ecs-deploy"
kingpin.CommandLine.Help = "Update a task definition on ECS."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
2 changes: 2 additions & 0 deletions ecs/run-task/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
taskDefinition = kingpin.Flag("task-definition", "ECS task definition").Required().String()
cluster = kingpin.Flag("cluster", "ECS cluster").Required().String()
)
Expand All @@ -17,6 +18,7 @@ func main() {
kingpin.CommandLine.Name = "ecs-run-task"
kingpin.CommandLine.Help = "Run a task on ECS."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
2 changes: 2 additions & 0 deletions elb/resolve-alb-external-url/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
loadBalancerName = kingpin.Flag("name", "Name of the load balancer").Required().String()
dnsPrefix = kingpin.Flag("dns-prefix", "Prefix to match on the DNS").String()
)
Expand All @@ -20,6 +21,7 @@ func main() {
kingpin.CommandLine.Name = "elb-resolve-alb-external-url"
kingpin.CommandLine.Help = "Resolve the public URL of an ALB."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
2 changes: 2 additions & 0 deletions elb/resolve-elb-external-url/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
loadBalancerName = kingpin.Flag("name", "Name of the load balancer").Required().String()
)

Expand All @@ -20,6 +21,7 @@ func main() {
kingpin.CommandLine.Name = "elb-resolve-elb-external-url"
kingpin.CommandLine.Help = "Resolve the public URL of an ELB."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
10 changes: 6 additions & 4 deletions iam/public-ssh-keys/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@ import (
)

var (
flags = common.KingpinSessionFlags()
username = kingpin.Flag("username", "Username to fetch the keys for, otherwise default to the logged in user.").Short('u').String()
encoding = kingpin.Flag("key-encoding", "Encoding of the key to return (SSH or PEM)").Default("SSH").Enum("PEM", "SSH")
groups = kingpin.Flag("allowed-group", "Fetch the keys only if the user is in this group. You can use --allowed-group multiple times.").Strings()
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
username = kingpin.Flag("username", "Username to fetch the keys for, otherwise default to the logged in user.").Short('u').String()
encoding = kingpin.Flag("key-encoding", "Encoding of the key to return (SSH or PEM)").Default("SSH").Enum("PEM", "SSH")
groups = kingpin.Flag("allowed-group", "Fetch the keys only if the user is in this group. You can use --allowed-group multiple times.").Strings()
)

func main() {
kingpin.CommandLine.Name = "iam-public-ssh-keys"
kingpin.CommandLine.Help = "Return public SSH keys for an IAM user."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session := session.Must(session.NewSession())
conf := common.AssumeRoleConfig(flags, session)
Expand Down
2 changes: 2 additions & 0 deletions iam/session/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
quiet = kingpin.Flag("quiet", "Do not output anything").Short('q').Default("false").Bool()
saveProfileName = kingpin.Flag("save-profile", "Save the profile in the AWS credentials storage").Short('s').String()
overwriteProfile = kingpin.Flag("overwrite-profile", "Overwrite the profile if it already exists").Default("false").Bool()
Expand All @@ -26,6 +27,7 @@ func main() {
kingpin.CommandLine.Name = "iam-session"
kingpin.CommandLine.Help = "Start a new session under a different role."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

if len(*flags.RoleArn) == 0 && len(*saveProfileName) != 0 && len(*flags.MFASerialNumber) == 0 {
common.Fatalln("--save-profile can only be used with --assume-role-arn or --mfa-serial-number")
Expand Down
2 changes: 2 additions & 0 deletions kms/env/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (

var (
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
command = kingpin.Arg("command", "Command to run, prefix with -- to pass args").Required().Strings()
kmsPrefix = kingpin.Flag("kms-prefix", "Prefix for the KMS environment variables").Default("KMS_").String()
ssmPrefix = kingpin.Flag("ssm-prefix", "Prefix for the SSM environment variables").Default("SSM_").String()
Expand All @@ -27,6 +28,7 @@ func main() {
kingpin.CommandLine.Name = "kms_env"
kingpin.CommandLine.Help = "Decrypt environment variables encrypted with KMS or SSM."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)
kmsClient := kms.New(session, conf)
Expand Down
10 changes: 6 additions & 4 deletions s3/download/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,18 @@ import (
)

var (
flags = common.KingpinSessionFlags()
bucket = kingpin.Flag("bucket", "Name of the bucket").Required().String()
key = kingpin.Flag("key", "Key to download").Required().String()
filename = kingpin.Flag("filename", "Output filename").Required().String()
flags = common.KingpinSessionFlags()
infoFlags = common.KingpinInfoFlags()
bucket = kingpin.Flag("bucket", "Name of the bucket").Required().String()
key = kingpin.Flag("key", "Key to download").Required().String()
filename = kingpin.Flag("filename", "Output filename").Required().String()
)

func main() {
kingpin.CommandLine.Name = "s3-download"
kingpin.CommandLine.Help = "Download a file from S3."
kingpin.Parse()
common.HandleInfoFlags(infoFlags)

session, conf := common.OpenSession(flags)

Expand Down
6 changes: 4 additions & 2 deletions scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@ base=$(dirname $0)/..

mkdir -p ${base}/bin
rm -f ${base}/bin/*.asc
version=$(cat ${base}/VERSION)
commit=$(git rev-parse --short HEAD)

echo "Building"
echo "Building ${version} (${commit})"
find ${base} -name "main.go" | while read src; do
src=$(realpath --relative-to=${base} ${src})
name=bin/$(echo ${src} | awk -F/ '{print $1"-"$2}')
echo " ${name}"
folder=`dirname ${src}`
if [ ! -f ${folder}/Makefile ]; then
CGO_ENABLED=0 go build -installsuffix cgo -o ${base}/${name} -ldflags="-s -w" ${folder}/*.go
CGO_ENABLED=0 go build -installsuffix cgo -o ${base}/${name} -ldflags="-s -w -X github.com/hamstah/awstools/common.Version=${version} -X github.com/hamstah/awstools/common.CommitHash=${commit}" ${folder}/*.go
gpg --armor --detach-sig ${base}/${name}
else
cd ${folder}
Expand Down

0 comments on commit a2209e2

Please sign in to comment.