diff --git a/src/compose-types.ts b/src/compose-types.ts new file mode 100644 index 0000000..d3dd0aa --- /dev/null +++ b/src/compose-types.ts @@ -0,0 +1,8 @@ +/** + * Type of Docker Compose file + */ +export enum ComposeType { + ALL = "all", + DEV = "dev", + PROD = "prod", +} diff --git a/src/index.ts b/src/index.ts index 1ea64e6..6ae4f99 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,6 +16,7 @@ import { validateProjectName, } from './lib.js'; import { fileURLToPath } from 'url'; +import { ComposeType } from './compose-types.js'; const INITIAL_CLI_VERSION = '2.0.0'; @@ -184,7 +185,7 @@ program checkDockerFolder(FOLDER); const services = parseServices(options.services); - const composeArgs = generateComposeFiles(FOLDER, services, 'dev'); + const composeArgs = generateComposeFiles(FOLDER, services, ComposeType.DEV); dockerCompose(`${composeArgs} up --build -d`); }); @@ -218,7 +219,7 @@ program checkDockerFolder(FOLDER); const services = parseServices(options.services); - const composeArgs = generateComposeFiles(FOLDER, services, 'prod'); + const composeArgs = generateComposeFiles(FOLDER, services, ComposeType.PROD); dockerCompose(`${composeArgs} up -d`); }); @@ -235,7 +236,7 @@ program checkDockerFolder(FOLDER); const services = parseServices(options.services); - const composeArgs = generateComposeFiles(FOLDER, services); + const composeArgs = generateComposeFiles(FOLDER, services, ComposeType.ALL); dockerCompose(`${composeArgs} down`); }); @@ -252,7 +253,7 @@ program checkDockerFolder(FOLDER); const services = parseServices(options.services); - const composeArgs = generateComposeFiles(FOLDER, services); + const composeArgs = generateComposeFiles(FOLDER, services, ComposeType.ALL); dockerCompose(`${composeArgs} down -v`); }); diff --git a/src/lib.ts b/src/lib.ts index 628a82e..3fc406f 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,6 +4,7 @@ import { execSync } from 'child_process'; import decompress from 'decompress'; // to unzip the downloaded files import * as fs from 'fs'; import * as path from 'path'; +import { ComposeType } from './compose-types.js'; /** * Check for pre-requisites @@ -93,13 +94,13 @@ export const checkDockerFolder = (folder: string): void => { /** * Generate Docker Compose file arguments based on provided services. * @param services List of services - * @param type Optional type ('dev' | 'prod') + * @param type Optional type ('dev' | 'prod' | 'all') * @returns String of Docker Compose file arguments */ export const generateComposeFiles = ( folder: string, services: string[], - type?: 'dev' | 'prod', + type?: ComposeType, ): string => { let files = [`-f ${path.join(folder, 'docker-compose.yml')}`]; @@ -117,9 +118,19 @@ export const generateComposeFiles = ( }); if (type) { - const mainTypeFile = path.join(folder, `docker-compose.${type}.yml`); - if (fs.existsSync(mainTypeFile)) { - files.push(`-f ${mainTypeFile}`); + if (type === ComposeType.ALL) { + const filesType = [ComposeType.DEV, ComposeType.PROD]; + filesType.forEach((fileType) => { + const mainTypeFile = path.join(folder, `docker-compose.${fileType}.yml`); + if (fs.existsSync(mainTypeFile)) { + files.push(`-f ${mainTypeFile}`); + } + }); + } else { + const mainTypeFile = path.join(folder, `docker-compose.${type}.yml`); + if (fs.existsSync(mainTypeFile)) { + files.push(`-f ${mainTypeFile}`); + } } }