From 03bce5402b4d41bbeaaae6d3d906885cdb7e1102 Mon Sep 17 00:00:00 2001 From: rajat404 <404rajat@gmail.com> Date: Fri, 6 Mar 2020 09:41:52 +0530 Subject: [PATCH] Add flag for displaying only IPs of VMs, as per the query --- actions/search_instances.go | 16 ++++++++++++++++ config/loader.go | 2 ++ 2 files changed, 18 insertions(+) diff --git a/actions/search_instances.go b/actions/search_instances.go index 77ad454..89a9dfe 100644 --- a/actions/search_instances.go +++ b/actions/search_instances.go @@ -3,6 +3,7 @@ package action import ( "context" "fmt" + "strings" "github.com/devdinu/gcloud-client/config" "github.com/devdinu/gcloud-client/gcloud" @@ -56,12 +57,27 @@ func (s searcher) searchInstances(c gcloud.Client, args config.Args, matcher sto func (s searcher) formatInstances(insts []gcloud.Instance, args config.Args) error { hostMapping := args.InstanceCmdArgs.HostMapping + ipOnly := args.InstanceCmdArgs.IPOnly + if hostMapping { for _, ins := range insts { fmt.Printf("%-16s %s\n", ins.IP(), ins.Name) } return nil } + + if ipOnly { + output := "" + sep := "," + for _, ins := range insts { + output += ins.IP() + sep + } + output = strings.TrimRight(output, ",") + fmt.Printf("%s", output) + fmt.Printf("\n") + return nil + } + for _, ins := range insts { fmt.Printf("%s\n", ins) } diff --git a/config/loader.go b/config/loader.go index 3993140..65e2252 100644 --- a/config/loader.go +++ b/config/loader.go @@ -13,6 +13,7 @@ type InstanceCmdArgs struct { Regex string Refresh bool HostMapping bool + IPOnly bool } type Login struct { @@ -71,6 +72,7 @@ func MustLoad() { instanceCommand.StringVar(&instanceArgs.Prefix, "prefix", "", "search instances by common prefix") instanceCommand.StringVar(&instanceArgs.Regex, "regex", "", "search instances by regex") instanceCommand.BoolVar(&instanceArgs.HostMapping, "host_mapping", false, "return the search results in `/etc/hosts` file format") + instanceCommand.BoolVar(&instanceArgs.IPOnly, "ip_only", false, "returns comma separated list of IPs for matching hosts") instanceCommand.StringVar(&args.Login.Session, "session", "login-session", "login sesssion name") instanceCommand.StringVar(&args.Login.TemplatesDir, "templates", defaultCfg.TemplatesDir, "templates directory for tmuxinator")