mili
Version:
Scaffolding with continuous control over the development of the project.
17 lines (16 loc) • 600 B
JavaScript
import * as semver from 'semver';
import * as fs from 'fs-extra';
import * as path from 'path';
import { execFileSync } from 'child_process';
export function migrate(cwd, repository, fromVersion) {
if (fromVersion === repository.version)
return;
if (!semver.valid(fromVersion))
throw new Error(`Invalid version ${fromVersion}`);
if (!fs.pathExistsSync(path.join(repository.storage, 'migration')))
return;
const files = fs.readdirSync(path.join(repository.storage, 'migration'));
for (const file of files) {
execFileSync(file, [], { cwd });
}
}