diff --git a/packages/twenty-sdk/src/cli/operations/server-start.ts b/packages/twenty-sdk/src/cli/operations/server-start.ts index b0c8d505a0..2eb6f034fb 100644 --- a/packages/twenty-sdk/src/cli/operations/server-start.ts +++ b/packages/twenty-sdk/src/cli/operations/server-start.ts @@ -9,6 +9,7 @@ import { DEFAULT_PORT, DEFAULT_TEST_PORT, getContainerPort, + getDockerNotRunningMessage, IMAGE, isContainerRunning, TEST_CONTAINER_NAME, @@ -148,11 +149,15 @@ const innerServerStart = async ( } if (!checkDockerRunning()) { + const retryCommand = isTest + ? 'yarn twenty server start --test' + : 'yarn twenty server start'; + return { success: false, error: { code: SERVER_ERROR_CODES.DOCKER_NOT_RUNNING, - message: 'Docker is not running. Please start Docker and try again.', + message: getDockerNotRunningMessage(retryCommand), }, }; } diff --git a/packages/twenty-sdk/src/cli/operations/server-upgrade.ts b/packages/twenty-sdk/src/cli/operations/server-upgrade.ts index 55e79e6216..158fdcc29c 100644 --- a/packages/twenty-sdk/src/cli/operations/server-upgrade.ts +++ b/packages/twenty-sdk/src/cli/operations/server-upgrade.ts @@ -6,6 +6,7 @@ import { containerExists, getContainerDigest, getContainerPort, + getDockerNotRunningMessage, getImageDigest, getImageForVersion, TEST_CONTAINER_NAME, @@ -30,11 +31,19 @@ const innerServerUpgrade = async ( const { version = 'latest', test: isTest, onProgress } = options; if (!checkDockerRunning()) { + const retryCommand = [ + 'yarn twenty server upgrade', + version !== 'latest' ? version : null, + isTest ? '--test' : null, + ] + .filter(Boolean) + .join(' '); + return { success: false, error: { code: SERVER_ERROR_CODES.DOCKER_NOT_RUNNING, - message: 'Docker is not running. Please start Docker and try again.', + message: getDockerNotRunningMessage(retryCommand), }, }; } diff --git a/packages/twenty-sdk/src/cli/utilities/server/docker-container.ts b/packages/twenty-sdk/src/cli/utilities/server/docker-container.ts index d48decc2d6..397fa1b5e2 100644 --- a/packages/twenty-sdk/src/cli/utilities/server/docker-container.ts +++ b/packages/twenty-sdk/src/cli/utilities/server/docker-container.ts @@ -103,3 +103,29 @@ export const checkDockerRunning = (): boolean => { return false; } }; + +const getDockerStartInstruction = (): string => { + switch (process.platform) { + case 'darwin': + return ' Run: open -a Docker\n (or launch Docker Desktop from Applications)'; + case 'linux': + return ' Run: sudo systemctl start docker\n (or launch Docker Desktop if installed)'; + case 'win32': + return ' Launch Docker Desktop from the Start menu'; + default: + return ' See https://docs.docker.com/engine/install/ for installation'; + } +}; + +export const getDockerNotRunningMessage = (retryCommand: string): string => + [ + 'Docker is not running.', + '', + 'Start Docker:', + getDockerStartInstruction(), + '', + 'Then retry:', + ` ${retryCommand}`, + '', + "Don't have Docker? Install from https://docs.docker.com/get-docker/", + ].join('\n');