create-bar-project
Version:
This module helps create a base for web application projects.
180 lines (179 loc) • 10.2 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.monorepo = exports.normalWithServer = exports.normalStructure = exports.apollo = exports.mobx = exports.webpack = exports.nextJs = exports.normalReact = exports.setResources = void 0;
const Common_1 = require("../Common");
const FsUtils_1 = require("./FsUtils");
const GetPackageJsonData_1 = require("./GetPackageJsonData");
let resources = '';
const root = process.cwd();
const projectProps = {
base: '',
state: '',
};
exports.setResources = (value) => {
resources = value;
};
const copyProjectCommonFolders = (projectName, commonFolderName) => __awaiter(void 0, void 0, void 0, function* () {
try {
FsUtils_1.copyFolders(`${resources}/Clients/Common/${commonFolderName}`, `${root}/${projectName}`, 'sharedFolders');
}
catch (err) {
throw new Error(`sharedFolders - ${err.message || err}`);
}
});
const fixProjectFolders = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
// fixing
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-${projectProps.base}`, `${root}/${projectName}/src`, 'fixProjectFolders');
if (projectProps.base === Common_1.nextKey) {
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-Common-${projectProps.base}`, `${root}/${projectName}/src/Common`, 'fixProjectFolders');
}
if (projectProps.state === Common_1.mobxKey) {
yield FsUtils_1.copyFolders(`${root}/${projectName}/react-mobx-index`, `${root}/${projectName}/src/Logic`, 'fixProjectFolders');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/react-mobx-index`, 'delete');
}
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-${projectProps.state}`, `${root}/${projectName}/src`, 'fixProjectFolders');
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-App-${projectProps.state}`, `${root}/${projectName}/src/App`, 'fixProjectFolders');
yield FsUtils_1.copyFolders(`${root}/${projectName}/Shared-src`, `${root}/${projectName}/src`, 'fixProjectFolders');
yield FsUtils_1.copyFolders(`${root}/${projectName}/Shared-Common`, `${root}/${projectName}/src/Common`, 'fixProjectFolders');
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-Common-Utils`, `${root}/${projectName}/src/Common/Utils`, 'fixProjectFolders');
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-components`, `${root}/${projectName}/src/Components`, 'fixProjectFolders');
// deleting extra
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-${projectProps.base}`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-Common-${projectProps.base}`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-${projectProps.state}`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-App-${projectProps.state}`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/Shared-src`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/Shared-Common`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-Common-Utils`, 'delete');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-components`, 'delete');
});
const getSpecificProjectResources = () => {
return Object.values(projectProps).join('-');
};
const fixIfWebpack = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
if (projectProps.base === Common_1.webpackKey) {
yield FsUtils_1.copyFolders(`${resources}/clients/React-${projectProps.state}`, `${root}/${projectName}`, `normalStructure - React-${projectProps.state}`);
}
});
const fixIfApollo = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
if (projectProps.state === Common_1.apolloKey) {
yield FsUtils_1.copyFolders(`${root}/${projectName}/src-Apollo-Apollo`, `${root}/${projectName}/src/Apollo`, 'fixProjectFolders-Apollo');
yield FsUtils_1.deleteFolder(`${root}/${projectName}/src-Apollo-Apollo`, 'delete-apollo');
}
});
const createReadMeFile = (path, projectName) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/README.md`, `# ${projectName}`);
});
const createClientGitIgnore = (path) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/.gitignore`, Common_1.clientGitIgnoreData);
});
const createServerGitIgnore = (path) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/.gitignore`, Common_1.serverGitIgnoreData);
});
const createServerEnvFile = (path) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/.env`, Common_1.serverEnvData);
});
const createPackageJsonFile = (path, projectName, baseDepsKey, stateDepsKey, browsersListKey) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/package.json`, GetPackageJsonData_1.getPackageJsonData({ projectName, baseDepsKey, stateDepsKey, browsersListKey }));
});
const createServerPackageJsonFile = (path, projectName, stateDepsKey) => __awaiter(void 0, void 0, void 0, function* () {
FsUtils_1.writeFile(`${path}/package.json`, GetPackageJsonData_1.getServerPackageJsonData({ stateDepsKey, projectName }));
});
exports.normalReact = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield copyProjectCommonFolders(projectName, 'CRA');
projectProps.base = Common_1.reactKey;
}
catch (err) {
throw new Error(`normalReact - ${err.message || err}`);
}
});
exports.nextJs = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield copyProjectCommonFolders(projectName, 'Next');
projectProps.base = Common_1.nextKey;
}
catch (err) {
throw new Error(`nextJs - ${err.message || err}`);
}
});
exports.webpack = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield copyProjectCommonFolders(projectName, 'Webpack');
projectProps.base = Common_1.webpackKey;
}
catch (err) {
throw new Error(`webpack - ${err.message || err}`);
}
});
exports.mobx = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield copyProjectCommonFolders(projectName, 'Mobx');
projectProps.state = Common_1.mobxKey;
}
catch (err) {
throw new Error(`mobx - ${err.message || err}`);
}
});
exports.apollo = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield copyProjectCommonFolders(projectName, 'Apollo');
projectProps.state = Common_1.apolloKey;
}
catch (err) {
throw new Error(`apollo - ${err.message || err}`);
}
});
exports.normalStructure = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
const specificFolder = getSpecificProjectResources();
yield FsUtils_1.copyFolders(`${resources}/clients/Shared`, `${root}/${projectName}`, 'normalStructure - Shared');
if (projectProps.base !== Common_1.webpackKey) {
yield FsUtils_1.copyFolders(`${resources}/clients/${specificFolder}`, `${root}/${projectName}`, `normalStructure - ${specificFolder}`);
}
yield fixIfWebpack(projectName);
yield fixIfApollo(projectName);
yield createReadMeFile(`${root}/${projectName}`, projectName);
yield createClientGitIgnore(`${root}/${projectName}`);
yield createPackageJsonFile(`${root}/${projectName}`, projectName, projectProps.base, projectProps.state, true);
yield fixProjectFolders(projectName);
}
catch (err) {
throw new Error(`normalStructure - ${err.message || err}`);
}
});
exports.normalWithServer = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield exports.normalStructure(projectName);
yield FsUtils_1.copyFolders(`${resources}/servers/${projectProps.state}-Server`, `${root}/${projectName}-server`, 'normalWithServer - withServer');
yield FsUtils_1.copyFolders(`${resources}/servers/Shared`, `${root}/${projectName}-server`, 'normalWithServer - Shared');
yield FsUtils_1.copyFolders(`${root}/${projectName}-server/src-Shared`, `${root}/${projectName}-server/src`, 'normalWithServer - Shared');
yield FsUtils_1.deleteFolder(`${root}/${projectName}-server/src-Shared`, 'delete');
yield createReadMeFile(`${root}/${projectName}-server`, `${projectName}-server`);
yield createServerPackageJsonFile(`${root}/${projectName}-server`, `${projectName}-server`, projectProps.state);
yield createServerGitIgnore(`${root}/${projectName}-server`);
yield createServerEnvFile(`${root}/${projectName}-server`);
}
catch (err) {
throw new Error(`normalWithServer - ${err.message || err}`);
}
});
exports.monorepo = (projectName) => __awaiter(void 0, void 0, void 0, function* () {
try {
// await copyFolders(`${resources}/Monorepo`, `${root}/${projectName}`, 'monorepo');
// await copyFolders(`${root}/${projectName}/src`, `${root}/${projectName}/packages/client/src`, 'monorepo-mobx');
// await deleteFolder(`${root}/${projectName}/src`, 'monorepo-delete');
}
catch (err) {
throw new Error(`monorepo - ${err.message || err}`);
}
});