@@ -13,8 +13,17 @@ import (
1313
1414 "github.com/rs/zerolog"
1515 "github.com/rs/zerolog/log"
16- "github.com/smartcontractkit/chainlink-testing-framework/parrot"
1716 "github.com/spf13/cobra"
17+
18+ "github.com/smartcontractkit/chainlink-testing-framework/parrot"
19+ )
20+
21+ const (
22+ envPort = "PARROT_PORT"
23+ envLogLevel = "PARROT_LOG_LEVEL"
24+ envJSON = "PARROT_JSON"
25+ envRecorders = "PARROT_RECORDERS"
26+ envHost = "PARROT_HOST"
1827)
1928
2029func main () {
@@ -23,32 +32,38 @@ func main() {
2332 debug bool
2433 trace bool
2534 silent bool
35+ logLevel string
2636 json bool
2737 recorders []string
38+ host string
2839 )
2940
3041 preRun := func (cmd * cobra.Command , args []string ) {
3142 // Check environment variables if flags are not set
3243 if ! cmd .Flags ().Changed ("port" ) {
33- if envPort , err := strconv .Atoi (os .Getenv ("PARROT_PORT" )); err == nil {
44+ if envPort , err := strconv .Atoi (os .Getenv (envPort )); err == nil {
3445 port = envPort
3546 }
3647 }
37- if ! cmd .Flags ().Changed ("debug" ) {
38- debug = os .Getenv ("PARROT_DEBUG" ) == "true"
39- }
40- if ! cmd .Flags ().Changed ("trace" ) {
41- trace = os .Getenv ("PARROT_TRACE" ) == "true"
48+ if ! cmd .Flags ().Changed ("host" ) {
49+ if addr := os .Getenv (envHost ); addr != "" {
50+ host = addr
51+ }
4252 }
43- if ! cmd .Flags ().Changed ("silent" ) {
44- silent = os .Getenv ("PARROT_SILENT" ) == "true"
53+ if ! cmd .Flags ().Changed ("debug" ) &&
54+ ! cmd .Flags ().Changed ("trace" ) &&
55+ ! cmd .Flags ().Changed ("silent" ) &&
56+ ! cmd .Flags ().Changed ("logLevel" ) {
57+ if lvl := os .Getenv (envLogLevel ); lvl != "" {
58+ logLevel = lvl
59+ }
4560 }
4661 if ! cmd .Flags ().Changed ("json" ) {
47- json = os .Getenv ("PARROT_JSON" ) == "true"
62+ json = os .Getenv (envJSON ) == "true"
4863 }
4964 if ! cmd .Flags ().Changed ("recorders" ) {
50- if envRecorders := os .Getenv ("PARROT_RECORDERS" ); envRecorders != "" {
51- recorders = strings .Split (envRecorders , "," )
65+ if r := os .Getenv (envRecorders ); r != "" {
66+ recorders = strings .Split (r , "," )
5267 }
5368 }
5469 }
@@ -58,18 +73,25 @@ func main() {
5873 Short : "A server that can register and parrot back dynamic requests" ,
5974 PreRun : preRun ,
6075 RunE : func (cmd * cobra.Command , args []string ) error {
61- options := []parrot.ServerOption {parrot .WithPort (port )}
62- logLevel := zerolog .InfoLevel
76+ options := []parrot.ServerOption {parrot .WithPort (port ), parrot . WithHost ( host ) }
77+ zerologLevel := zerolog .InfoLevel
6378 if debug {
64- logLevel = zerolog .DebugLevel
79+ zerologLevel = zerolog .DebugLevel
6580 }
6681 if trace {
67- logLevel = zerolog .TraceLevel
82+ zerologLevel = zerolog .TraceLevel
6883 }
6984 if silent {
70- logLevel = zerolog .Disabled
85+ zerologLevel = zerolog .Disabled
86+ }
87+ if logLevel != "" {
88+ parsedLevel , err := zerolog .ParseLevel (logLevel )
89+ if err != nil {
90+ return err
91+ }
92+ zerologLevel = parsedLevel
7193 }
72- options = append (options , parrot .WithLogLevel (logLevel ))
94+ options = append (options , parrot .WithLogLevel (zerologLevel ))
7395 if json {
7496 options = append (options , parrot .WithJSONLogs ())
7597 }
@@ -94,12 +116,14 @@ func main() {
94116 },
95117 }
96118
97- rootCmd .PersistentFlags ().IntVarP (& port , "port" , "p" , 0 , "Port to run the parrot on (env: PARROT_PORT)" )
98- rootCmd .Flags ().BoolVarP (& debug , "debug" , "d" , false , "Enable debug output (env: PARROT_DEBUG)" )
99- rootCmd .Flags ().BoolVarP (& trace , "trace" , "t" , false , "Enable trace and debug output (env: PARROT_TRACE)" )
100- rootCmd .Flags ().BoolVarP (& silent , "silent" , "s" , false , "Disable all output (env: PARROT_SILENT)" )
101- rootCmd .Flags ().BoolVarP (& json , "json" , "j" , false , "Output logs in JSON format (env: PARROT_JSON)" )
102- rootCmd .Flags ().StringSliceVarP (& recorders , "recorders" , "r" , nil , "Existing recorders to use (env: PARROT_RECORDERS)" )
119+ rootCmd .PersistentFlags ().IntVarP (& port , "port" , "p" , 0 , fmt .Sprintf ("Port to run the parrot on (env: %s)" , envPort ))
120+ rootCmd .Flags ().BoolVarP (& debug , "debug" , "d" , false , "Enable debug output" )
121+ rootCmd .Flags ().BoolVarP (& trace , "trace" , "t" , false , "Enable trace and debug output" )
122+ rootCmd .Flags ().BoolVarP (& silent , "silent" , "s" , false , "Disable all output" )
123+ rootCmd .Flags ().StringVarP (& logLevel , "logLevel" , "l" , "" , fmt .Sprintf ("Set the log level (env: %s)" , envLogLevel ))
124+ rootCmd .Flags ().BoolVarP (& json , "json" , "j" , false , fmt .Sprintf ("Output logs in JSON format (env: %s)" , envJSON ))
125+ rootCmd .Flags ().StringSliceVarP (& recorders , "recorders" , "r" , nil , fmt .Sprintf ("Existing recorders to use (env: %s)" , envRecorders ))
126+ rootCmd .Flags ().StringVar (& host , "host" , "localhost" , fmt .Sprintf ("Host to run the parrot on. (env: %s)" , envHost ))
103127
104128 healthCheckCmd := & cobra.Command {
105129 Use : "health" ,
0 commit comments