'use strict'; const path = require('path'); const fs = require('fs'); const fsPro = require('fs-extra'); const chalk = require('chalk'); const Utils = require('../lib/utils'); /** * 移动资源 */ module.exports = { /** * 执行 */ run(options = {}) { console.log('[ee-bin] [move] Start moving resources'); const homeDir = process.cwd(); const { config, flag } = options; const binCfg = Utils.loadConfig(config); let flags; const flagString = flag.trim(); if (flagString.indexOf(',') !== -1) { flags = flagString.split(','); } else { flags = [flagString]; } for (let i = 0; i < flags.length; i++) { let f = flags[i]; let cfg = binCfg.move[f]; if (!cfg) { console.log(chalk.blue('[ee-bin] [move] ') + chalk.red(`Error: ${f} config does not exist` )); return; } console.log(chalk.blue('[ee-bin] [move] ') + chalk.green(`Move flag: ${f}`)); console.log(chalk.blue('[ee-bin] [move] ') + chalk.green('config:'), cfg); const distResource = path.join(homeDir, cfg.dist); if (!fs.existsSync(distResource)) { const errorTips = chalk.bgRed('Error') + ` ${cfg.dist} resource does not exist !`; console.error(errorTips); return } // clear the historical resource and copy it to the ee resource directory const targetResource = path.join(homeDir, cfg.target); if (fs.statSync(distResource).isDirectory() && !fs.existsSync(targetResource)) { fs.mkdirSync(targetResource, {recursive: true, mode: 0o777}); } else { this._rm(targetResource); console.log('[ee-bin] [move] Clear history resources:', targetResource); } fsPro.copySync(distResource, targetResource); // [todo] go project, special treatment of package.json, reserved only necessary console.log(`[ee-bin] [move] Copy ${distResource} to ${targetResource}`); } console.log('[ee-bin] [move] End'); }, /** * Delete a file or folder */ _rm(name) { // check if (!fs.existsSync(name)) { return } const nodeVersion = (process.versions && process.versions.node) || null; if (nodeVersion && Utils.compareVersion(nodeVersion, '14.14.0') == 1) { fs.rmSync(name, {recursive: true}); } else { fs.rmdirSync(name, {recursive: true}); } }, }