UNPKG

1.15 kBJavaScriptView Raw
1import { gt } from 'semver';
2import { readdir } from 'fs';
3import { logger as appLogger } from 'nightingale-app-console';
4import { runSync } from './commands/exec';
5
6const logger = appLogger.child('migrate');
7
8(function migrate(previousVersion: string, newVersion: string): Promise<any> {
9 return new Promise((resolve: Function, reject: Function) => {
10 readdir(`${__dirname}/../migrate/`, (err: ?any, files: Array<string>) => {
11 if (err) {
12 return reject(err);
13 }
14
15 files
16 .filter(file => file.slice(-3) === '.sh')
17 .map(file => ({ file, version: /^([^_]+)(_.*).sh$/.exec(file)[1] }))
18 .filter(file => gt(file.version, previousVersion))
19 .sort((a, b) => gt(a.version, b.version))
20 .forEach((file: { version: string, file: string }) => {
21 logger.info('migrate', file);
22 console.log(runSync('sh', [file.file], { cwd: `${__dirname}/../migrate/` }));
23 logger.infoSuccess('success', file);
24 });
25 });
26 });
27})(process.argv[2], process.argv[3])
28 .then(() => logger.infoSuccess('migration done'))
29 .catch(err => console.log(err.stack || err.message || err));