From 4f43b6a29ff004a4fea5ec70d6f2e3414af0effe Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 3 May 2025 09:25:24 +0200 Subject: [PATCH 1/2] fix: juno dev start finding config --- src/services/start/docker.services.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/services/start/docker.services.ts b/src/services/start/docker.services.ts index b913183a..f31c30c4 100644 --- a/src/services/start/docker.services.ts +++ b/src/services/start/docker.services.ts @@ -100,12 +100,14 @@ const buildConfigType = async (context: ConfigContext): Promise { +const assertDockerCompose = async (): Promise<{ + dockerImage: 'skylab' | 'satellite' | 'unknown'; +}> => { if (existsSync(DOCKER_COMPOSE_FILENAME)) { - return; + return {dockerImage: 'unknown'}; } - const {image}: {image: string} = await prompts({ + const {image}: {image: 'skylab' | 'satellite' | undefined} = await prompts({ type: 'select', name: 'image', message: 'What kind of emulator would you like to run locally?', @@ -134,15 +136,19 @@ const assertDockerCompose = async () => { .replaceAll('', configFile); await writeFile(join(DESTINATION_PATH, DOCKER_COMPOSE_FILENAME), content, 'utf-8'); + + return {dockerImage: image}; }; const assertAndInitConfig = async () => { - await assertDockerCompose(); + const {dockerImage} = await assertDockerCompose(); - const dockerCompose = await readFile(DOCKER_COMPOSE_FILENAME, 'utf-8'); - const isSkylab = /image:\s*junobuild\/skylab(:[^\s]*)?/.test(dockerCompose); + const isSkylab = async (): Promise => { + const dockerCompose = await readFile(DOCKER_COMPOSE_FILENAME, 'utf-8'); + return /image:\s*junobuild\/skylab(:[^\s]*)?/.test(dockerCompose); + }; - if (isSkylab) { + if (dockerImage === 'skylab' || (dockerImage === 'unknown' && (await isSkylab()))) { await assertJunoConfig(); return; } From 5f5731ec56fd8b960ad8d423e29ee1ca675d4a7b Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 3 May 2025 09:34:24 +0200 Subject: [PATCH 2/2] fix: juno dev start finding config --- src/services/start/docker.services.ts | 28 ++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/services/start/docker.services.ts b/src/services/start/docker.services.ts index f31c30c4..3a88db03 100644 --- a/src/services/start/docker.services.ts +++ b/src/services/start/docker.services.ts @@ -100,13 +100,7 @@ const buildConfigType = async (context: ConfigContext): Promise => { - if (existsSync(DOCKER_COMPOSE_FILENAME)) { - return {dockerImage: 'unknown'}; - } - +const assertDockerCompose = async () => { const {image}: {image: 'skylab' | 'satellite' | undefined} = await prompts({ type: 'select', name: 'image', @@ -127,6 +121,9 @@ const assertDockerCompose = async (): Promise<{ sourceFolder: TEMPLATE_PATH }); + // We should assert the config before creating the docker file otherwise we cannot know if the docker file should reference a TS, JS or JSON config file. + await assertAndInitJunoConfig(image === 'skylab'); + const readConfig = image === 'satellite' ? junoDevConfigFile : junoConfigFile; const {configPath} = readConfig(); const configFile = basename(configPath); @@ -141,14 +138,19 @@ const assertDockerCompose = async (): Promise<{ }; const assertAndInitConfig = async () => { - const {dockerImage} = await assertDockerCompose(); - - const isSkylab = async (): Promise => { + if (existsSync(DOCKER_COMPOSE_FILENAME)) { const dockerCompose = await readFile(DOCKER_COMPOSE_FILENAME, 'utf-8'); - return /image:\s*junobuild\/skylab(:[^\s]*)?/.test(dockerCompose); - }; + const isSkylab = /image:\s*junobuild\/skylab(:[^\s]*)?/.test(dockerCompose); + + await assertAndInitJunoConfig(isSkylab); + return; + } + + await assertDockerCompose(); +}; - if (dockerImage === 'skylab' || (dockerImage === 'unknown' && (await isSkylab()))) { +const assertAndInitJunoConfig = async (skylab: boolean) => { + if (skylab) { await assertJunoConfig(); return; }