@@ -17,21 +17,25 @@ import (
17
17
type onFinishFn func (context.Context , Config )
18
18
19
19
type Configurator struct {
20
- resources * resourcemanager.Registry
21
- ui cliUI.UI
22
- onFinish onFinishFn
23
- flags agentConfig.Flags
20
+ resources * resourcemanager.Registry
21
+ ui cliUI.UI
22
+ onFinish onFinishFn
23
+ flags agentConfig.Flags
24
+ finalServerURL string
24
25
}
25
26
26
27
func NewConfigurator (resources * resourcemanager.Registry ) Configurator {
27
28
ui := cliUI .DefaultUI
28
- onFinish := func (_ context.Context , _ Config ) {
29
- ui .Success ("Successfully configured Tracetest CLI" )
30
- ui .Finish ()
31
- }
32
- flags := agentConfig.Flags {}
33
29
34
- return Configurator {resources , ui , onFinish , flags }
30
+ return Configurator {
31
+ resources : resources ,
32
+ ui : ui ,
33
+ onFinish : func (_ context.Context , _ Config ) {
34
+ ui .Success ("Successfully configured Tracetest CLI" )
35
+ ui .Finish ()
36
+ },
37
+ flags : agentConfig.Flags {},
38
+ }
35
39
}
36
40
37
41
func (c Configurator ) WithOnFinish (onFinish onFinishFn ) Configurator {
@@ -42,6 +46,7 @@ func (c Configurator) WithOnFinish(onFinish onFinishFn) Configurator {
42
46
func (c Configurator ) Start (ctx context.Context , prev * Config , flags agentConfig.Flags ) error {
43
47
c .flags = flags
44
48
serverURL , err := c .getServerURL (prev , flags )
49
+ c .finalServerURL = serverURL
45
50
if err != nil {
46
51
return err
47
52
}
@@ -113,11 +118,27 @@ func (c Configurator) createConfig(serverURL string) (Config, error) {
113
118
}, nil
114
119
}
115
120
121
+ type invalidServerErr struct {
122
+ ui cliUI.UI
123
+ serverURL string
124
+ parent error
125
+ }
126
+
127
+ func (e invalidServerErr ) Error () string {
128
+ return fmt .Errorf ("cannot reach %s: %w" , e .serverURL , e .parent ).Error ()
129
+ }
130
+
131
+ func (e invalidServerErr ) Render () {
132
+ msg := fmt .Sprintf (`Cannot reach "%s". Please verify the url and enter it again.` , e .serverURL )
133
+ e .ui .Error (msg )
134
+ }
135
+
116
136
func (c Configurator ) populateConfigWithVersionInfo (ctx context.Context , cfg Config ) (_ Config , _ error , isOSS bool ) {
117
137
client := GetAPIClient (cfg )
118
138
version , err := getVersionMetadata (ctx , client )
119
139
if err != nil {
120
- return Config {}, fmt .Errorf ("cannot get version metadata: %w" , err ), false
140
+ err = invalidServerErr {c .ui , c .finalServerURL , fmt .Errorf ("cannot get version metadata: %w" , err )}
141
+ return Config {}, err , false
121
142
}
122
143
123
144
serverType := version .GetType ()
0 commit comments