pooliot-client
Version:
35 lines (31 loc) • 1.3 kB
JavaScript
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));