diff --git a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js index a3e10b131c..e517bdbbd0 100644 --- a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js @@ -19,6 +19,7 @@ const DAPI_PROFILE_SERVICES = { * @param {getConnectionHost} getConnectionHost * @param {ensureFileMountExists} ensureFileMountExists * @param {HomeDir} homeDir + * @param {getConfigProfiles} getConfigProfiles * @return {startNodeTask} */ export default function startNodeTaskFactory( @@ -30,7 +31,19 @@ export default function startNodeTaskFactory( getConnectionHost, ensureFileMountExists, homeDir, + getConfigProfiles, ) { + function getPlatformProfiles(config) { + const platformProfiles = getConfigProfiles(config) + .filter((profile) => profile.startsWith('platform')); + + if (platformProfiles.length === 0) { + platformProfiles.push('platform'); + } + + return Array.from(new Set(platformProfiles)); + } + /** * @typedef {startNodeTask} * @param {Config} config @@ -89,10 +102,7 @@ export default function startNodeTaskFactory( title: 'Check node is not started', enabled: (ctx) => !ctx.isForce, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; if (await dockerCompose.isNodeRunning(config, { profiles })) { throw new Error('Running services detected. Please ensure all services are stopped for this config before starting'); @@ -147,10 +157,7 @@ export default function startNodeTaskFactory( config.get('core.masternode.operator.privateKey', true); } - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; await dockerCompose.up(config, { profiles }); }, diff --git a/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js index 1d3de2707c..264aac6dd9 100644 --- a/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js @@ -7,13 +7,26 @@ import waitForDKGWindowPass from '../../core/quorum/waitForDKGWindowPass.js'; * @param {DockerCompose} dockerCompose * @param {createRpcClient} createRpcClient * @param {getConnectionHost} getConnectionHost + * @param {getConfigProfiles} getConfigProfiles * @return {stopNodeTask} */ export default function stopNodeTaskFactory( dockerCompose, createRpcClient, getConnectionHost, + getConfigProfiles, ) { + function getPlatformProfiles(config) { + const platformProfiles = getConfigProfiles(config) + .filter((profile) => profile.startsWith('platform')); + + if (platformProfiles.length === 0) { + platformProfiles.push('platform'); + } + + return Array.from(new Set(platformProfiles)); + } + /** * Stop node * @typedef stopNodeTask @@ -27,10 +40,7 @@ export default function stopNodeTaskFactory( title: 'Check node is running', skip: (ctx) => ctx.isForce, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; if (!await dockerCompose.isNodeRunning(config, { profiles })) { throw new Error('Node is not running'); @@ -70,10 +80,8 @@ export default function stopNodeTaskFactory( { title: `Stopping ${config.getName()} node`, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; + await dockerCompose.stop(config, { profiles }); }, },