Skip to content

Commit 97187b1

Browse files
Merge pull request #195 from HarperFast/CORE-3040
CLI errors exit with code 1 and error message cleanup
2 parents a80cb6b + 52efe17 commit 97187b1

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

bin/cliOperations.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,12 @@ async function cliOperations(req) {
143143
initConfig();
144144
if (!getHdbPid()) {
145145
console.error('Harper must be running to perform this operation');
146-
process.exit();
146+
process.exit(1);
147147
}
148148

149149
if (!fs.existsSync(envMgr.get(terms.CONFIG_PARAMS.OPERATIONSAPI_NETWORK_DOMAINSOCKET))) {
150150
console.error('No domain socket found, unable to perform this operation');
151-
process.exit();
151+
process.exit(1);
152152
}
153153
}
154154
await PREPARE_OPERATION[req.operation]?.(req);
@@ -178,22 +178,33 @@ async function cliOperations(req) {
178178
};
179179
}
180180

181+
let responseLog;
181182
if (req.json) {
182-
console.log(JSON.stringify(responseData, null, 2));
183+
responseLog = JSON.stringify(responseData, null, 2)
183184
} else {
184-
console.log(YAML.stringify(responseData).trim());
185+
responseLog = YAML.stringify(responseData).trim()
185186
}
186187

188+
const { statusCode } = response;
189+
if (statusCode < 200 || (statusCode >= 300 && statusCode !== 304)) {
190+
const errorPrefix = responseLog.startsWith('error:') ? '' : 'error: ';
191+
console.error(`${errorPrefix}${responseLog}`);
192+
process.exit(1);
193+
}
194+
195+
console.log(responseLog);
196+
187197
return responseData;
188198
} catch (err) {
189-
let errMsg = 'Error: ';
190-
if (err?.response?.data?.error) {
191-
errMsg += err.response.data.error;
192-
} else if (err?.response?.data) {
193-
errMsg += err?.response?.data;
199+
if (err.code === 'ENOENT' || err.code === 'ECONNREFUSED') {
200+
console.error(`error: Failed to connect to Harper (${err.code}): ${err.message}`);
201+
} else if (err.code === 'EACCES') {
202+
console.error(`error: Permission denied accessing the domain socket: ${err.message}`);
203+
} else if (err.code === 'ENOTFOUND') {
204+
console.error(`error: Host not found: "${err.hostname}" ${err.message}`);
194205
} else {
195-
return console.error(err);
206+
console.error(`error: ${err.message ?? err}`);
196207
}
197-
console.error(errMsg);
208+
process.exit(1);
198209
}
199210
}

0 commit comments

Comments
 (0)