Skip to content

Commit 30c9227

Browse files
authored
feat(core): improve json format for CLI error (#1184)
1 parent 0ce929f commit 30c9227

23 files changed

+39
-67
lines changed

internal/core/error.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,20 @@ func (s *CliError) MarshalJSON() ([]byte, error) {
7676
type emptyRes struct{}
7777
return json.Marshal(&emptyRes{})
7878
}
79+
80+
message := s.Message
81+
if message == "" && s.Err != nil {
82+
message = s.Err.Error()
83+
}
84+
7985
type tmpRes struct {
80-
Message string `json:"message"`
81-
Error error `json:"error"`
82-
Details string `json:"details"`
83-
Hint string `json:"hint"`
86+
Message string `json:"message,omitempty"`
87+
Error error `json:"error,omitempty"`
88+
Details string `json:"details,omitempty"`
89+
Hint string `json:"hint,omitempty"`
8490
}
8591
return json.Marshal(&tmpRes{
86-
Message: s.Message,
92+
Message: message,
8793
Error: s.Err,
8894
Details: s.Details,
8995
Hint: s.Hint,

internal/e2e/testdata/test-human-create-invalid-boolean.golden

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ Hint:
66
Possible values: true, false
77
🟥🟥🟥 JSON STDERR 🟥🟥🟥
88
{
9-
"message": "",
9+
"message": "invalid value for 'is-happy' argument: invalid boolean value",
1010
"error": {},
11-
"details": "",
1211
"hint": "Possible values: true, false"
1312
}

internal/e2e/testdata/test-human-get-invalid-arg-name.golden

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ Hint:
66
Valid arguments are: human-id, region
77
🟥🟥🟥 JSON STDERR 🟥🟥🟥
88
{
9-
"message": "",
9+
"message": "unknown argument 'invalid'",
1010
"error": {},
11-
"details": "",
1211
"hint": "Valid arguments are: human-id, region"
1312
}

internal/e2e/testdata/test-human-get-pass-human-uuid-without-arg.golden

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@ Cannot find resource 'human' with ID '11111111-1111-1111-1111-111111111111'
77
"error": {
88
"resource": "human",
99
"resource_id": "11111111-1111-1111-1111-111111111111"
10-
},
11-
"details": "",
12-
"hint": ""
10+
}
1311
}

internal/e2e/testdata/test-sdk-standard-errors-out-of-stock.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ Try again later :-)
1010
"error": {
1111
"resource": "ShoeSize60"
1212
},
13-
"details": "",
1413
"hint": "Try again later :-)"
1514
}

internal/e2e/testdata/test-sdk-standard-errors-resource-not-found.golden

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ Hint:
66
Try running: scw test human get 0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 region=fr-par
77
🟥🟥🟥 JSON STDERR 🟥🟥🟥
88
{
9-
"message": "",
9+
"message": "a positional argument is required for this command",
1010
"error": {},
11-
"details": "",
1211
"hint": "Try running: scw test human get 0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 region=fr-par"
1312
}

internal/e2e/testdata/test-sdk-standard-errors-transient-state.golden

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ Hint:
66
Try running: scw test human update 0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 eyes-color=red region=fr-par
77
🟥🟥🟥 JSON STDERR 🟥🟥🟥
88
{
9-
"message": "",
9+
"message": "a positional argument is required for this command",
1010
"error": {},
11-
"details": "",
1211
"hint": "Try running: scw test human update 0194fdc2-fa2f-fcc0-41d3-ff12045b73c8 eyes-color=red region=fr-par"
1312
}

internal/namespaces/baremetal/v1/testdata/test-reboot-server-errors-error-cannot-be-rebooted-while-not-delivered.golden

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,5 @@ Server is not delivered
66
"message": "server is not delivered",
77
"error": {
88
"message": "server is not delivered"
9-
},
10-
"details": "",
11-
"hint": ""
9+
}
1210
}

internal/namespaces/baremetal/v1/testdata/test-start-server-errors-error-cannot-be-started-while-not-delivered.golden

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,5 @@ Server is not delivered
66
"message": "server is not delivered",
77
"error": {
88
"message": "server is not delivered"
9-
},
10-
"details": "",
11-
"hint": ""
9+
}
1210
}

internal/namespaces/baremetal/v1/testdata/test-stop-server-errors-error-cannot-be-stopped-while-not-delivered.golden

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,5 @@ Server is not delivered
66
"message": "server is not delivered",
77
"error": {
88
"message": "server is not delivered"
9-
},
10-
"details": "",
11-
"hint": ""
9+
}
1210
}

0 commit comments

Comments
 (0)