Browse Source

Started on simplifying command line arguments

master
Christopher Ramey 4 years ago
committed by Christopher Ramey
parent
commit
b94ae1e017
  1. 113
      alias.go
  2. 3
      config.go
  3. 94
      index.go

113
alias.go

@ -17,13 +17,15 @@ func handleAliasCommand() {
subcmd := strings.ToLower(os.Args[2]) subcmd := strings.ToLower(os.Args[2])
switch subcmd { switch subcmd {
case "ls":
fallthrough
case "list": case "list":
listcmd := flag.NewFlagSet("alias list", flag.ExitOnError)
listcmd.SetOutput(os.Stdout)
cfgpath := listcmd.String("config", "", "path to configuration")
server := listcmd.String("server", "", "server name to use")
aname := listcmd.String("name", "", "filter list to named alias")
listcmd.Parse(os.Args[3:])
cmd := flag.NewFlagSet("alias list", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
aname := cmd.String("name", "", "filter list to named alias")
cmd.Parse(os.Args[3:])
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
@ -44,87 +46,96 @@ func handleAliasCommand() {
} }
} }
case "create":
createcmd := flag.NewFlagSet("alias create", flag.ExitOnError)
createcmd.SetOutput(os.Stdout)
cfgpath := createcmd.String("config", "", "path to configuration")
server := createcmd.String("server", "", "server name to use")
aname := createcmd.String("name", "", "(required) name of alias")
iname := createcmd.String("index", "", "(required) name of index")
createcmd.Parse(os.Args[3:])
if *aname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for alias create\n")
createcmd.PrintDefaults()
os.Exit(1)
case "add":
cmd := flag.NewFlagSet("alias add", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cmd.Usage = func() {
fmt.Printf("Usage: %s alias %s [args] <alias> <index>...\n",
os.Args[0], subcmd)
cmd.PrintDefaults()
} }
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
cmd.Parse(os.Args[3:])
if *iname == "" {
fmt.Fprintf(os.Stderr, "index parameter is required for alias create\n")
createcmd.PrintDefaults()
if len(cmd.Args()) < 2 {
fmt.Fprintf(os.Stderr, "alias and index required for alias add\n")
cmd.Usage()
os.Exit(1) os.Exit(1)
} }
aname := cmd.Arg(0)
indexes := cmd.Args()[1:]
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
_, err := es.Alias().Add(*iname, *aname).Do(context.Background())
alias := es.Alias()
for _, index := range indexes {
alias.Add(index, aname)
}
_, err := alias.Do(context.Background())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error()) fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())
os.Exit(1) os.Exit(1)
} }
case "del":
fallthrough
case "delete": case "delete":
deletecmd := flag.NewFlagSet("alias delete", flag.ExitOnError)
deletecmd.SetOutput(os.Stdout)
cfgpath := deletecmd.String("config", "", "path to configuration")
server := deletecmd.String("server", "", "server name to use")
aname := deletecmd.String("name", "", "(required) name of alias")
iname := deletecmd.String("index", "", "(required) name of index")
deletecmd.Parse(os.Args[3:])
if *aname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for alias delete\n")
deletecmd.PrintDefaults()
os.Exit(1)
cmd := flag.NewFlagSet("alias delete", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cmd.Usage = func() {
fmt.Printf("Usage: %s alias %s [args] <alias> <index>...\n",
os.Args[0], subcmd)
cmd.PrintDefaults()
} }
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
cmd.Parse(os.Args[3:])
if *iname == "" {
fmt.Fprintf(os.Stderr, "index parameter is required for alias delete\n")
deletecmd.PrintDefaults()
if len(cmd.Args()) < 2 {
fmt.Fprintf(os.Stderr, "alias and index required for alias delete\n")
cmd.Usage()
os.Exit(1) os.Exit(1)
} }
aname := cmd.Arg(0)
indexes := cmd.Args()[1:]
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
_, err := es.Alias().Remove(*iname, *aname).Do(context.Background())
alias := es.Alias()
for _, index := range indexes {
alias.Remove(index, aname)
}
_, err := alias.Do(context.Background())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error()) fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())
os.Exit(1) os.Exit(1)
} }
case "replace": case "replace":
replacecmd := flag.NewFlagSet("alias replace", flag.ExitOnError)
replacecmd.SetOutput(os.Stdout)
cfgpath := replacecmd.String("config", "", "path to configuration")
server := replacecmd.String("server", "", "server name to use")
aname := replacecmd.String("name", "", "(required) name of alias")
oiname := replacecmd.String("oldindex", "", "name of the old index")
niname := replacecmd.String("newindex", "",
cmd := flag.NewFlagSet("alias replace", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
aname := cmd.String("name", "", "(required) name of alias")
oiname := cmd.String("oldindex", "", "name of the old index")
niname := cmd.String("newindex", "",
"(required) name of the new index") "(required) name of the new index")
replacecmd.Parse(os.Args[3:])
cmd.Parse(os.Args[3:])
if *aname == "" { if *aname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for alias replace\n") fmt.Fprintf(os.Stderr, "name parameter is required for alias replace\n")
replacecmd.PrintDefaults()
cmd.PrintDefaults()
os.Exit(1) os.Exit(1)
} }
if *niname == "" { if *niname == "" {
fmt.Fprintf(os.Stderr, fmt.Fprintf(os.Stderr,
"newindex parameter is required for alias replace\n") "newindex parameter is required for alias replace\n")
replacecmd.PrintDefaults()
cmd.PrintDefaults()
os.Exit(1) os.Exit(1)
} }
@ -177,7 +188,7 @@ func printAliasUsage() {
fmt.Printf(" on a specific command\n") fmt.Printf(" on a specific command\n")
fmt.Printf("valid subcommands:\n") fmt.Printf("valid subcommands:\n")
fmt.Printf(" list list aliases\n") fmt.Printf(" list list aliases\n")
fmt.Printf(" create create alias\n")
fmt.Printf(" add add alias\n")
fmt.Printf(" delete delete alias\n") fmt.Printf(" delete delete alias\n")
fmt.Printf(" replace replace alias (single step add/remove)\n")
fmt.Printf(" replace replace alias (single step add/delete)\n")
} }

3
config.go

@ -2,8 +2,8 @@ package main
import ( import (
"fmt" "fmt"
toml "github.com/pelletier/go-toml"
elastic "github.com/olivere/elastic/v7" elastic "github.com/olivere/elastic/v7"
toml "github.com/pelletier/go-toml"
"io/ioutil" "io/ioutil"
"os" "os"
) )
@ -59,7 +59,6 @@ func (ec *ElasticConfig) GetClient(name string) *elastic.Client {
return es return es
} }
func LoadConfig(cfgpath string) *ElasticConfig { func LoadConfig(cfgpath string) *ElasticConfig {
cfg := ElasticConfig{} cfg := ElasticConfig{}
if cfgpath != "" { if cfgpath != "" {

94
index.go

@ -18,6 +18,8 @@ func handleIndexCommand() {
subcmd := strings.ToLower(os.Args[2]) subcmd := strings.ToLower(os.Args[2])
switch subcmd { switch subcmd {
case "ls":
fallthrough
case "list": case "list":
listcmd := flag.NewFlagSet("index list", flag.ExitOnError) listcmd := flag.NewFlagSet("index list", flag.ExitOnError)
listcmd.SetOutput(os.Stdout) listcmd.SetOutput(os.Stdout)
@ -38,44 +40,54 @@ func handleIndexCommand() {
fmt.Printf("%s\n", index) fmt.Printf("%s\n", index)
} }
case "del":
fallthrough
case "delete": case "delete":
deletecmd := flag.NewFlagSet("index delete", flag.ExitOnError)
deletecmd.SetOutput(os.Stdout)
cfgpath := deletecmd.String("config", "", "path to configuration")
server := deletecmd.String("server", "", "server name to use")
iname := deletecmd.String("name", "", "(required) index name to delete")
deletecmd.Parse(os.Args[3:])
if *iname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for index delete\n")
deletecmd.PrintDefaults()
cmd := flag.NewFlagSet("index delete", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cmd.Usage = func() {
fmt.Printf("Usage: %s index %s [args] <index>...\n",
os.Args[0], subcmd)
cmd.PrintDefaults()
}
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
cmd.Parse(os.Args[3:])
if len(cmd.Args()) < 1 {
fmt.Fprintf(os.Stderr, "index name required for index delete\n")
cmd.Usage()
os.Exit(1) os.Exit(1)
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
_, err := es.DeleteIndex(*iname).Do(context.Background())
_, err := es.DeleteIndex(cmd.Args()...).Do(context.Background())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error()) fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())
os.Exit(1) os.Exit(1)
} }
case "create":
createcmd := flag.NewFlagSet("index create", flag.ExitOnError)
createcmd.SetOutput(os.Stdout)
cfgpath := createcmd.String("config", "", "path to configuration")
server := createcmd.String("server", "", "server name to use")
iname := createcmd.String("name", "", "(required) index name to create")
bodystr := createcmd.String("body", "",
"json string to use as body options during create")
bodyfile := createcmd.String("bodyfile", "",
"json file to use as body options during create")
createcmd.Parse(os.Args[3:])
if *iname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for index create\n")
createcmd.PrintDefaults()
case "add":
cmd := flag.NewFlagSet("index add", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cmd.Usage = func() {
fmt.Printf("Usage: %s index %s [args] <index>\n",
os.Args[0], subcmd)
cmd.PrintDefaults()
}
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
bodystr := cmd.String("body", "",
"json string to use as body options during add")
bodyfile := cmd.String("bodyfile", "",
"json file to use as body options during add")
cmd.Parse(os.Args[3:])
if len(cmd.Args()) < 1 {
fmt.Fprintf(os.Stderr, "index name required for index add\n")
cmd.PrintDefaults()
os.Exit(1) os.Exit(1)
} }
@ -98,7 +110,7 @@ func handleIndexCommand() {
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
ics := es.CreateIndex(*iname)
ics := es.CreateIndex(cmd.Arg(0))
if body != "" { if body != "" {
ics.Body(body) ics.Body(body)
} }
@ -109,23 +121,27 @@ func handleIndexCommand() {
} }
case "refresh": case "refresh":
refreshcmd := flag.NewFlagSet("index refresh", flag.ExitOnError)
refreshcmd.SetOutput(os.Stdout)
cfgpath := refreshcmd.String("config", "", "path to configuration")
server := refreshcmd.String("server", "", "server name to use")
iname := refreshcmd.String("name", "", "(required) index name to refresh")
refreshcmd.Parse(os.Args[3:])
if *iname == "" {
fmt.Fprintf(os.Stderr, "name parameter is required for index refresh\n")
refreshcmd.PrintDefaults()
cmd := flag.NewFlagSet("index refresh", flag.ExitOnError)
cmd.SetOutput(os.Stdout)
cmd.Usage = func() {
fmt.Printf("Usage: %s index %s [args] <index>...\n",
os.Args[0], subcmd)
cmd.PrintDefaults()
}
cfgpath := cmd.String("config", "", "path to configuration")
server := cmd.String("server", "", "server name to use")
cmd.Parse(os.Args[3:])
if len(cmd.Args()) < 1 {
fmt.Fprintf(os.Stderr, "index name required for index refresh\n")
cmd.Usage()
os.Exit(1) os.Exit(1)
} }
cfg := LoadConfig(*cfgpath) cfg := LoadConfig(*cfgpath)
es := cfg.GetClient(*server) es := cfg.GetClient(*server)
_, err := es.Refresh(*iname).Do(context.Background())
_, err := es.Refresh(cmd.Args()...).Do(context.Background())
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error()) fmt.Fprintf(os.Stderr, "elastic error: %s\n", err.Error())
os.Exit(1) os.Exit(1)
@ -149,7 +165,7 @@ func printIndexUsage() {
fmt.Printf(" on a specific command\n") fmt.Printf(" on a specific command\n")
fmt.Printf("valid subcommands:\n") fmt.Printf("valid subcommands:\n")
fmt.Printf(" list list indexes\n") fmt.Printf(" list list indexes\n")
fmt.Printf(" add add index\n")
fmt.Printf(" delete delete index\n") fmt.Printf(" delete delete index\n")
fmt.Printf(" create create index\n")
fmt.Printf(" refresh refresh index\n") fmt.Printf(" refresh refresh index\n")
} }
Loading…
Cancel
Save