import { execSync } from 'child_process';
import path from 'path';
import { outputFileSync, outputJsonSync, readFileSync } from 'fs-extra';
import inquirer from 'inquirer';
import eslintrcJson from '../.eslintrc.json';
import lernaJson from '../lerna.json';
import nxJson from '../nx.json';
import packageJson from '../package.json';
import tsconfigJson from '../tsconfig.base.json';
import workspaceJson from '../workspace.json';
const ROOT_PATH = path.join(__dirname, '..');
const VERSION = lernaJson.version;
inquirer
.prompt([
{
type: 'confirm',
name: 'toRun',
message: 'I hope you know what you do!!!',
default: false,
},
])
.then((answers) => {
if (answers.toRun) {
console.info('Updating...');
const eslintrcJsonPath = path.join(ROOT_PATH, '.eslintrc.json');
eslintrcJson.overrides.forEach((_, index) => {
if (eslintrcJson.overrides[index].rules && eslintrcJson.overrides[index].rules!['@nrwl/nx/enforce-module-boundaries']) {
eslintrcJson.overrides[index].rules!['@nrwl/nx/enforce-module-boundaries'] = [
'error',
{
enforceBuildableLibDependency: true,
allow: [],
depConstraints: [
{
sourceTag: 'scope:platform',
onlyDependOnLibsWithTags: ['scope:platform'],
},
],
},
];
}
});
outputJsonSync(eslintrcJsonPath, eslintrcJson);
execSync(`yarn prettier ${eslintrcJsonPath} --write`);
const lernaJsonPath = path.join(ROOT_PATH, 'lerna.json');
lernaJson.packages = [];
lernaJson.version = '0.0.1';
outputJsonSync(lernaJsonPath, lernaJson);
execSync(`yarn prettier ${lernaJsonPath} --write`);
const nxJsonPath = path.join(ROOT_PATH, 'nx.json');
nxJson.defaultProject = 'platform';
outputJsonSync(nxJsonPath, nxJson);
execSync(`yarn prettier ${nxJsonPath} --write`);
const packageJsonPath = path.join(ROOT_PATH, 'package.json');
for (const name of ['@ant-design/icons-svg']) {
delete packageJson.devDependencies[name];
}
packageJson.devDependencies['@react-devui/hooks'] = VERSION;
packageJson.devDependencies['@react-devui/icons'] = VERSION;
packageJson.devDependencies['@react-devui/ui'] = VERSION;
packageJson.devDependencies['@react-devui/utils'] = VERSION;
outputJsonSync(packageJsonPath, packageJson);
execSync(`yarn prettier ${packageJsonPath} --write`);
const tsconfigJsonPath = path.join(ROOT_PATH, 'tsconfig.base.json');
tsconfigJson.compilerOptions.paths = {} as any;
outputJsonSync(tsconfigJsonPath, tsconfigJson);
execSync(`yarn prettier ${tsconfigJsonPath} --write`);
const workspaceJsonPath = path.join(ROOT_PATH, 'workspace.json');
workspaceJson.projects = { platform: 'packages/platform' } as any;
outputJsonSync(workspaceJsonPath, workspaceJson);
execSync(`yarn prettier ${workspaceJsonPath} --write`);
const webpackJsPath = path.join(ROOT_PATH, 'packages', 'platform', 'webpack.js');
const webpackJs = readFileSync(webpackJsPath, { encoding: 'utf8' });
outputFileSync(webpackJsPath, webpackJs.replace(/.*react-devui\/ui\/styles.*/g, ''));
execSync(`yarn eslint ${webpackJsPath} --fix`);
}
})
.catch((error) => {
if (error.isTtyError) {
} else {
}
});