Skip to content

Commit

Permalink
improve cli usage
Browse files Browse the repository at this point in the history
  • Loading branch information
o-fl0w committed Nov 23, 2023
1 parent 06d3f26 commit 10ec355
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 24 deletions.
13 changes: 7 additions & 6 deletions cmd/stash-vr/internal/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,22 @@ import (
"context"
"fmt"
"github.com/Khan/genqlient/graphql"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"stash-vr/internal/build"
"stash-vr/internal/config"
"stash-vr/internal/interrupt"
"stash-vr/internal/logger"
"stash-vr/internal/sections"
"stash-vr/internal/server"
"stash-vr/internal/stash"
"stash-vr/internal/stash/gql"
"stash-vr/internal/stimhub"
)

const listenAddress = ":9666"

func Run() error {
ctx := interrupt.Context()
func Run(ctx context.Context) error {
config.Init()
log.Logger = logger.New(config.Get().LogLevel, config.Get().DisableLogColor)
zerolog.DefaultContextLogger = &log.Logger

log.Info().Str("config", fmt.Sprintf("%+v", config.Get().Redacted())).Send()

Expand All @@ -32,7 +33,7 @@ func Run() error {

sections.Get(ctx, stashClient, stimhubClient)

err := server.Listen(ctx, listenAddress, stashClient, stimhubClient)
err := server.Listen(ctx, config.Get().ListenAddress, stashClient, stimhubClient)
if err != nil {
return fmt.Errorf("server: %w", err)
}
Expand Down
10 changes: 4 additions & 6 deletions cmd/stash-vr/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,13 @@
package main

import (
"github.com/rs/zerolog/log"
"log"
"stash-vr/cmd/stash-vr/internal"
_ "stash-vr/internal/logger"
"stash-vr/internal/interrupt"
)

func main() {
if err := internal.Run(); err != nil {
log.Warn().Err(err).Msg("Application EXIT with ERROR")
} else {
log.Info().Msg("Application EXIT without error")
if err := internal.Run(interrupt.Context()); err != nil {
log.Fatal("Application EXIT with ERROR", err)
}
}
23 changes: 22 additions & 1 deletion internal/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@ package config
import (
"github.com/spf13/pflag"
"github.com/spf13/viper"
"os"
"strings"
)

const (
envKeyListenAddress = "LISTEN_ADDR"
envKeyStashGraphQLUrl = "STASH_GRAPHQL_URL"
envKeyStashApiKey = "STASH_API_KEY"
envKeyFavoriteTag = "FAVORITE_TAG"
envKeyFilters = "FILTERS"
envKeyLogLevel = "LOG_LEVEL"
envKeyDisableLogColor = "DISABLE_LOG_COLOR"
envKeyDisableRedact = "DISABLE_REDACT"
envKeyForceHTTPS = "FORCE_HTTPS"
envKeyDisableHeatmap = "DISABLE_HEATMAP"
Expand All @@ -22,12 +25,14 @@ const (
)

type Application struct {
ListenAddress string
StashGraphQLUrl string
StashApiKey string
FavoriteTag string
Filters string
IsSyncMarkersAllowed bool
LogLevel string
DisableLogColor bool
IsRedactDisabled bool
ForceHTTPS bool
IsHeatmapDisabled bool
Expand All @@ -38,7 +43,10 @@ type Application struct {

var cfg Application

func init() {
func Init() {
pflag.String(envKeyListenAddress, ":9666", "Local address for Stash-VR to listen on")
_ = viper.BindPFlag(envKeyListenAddress, pflag.Lookup(envKeyListenAddress))

pflag.String(envKeyStashGraphQLUrl, "http://localhost:9999/graphql", "Url to Stash graphql")
_ = viper.BindPFlag(envKeyStashGraphQLUrl, pflag.Lookup(envKeyStashGraphQLUrl))

Expand All @@ -57,6 +65,9 @@ func init() {
pflag.String(envKeyLogLevel, "info", "Set log level - trace, debug, warn, info or error")
_ = viper.BindPFlag(envKeyLogLevel, pflag.Lookup(envKeyLogLevel))

pflag.Bool(envKeyDisableLogColor, false, "Disable colors in log output")
_ = viper.BindPFlag(envKeyDisableLogColor, pflag.Lookup(envKeyDisableLogColor))

pflag.Bool(envKeyDisableRedact, false, "Disable redacting sensitive information from logs")
_ = viper.BindPFlag(envKeyDisableRedact, pflag.Lookup(envKeyDisableRedact))

Expand All @@ -75,16 +86,26 @@ func init() {
pflag.String(envKeyStimhubUrl, "", "")
_ = viper.BindPFlag(envKeyStimhubUrl, pflag.Lookup(envKeyStimhubUrl))

pflag.BoolP("help", "h", false, "Display usage information")
_ = viper.BindPFlag("help", pflag.Lookup("help"))

pflag.Parse()

if viper.GetBool("help") {
pflag.Usage()
os.Exit(1)
}

viper.AutomaticEnv()

cfg.ListenAddress = viper.GetString(envKeyListenAddress)
cfg.StashGraphQLUrl = viper.GetString(envKeyStashGraphQLUrl)
cfg.StashApiKey = viper.GetString(envKeyStashApiKey)
cfg.FavoriteTag = viper.GetString(envKeyFavoriteTag)
cfg.Filters = viper.GetString(envKeyFilters)
cfg.IsSyncMarkersAllowed = viper.GetBool(envKeyAllowSyncMarkers)
cfg.LogLevel = strings.ToLower(viper.GetString(envKeyLogLevel))
cfg.DisableLogColor = viper.GetBool(envKeyDisableLogColor)
cfg.IsRedactDisabled = viper.GetBool(envKeyDisableRedact)
cfg.ForceHTTPS = viper.GetBool(envKeyForceHTTPS)
cfg.IsHeatmapDisabled = viper.GetBool(envKeyDisableHeatmap)
Expand Down
18 changes: 8 additions & 10 deletions internal/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,19 @@ import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"os"
"stash-vr/internal/config"
)

func init() {
log.Logger = log.Output(zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: "Jan 02, 15:04:05",
}).With().Str("mod", "default").Logger().Level(zerolog.TraceLevel) //.With().Caller().Logger()

level, err := zerolog.ParseLevel(config.Get().LogLevel)
func New(level string, disableColor bool) zerolog.Logger {
lvl, err := zerolog.ParseLevel(level)
if err != nil {
panic(fmt.Sprintf("error parsing log level: %v", err))
}

log.Logger = log.Logger.Level(level)
l := log.Output(zerolog.ConsoleWriter{
Out: os.Stderr,
TimeFormat: "Jan 02, 15:04:05",
NoColor: disableColor,
}).With().Str("mod", "default").Logger().Level(lvl) //.With().Caller().Logger()

zerolog.DefaultContextLogger = &log.Logger
return l
}
2 changes: 1 addition & 1 deletion internal/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func Listen(ctx context.Context, listenAddress string, stashClient graphql.Clien

g.Go(func() error {
log.Ctx(ctx).Info().Msg(fmt.Sprintf("Server listening at %s", listenAddress))
if err := server.ListenAndServe(); errors.Is(err, http.ErrServerClosed) {
if err := server.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
return fmt.Errorf("listen: %w", err)
}
return nil
Expand Down

0 comments on commit 10ec355

Please sign in to comment.