UNPKG

enigen-occ-commerce-cli

Version:

A simple CLI to help with your daily OCC development.

188 lines (168 loc) 5 kB
require("dotenv").config(); const fs = require("fs"); const inquirer = require("inquirer"); const childProcess = require("child_process"); const { CONSTANTS } = require("./constants"); const Methods = { parseToEnvFile: (obj) => { const keys = Object.keys(obj); let file = ""; keys.forEach((item) => { file += ` ${item}=${obj[item]} `; }); return file; }, hasEnv: () => { return fs.existsSync(".env"); }, hasSrc: () => { return fs.existsSync("./src"); }, createSrc: () => { return fs.mkdirSync("./src"); }, createDcu: () => { console.log(); childProcess.execSync( "git clone https://github.com/oracle-commerce-cloud/Design-Code-Utility.git ./DesignCodeUtility", { stdio: "inherit" } ); childProcess.execSync("cd ./DesignCodeUtility && npm install", { stdio: "inherit", }); }, selector: (message) => { return inquirer.prompt([ { type: "list", name: "selectedEnv", message: message || "Select an environment:", choices: CONSTANTS.ENVS, }, ]); }, promptEnvInfos: () => { return inquirer.prompt([ { name: "adminUrl", message: "Admin URL:", }, { name: "Storefront", message: "Storefront Url:", }, { name: "appKey", message: "AppKey:", }, { name: "GitRepo", message: "Git Repo:", }, ]); }, set: (environment, adminUrl, appKey, Storefront, GitRepo) => { const obj = {}; obj[`OCC_${environment}_ADMIN_URL`] = adminUrl; obj[`OCC_STOREFRONT_URL`] = Storefront; obj[`OCC_${environment}_APP_KEY`] = appKey; obj[`GitRepo`] = GitRepo; console.log(Storefront); if (environment === process.env.ACTIVE_ENV) { obj.OCC_ADMIN_URL = adminUrl; obj.OCC_STOREFRONT_URL = Storefront; obj.OCC_APP_KEY = appKey; obj.GitRepo = GitRepo; } Methods.writeEnvFile(obj); }, get: (environment) => { return { env: environment || process.env.ACTIVE_ENV, url: environment ? process.env[`OCC_${environment}_ADMIN_URL`] : process.env.OCC_ADMIN_URL, appKey: environment ? process.env[`OCC_${environment}_APP_KEY`] : process.env.OCC_APP_KEY, }; }, change: async (environment) => { if (!environment) { var { selectedEnv } = await Methods.selector(); environment = selectedEnv; } if (Methods.validate(environment)) { Methods.writeEnvFile({ ACTIVE_ENV: environment, OCC_ADMIN_URL: process.env[`OCC_${environment}_ADMIN_URL`], OCC_APP_KEY: process.env[`OCC_${environment}_APP_KEY`], }); } else { console.log("This environment is not configured."); } }, config: async () => { const { selectedEnv } = await Methods.selector(); if (Methods.validate(selectedEnv)) { const { needToUpdate } = await inquirer.prompt({ type: "confirm", name: "needToUpdate", message: `${selectedEnv} is ready. Do you want to update?`, }); if (needToUpdate) { const { adminUrl, appKey } = await Methods.promptEnvInfos(); Methods.set(selectedEnv, adminUrl, appKey); } } else { const { adminUrl, appKey } = await Methods.promptEnvInfos(); Methods.set(selectedEnv, adminUrl, appKey); } }, validate: (environment) => { if (Methods.hasEnv()) { if (environment) { return ( process.env[`OCC_${environment}_ADMIN_URL`].length > 0 && process.env[`OCC_${environment}_APP_KEY`].length > 0 ); } else { return ( process.env.OCC_ADMIN_URL.length > 0 && process.env.OCC_APP_KEY.length > 0 ); } } else { return false; } }, writeEnvFile: (keysToUpdate) => { const envFile = { ACTIVE_ENV: process.env.ACTIVE_ENV || "", OCC_ADMIN_URL: process.env.OCC_ADMIN_URL || "", OCC_STOREFRONT_URL: process.env.OCC_STOREFRONT_URL || "", OCC_APP_KEY: process.env.OCC_APP_KEY || "", OCC_TEST_ADMIN_URL: process.env.OCC_TEST_ADMIN_URL || "", OCC_TEST_APP_KEY: process.env.OCC_TEST_APP_KEY || "", OCC_STAGE_ADMIN_URL: process.env.OCC_STAGE_ADMIN_URL || "", OCC_STAGE_APP_KEY: process.env.OCC_STAGE_APP_KEY || "", OCC_PROD_ADMIN_URL: process.env.OCC_PROD_ADMIN_URL || "", OCC_PROD_APP_KEY: process.env.OCC_PROD_APP_KEY || "", OCC_NOENV_ADMIN_URL: process.env.OCC_NOENV_ADMIN_URL || "", OCC_NOENV_APP_KEY: process.env.OCC_NOENV_APP_KEY || "", GitRepo: process.env.GitRepo || "", }; if (keysToUpdate) { const keys = Object.keys(envFile); keys.forEach((item) => { envFile[item] = keysToUpdate[item] ? keysToUpdate[item] : process.env[item] || ""; }); } fs.writeFileSync(".env", Methods.parseToEnvFile(envFile)); }, }; exports.occEnv = Methods;