Skip to content

Commit

Permalink
Improve config defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
robinovitch61 committed Jul 9, 2022
1 parent dea9cf8 commit 6f4982c
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 35 deletions.
12 changes: 6 additions & 6 deletions README.md
Expand Up @@ -69,19 +69,19 @@ Priority in order of highest to lowest is command line arguments, then environme
Example yaml file showing all options:

```shell
# required: nomad address
# Nomad address. Default 'http://localhost:4646'
nomad_addr: http://localhost:4646

# optional: nomad token (default "")
# Nomad token. Default ''
nomad_token: <your-nomad-token>

# optional (default 2): update interval for jobs and allocations data. Disable by setting to -1
# Seconds between updates for job & allocation pages. Disable with '-1'. Default '2'
wander_update_seconds: 1

# only relevant for `wander serve` - the host of the machine serving the ssh app
# For `wander serve`. Hostname of the machine hosting the ssh server. Default 'localhost'
wander_host: localhost

# only relevant for `wander serve` - the port for the ssh app
# For `wander serve`. Port for the ssh server. Default '21324'
wander_port: 21324
```

Expand Down Expand Up @@ -111,7 +111,7 @@ nomad job init
nomad job run example.nomad

# run wander
wander -a http://localhost:4646
wander
```

## Development
Expand Down
12 changes: 6 additions & 6 deletions cmd/root.go
Expand Up @@ -70,21 +70,21 @@ func init() {
cobra.OnInitialize(initConfig)

// root
rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "Config file (default is $HOME/.wander.yaml)")
rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "Config file path. Default '$HOME/.wander.yaml'")
rootCmd.PersistentFlags().BoolP("help", "", false, "Print usage")

// NOTE: default values here are unused even if default exists as they break the desired priority of cli args > env vars > config file > default if exists
rootCmd.PersistentFlags().StringP(tokenArg.cliLong, tokenArg.cliShort, "", "Nomad token for HTTP API auth (default '')")
rootCmd.PersistentFlags().StringP(tokenArg.cliLong, tokenArg.cliShort, "", "Nomad token. Default ''")
viper.BindPFlag(tokenArg.cliLong, rootCmd.PersistentFlags().Lookup(tokenArg.config))
rootCmd.PersistentFlags().StringP(addrArg.cliLong, addrArg.cliShort, "", "Nomad address, e.g. http://localhost:4646")
rootCmd.PersistentFlags().StringP(addrArg.cliLong, addrArg.cliShort, "", "Nomad address. Default 'http://localhost:4646'")
viper.BindPFlag(addrArg.cliLong, rootCmd.PersistentFlags().Lookup(addrArg.config))
rootCmd.PersistentFlags().StringP(updateSecondsArg.cliLong, updateSecondsArg.cliShort, "", "Number of seconds between page updates (-1 to disable)")
rootCmd.PersistentFlags().StringP(updateSecondsArg.cliLong, updateSecondsArg.cliShort, "", "Seconds between updates for job & allocation pages. -1 to disable. Default '2'")
viper.BindPFlag(updateSecondsArg.cliLong, rootCmd.PersistentFlags().Lookup(updateSecondsArg.config))

// serve
serveCmd.PersistentFlags().StringP(hostArg.cliLong, hostArg.cliShort, "", "Host for wander ssh server")
serveCmd.PersistentFlags().StringP(hostArg.cliLong, hostArg.cliShort, "", "Host for wander ssh server. Default 'localhost'")
viper.BindPFlag(hostArg.cliLong, serveCmd.PersistentFlags().Lookup(hostArg.config))
serveCmd.PersistentFlags().StringP(portArg.cliLong, portArg.cliShort, "", "Port for wander ssh server")
serveCmd.PersistentFlags().StringP(portArg.cliLong, portArg.cliShort, "", "Port for wander ssh server. Default '21324'")
viper.BindPFlag(portArg.cliLong, serveCmd.PersistentFlags().Lookup(portArg.config))

rootCmd.AddCommand(serveCmd)
Expand Down
14 changes: 3 additions & 11 deletions cmd/serve.go
Expand Up @@ -40,19 +40,11 @@ var (
)

func serveEntrypoint(cmd *cobra.Command, args []string) {
host, err := retrieve(cmd, hostArg)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
portStr, err := retrieve(cmd, portArg)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
host := retrieveWithDefault(cmd, hostArg, "localhost")
portStr := retrieveWithDefault(cmd, portArg, "21324")
port, err := strconv.Atoi(portStr)
if err != nil {
fmt.Println(err)
fmt.Println(fmt.Errorf("could not convert %s to integer", portStr))
os.Exit(1)
}

Expand Down
18 changes: 8 additions & 10 deletions cmd/util.go
Expand Up @@ -5,7 +5,6 @@ import (
"github.com/charmbracelet/wish"
"github.com/gliderlabs/ssh"
"github.com/robinovitch61/wander/internal/tui/components/app"
"github.com/robinovitch61/wander/internal/tui/constants"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"log"
Expand Down Expand Up @@ -36,7 +35,7 @@ func retrieve(cmd *cobra.Command, a arg) (string, error) {
return val, nil
}

func retrieveAssertExistsWithFallback(cmd *cobra.Command, currArg, oldArg arg) (string, error) {
func retrieveWithFallback(cmd *cobra.Command, currArg, oldArg arg) (string, error) {
val, err := retrieve(cmd, currArg)
if err != nil {
val, _ = retrieve(cmd, oldArg)
Expand All @@ -49,10 +48,10 @@ func retrieveAssertExistsWithFallback(cmd *cobra.Command, currArg, oldArg arg) (
return val, nil
}

func retrieveWithDefault(cmd *cobra.Command, short, long, defaultVal string) string {
val := cmd.Flag(short).Value.String()
func retrieveWithDefault(cmd *cobra.Command, a arg, defaultVal string) string {
val := cmd.Flag(a.cliLong).Value.String()
if val == "" {
val = viper.GetString(long)
val = viper.GetString(a.config)
}
if val == "" {
return defaultVal
Expand All @@ -61,16 +60,15 @@ func retrieveWithDefault(cmd *cobra.Command, short, long, defaultVal string) str
}

func retrieveAddress(cmd *cobra.Command) string {
val, err := retrieveAssertExistsWithFallback(cmd, addrArg, oldAddrArg)
val, err := retrieveWithFallback(cmd, addrArg, oldAddrArg)
if err != nil {
fmt.Println(err)
os.Exit(1)
return "http://localhost:4646"
}
return val
}

func retrieveToken(cmd *cobra.Command) string {
val, err := retrieveAssertExistsWithFallback(cmd, tokenArg, oldTokenArg)
val, err := retrieveWithFallback(cmd, tokenArg, oldTokenArg)
if err != nil {
return ""
}
Expand All @@ -82,7 +80,7 @@ func retrieveToken(cmd *cobra.Command) string {
}

func retrieveUpdateSeconds(cmd *cobra.Command) int {
updateSecondsString := retrieveWithDefault(cmd, updateSecondsArg.cliLong, updateSecondsArg.config, constants.DefaultUpdateSeconds)
updateSecondsString := retrieveWithDefault(cmd, updateSecondsArg, "2")
updateSeconds, err := strconv.Atoi(updateSecondsString)
if err != nil {
fmt.Println(fmt.Errorf("update value %s cannot be converted to an integer", updateSecondsString))
Expand Down
2 changes: 0 additions & 2 deletions internal/tui/constants/constants.go
Expand Up @@ -20,8 +20,6 @@ const ExecWebSocketClosed = "> connection closed <"

const ExecWebSocketHeartbeatDuration = time.Second * 10

const DefaultUpdateSeconds = "2"

const TablePadding = " "

var JobsViewportConditionalStyle = map[string]lipgloss.Style{
Expand Down

0 comments on commit 6f4982c

Please sign in to comment.