UNPKG

pooliot-client

Version:
35 lines (31 loc) 1.3 kB
import { gt } from 'semver'; import { readdir } from 'fs'; import { logger as appLogger } from 'nightingale-app-console'; import { runSync } from './main-process/utils/exec'; import { user } from './main-process/params'; const logger = appLogger.child('migrate'); (function migrate(previousVersion: string, newVersion: string): Promise<any> { return new Promise((resolve: Function, reject: Function) => { readdir(`${__dirname}/../migrate/`, (err: ?any, files: Array<string>) => { if (err) { return reject(err); } files .filter(file => file.slice(-3) === '.sh') .map(file => ({ file, version: /^([^_]+)(_.*).sh$/.exec(file)[1] })) .filter(file => gt(file.version, previousVersion)) .sort((a, b) => gt(a.version, b.version)) .forEach((file: { version: string, file: string }) => { logger.info('migrate', file); const result = runSync('sh', [file.file], { cwd: `${__dirname}/../migrate/`, env: { POOLIOT_USER: user }, }); console.log(result); logger.infoSuccess('success', file); }); }); }); })(process.argv[2], process.argv[3]) .then(() => logger.infoSuccess('migration done')) .catch(err => console.log(err.stack || err.message || err));