From 6f2832df8de11782e32020d1efa9aae345d41324 Mon Sep 17 00:00:00 2001 From: Aileen Nowak Date: Tue, 6 Feb 2018 16:03:44 +0100 Subject: [PATCH] fix(systemd) improve systemd precheck error messages --- extensions/systemd/systemd.js | 11 +++++++++-- extensions/systemd/test/systemd-spec.js | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/extensions/systemd/systemd.js b/extensions/systemd/systemd.js index dcbd0f7e4..4ba420fb4 100644 --- a/extensions/systemd/systemd.js +++ b/extensions/systemd/systemd.js @@ -4,6 +4,7 @@ const fs = require('fs'); const execa = require('execa'); const cli = require('../../lib'); const getUid = require('./get-uid'); +const chalk = require('chalk'); class SystemdProcessManager extends cli.ProcessManager { get systemdName() { @@ -101,14 +102,20 @@ class SystemdProcessManager extends cli.ProcessManager { const uid = getUid(this.instance.dir); if (!uid) { - throw new cli.errors.SystemError('Systemd process manager has not been set up. Run `ghost setup linux-user systemd` and try again.') + throw new cli.errors.SystemError({ + message: 'Systemd process manager has not been set up or is corrupted.', + help: `Run ${chalk.green('ghost setup linux-user systemd')} and try again.` + }); } if (fs.existsSync(`/lib/systemd/system/${this.systemdName}.service`)) { return; } - throw new cli.errors.SystemError('Systemd process manager has not been set up. Run `ghost setup systemd` and try again.'); + throw new cli.errors.SystemError({ + message: 'Systemd process manager has not been set up or is corrupted.', + help: `Run ${chalk.green('ghost setup systemd')} and try again.` + }); } static willRun() { diff --git a/extensions/systemd/test/systemd-spec.js b/extensions/systemd/test/systemd-spec.js index f573e1bb0..4b7f2528a 100644 --- a/extensions/systemd/test/systemd-spec.js +++ b/extensions/systemd/test/systemd-spec.js @@ -310,7 +310,8 @@ describe('Unit: Systemd > Process Manager', function () { expect(proxyOpts['./get-uid'].calledOnce).to.be.true; expect(error).to.be.ok; expect(error).to.be.instanceOf(errors.SystemError); - expect(error.message).to.match(/ghost setup linux-user systemd/); + expect(error.message).to.match(/Systemd process manager has not been set up or is corrupted./); + expect(error.options.help).to.match(/ghost setup linux-user systemd/); } }); @@ -337,7 +338,8 @@ describe('Unit: Systemd > Process Manager', function () { expect(fsStub.calledOnce).to.be.true; expect(error).to.be.ok; expect(error).to.be.instanceOf(errors.SystemError); - expect(error.message).to.match(/ghost setup systemd/); + expect(error.message).to.match(/Systemd process manager has not been set up or is corrupted./); + expect(error.options.help).to.match(/ghost setup systemd/); } }); });