File tree Expand file tree Collapse file tree 4 files changed +40
-31
lines changed
Expand file tree Collapse file tree 4 files changed +40
-31
lines changed Original file line number Diff line number Diff line change 77 "github.com/knadh/koanf/parsers/yaml"
88 "github.com/knadh/koanf/providers/file"
99 "github.com/knadh/koanf/v2"
10+ "github.com/urfave/cli/v3"
1011)
1112
1213// CLIConfig holds CLI configuration loaded from cli.yaml
@@ -44,3 +45,32 @@ func loadCLIConfig() *CLIConfig {
4445 _ = k .Unmarshal ("" , cfg )
4546 return cfg
4647}
48+
49+ // resolveBaseURL returns the effective base URL with precedence:
50+ // CLI flag > env var > config file > default.
51+ func resolveBaseURL (cmd * cli.Command ) string {
52+ if u := cmd .Root ().String ("base-url" ); u != "" {
53+ return u
54+ }
55+ if u := os .Getenv ("HYPEMAN_BASE_URL" ); u != "" {
56+ return u
57+ }
58+ cfg := loadCLIConfig ()
59+ if cfg .BaseURL != "" {
60+ return cfg .BaseURL
61+ }
62+ return "http://localhost:8080"
63+ }
64+
65+ // resolveAPIKey returns the effective API key with precedence:
66+ // env var > config file.
67+ func resolveAPIKey () string {
68+ if k := os .Getenv ("HYPEMAN_BEARER_TOKEN" ); k != "" {
69+ return k
70+ }
71+ if k := os .Getenv ("HYPEMAN_API_KEY" ); k != "" {
72+ return k
73+ }
74+ cfg := loadCLIConfig ()
75+ return cfg .APIKey
76+ }
Original file line number Diff line number Diff line change @@ -145,18 +145,12 @@ func handleCp(ctx context.Context, cmd *cli.Command) error {
145145 return err
146146 }
147147
148- // Get base URL and API key
149- baseURL := cmd .Root ().String ("base-url" )
150- if baseURL == "" {
151- baseURL = os .Getenv ("HYPEMAN_BASE_URL" )
152- }
153- if baseURL == "" {
154- baseURL = "http://localhost:8080"
155- }
148+ // Get base URL and API key (flag > env > config file)
149+ baseURL := resolveBaseURL (cmd )
156150
157- apiKey := os . Getenv ( "HYPEMAN_API_KEY" )
151+ apiKey := resolveAPIKey ( )
158152 if apiKey == "" {
159- return fmt .Errorf ("HYPEMAN_API_KEY environment variable required " )
153+ return fmt .Errorf ("API key required: set HYPEMAN_API_KEY or configure api_key in ~/.config/hypeman/cli.yaml " )
160154 }
161155
162156 archive := cmd .Bool ("archive" )
Original file line number Diff line number Diff line change @@ -145,18 +145,12 @@ func handleExec(ctx context.Context, cmd *cli.Command) error {
145145 return fmt .Errorf ("failed to marshal request: %w" , err )
146146 }
147147
148- // Get base URL and API key
149- baseURL := cmd .Root ().String ("base-url" )
150- if baseURL == "" {
151- baseURL = os .Getenv ("HYPEMAN_BASE_URL" )
152- }
153- if baseURL == "" {
154- baseURL = "http://localhost:8080"
155- }
148+ // Get base URL and API key (flag > env > config file)
149+ baseURL := resolveBaseURL (cmd )
156150
157- apiKey := os . Getenv ( "HYPEMAN_API_KEY" )
151+ apiKey := resolveAPIKey ( )
158152 if apiKey == "" {
159- return fmt .Errorf ("HYPEMAN_API_KEY environment variable required " )
153+ return fmt .Errorf ("API key required: set HYPEMAN_API_KEY or configure api_key in ~/.config/hypeman/cli.yaml " )
160154 }
161155
162156 // Build WebSocket URL
Original file line number Diff line number Diff line change @@ -35,13 +35,7 @@ func handlePush(ctx context.Context, cmd *cli.Command) error {
3535 targetName = args [1 ]
3636 }
3737
38- baseURL := cmd .String ("base-url" )
39- if baseURL == "" {
40- baseURL = os .Getenv ("HYPEMAN_BASE_URL" )
41- }
42- if baseURL == "" {
43- baseURL = "http://localhost:8080"
44- }
38+ baseURL := resolveBaseURL (cmd )
4539
4640 parsedURL , err := url .Parse (baseURL )
4741 if err != nil {
@@ -71,10 +65,7 @@ func handlePush(ctx context.Context, cmd *cli.Command) error {
7165 return fmt .Errorf ("invalid target: %w" , err )
7266 }
7367
74- token := os .Getenv ("HYPEMAN_BEARER_TOKEN" )
75- if token == "" {
76- token = os .Getenv ("HYPEMAN_API_KEY" )
77- }
68+ token := resolveAPIKey ()
7869
7970 // Use custom transport that always sends Basic auth header
8071 transport := & authTransport {
You can’t perform that action at this time.
0 commit comments