UNPKG

mstr-viz

Version:

A new dev tool for creating custom visualizations

94 lines (86 loc) 3.7 kB
/** * @file common steps during process */ const fs = require('fs-extra'); const path = require('path'); const { /* execSync, */ spawnSync } = require('child_process'); // const { isGitAvailable } = require('./utils/isGitAvailable'); const replaceTemplate = require('./utils/replaceTemplate'); module.exports = { /** * init the dir of new plugin * @param pluginDevDir * @param pluginName * @param useReact * @param [migrate=false] */ initPluginDevDir: (pluginDevDir, pluginName, useReact, migrate = false) => { const TEMPLATE_DIR = path.join(__dirname, '../template'); const TEMPLATE_USE_REACT_DIR = path.join(__dirname, '../template-use-react'); console.log(`Creating a custom vis in ${pluginDevDir}`); // create plugin dev folder fs.mkdirSync(pluginDevDir); // change cwd process.chdir(pluginDevDir); // if git is available // if (isGitAvailable()) { // execSync('git init', { stdio: 'ignore' }); // console.log('Initialized a git repository.'); // } const replace = replaceTemplate({ pluginName, migrate }); // copy and generate from template if (useReact) { fs.copySync(TEMPLATE_USE_REACT_DIR, './'); replace('config.js'); replace('./formatPanelConfig/config.js'); replace('./formatPanelConfig/textAndForm/textAndFormConfig.js'); replace('./formatPanelConfig/vizOptions/visualizationConfig.js'); replace('./i18n/MessagesBundle.properties'); replace('./i18n/MessagesBundle_da_DK.properties'); replace('./i18n/MessagesBundle_de.properties'); replace('./i18n/MessagesBundle_en.properties'); replace('./i18n/MessagesBundle_en_GB.properties'); replace('./i18n/MessagesBundle_en_US.properties'); replace('./i18n/MessagesBundle_es.properties'); replace('./i18n/MessagesBundle_fr.properties'); replace('./i18n/MessagesBundle_it.properties'); replace('./i18n/MessagesBundle_ja.properties'); replace('./i18n/MessagesBundle_ko.properties'); replace('./i18n/MessagesBundle_nl.properties'); replace('./i18n/MessagesBundle_pl.properties'); replace('./i18n/MessagesBundle_pt.properties'); replace('./i18n/MessagesBundle_ru.properties'); replace('./i18n/MessagesBundle_sv.properties'); replace('./i18n/MessagesBundle_zh.properties'); replace('./i18n/MessagesBundle_zh_TW.properties'); replace('package.json'); replace('./src/SampleViz.js'); replace('./src/SampleVizDropZones.js'); replace('./src/SampleVizEditorModel.js'); replace('./src/vis.less'); fs.renameSync('./src/SampleViz.js', `./src/${pluginName}.js`); fs.renameSync('./src/SampleVizDropZones.js', `./src/${pluginName}DropZones.js`); fs.renameSync('./src/SampleVizEditorModel.js', `./src/${pluginName}EditorModel.js`); } else { fs.copySync(TEMPLATE_DIR, './'); replace('package.json'); replace('config.js'); replace('./src/vis.less'); replace('./src/CustomVis.js'); replace('./src/CustomVisDropZones.js'); replace('./src/CustomVisEditorModel.js'); fs.renameSync('./src/CustomVis.js', `./src/${pluginName}.js`); fs.renameSync('./src/CustomVisDropZones.js', `./src/${pluginName}DropZones.js`); fs.renameSync('./src/CustomVisEditorModel.js', `./src/${pluginName}EditorModel.js`); } }, /** * install npm dependencies */ installDeps: () => { if (global.noInstallDep) { return; } console.log('Installing dependencies...'); const { status } = spawnSync('npm', ['install'], { stdio: 'inherit', shell: process.platform === 'win32' }); if (status !== 0) { process.exit(); } }, };