heroku
Version:
CLI to interact with Heroku
59 lines (58 loc) • 2.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs-extra");
const path = require("path");
const exec = (cmd, args) => {
const execa = require('execa');
return execa(cmd, args, { stdio: 'inherit' });
};
const migrate = async function () {
if (process.argv[2] && process.argv[2].startsWith('plugins'))
return;
const pluginsDir = path.join(this.config.dataDir, 'plugins');
const yarnLockFilePath = path.join(this.config.dataDir, 'yarn.lock');
const removeYarnLockFile = async () => {
if (await fs.existsSync(yarnLockFilePath)) {
const yarnLockFile = await fs.readFileSync(yarnLockFilePath);
if (yarnLockFile.toString().includes('cli-npm.heroku.com')) {
await fs.remove(yarnLockFilePath);
}
}
};
const migrateV6Plugins = async () => {
if (!await fs.pathExists(pluginsDir))
return;
process.stderr.write('heroku: migrating plugins\n');
try {
const p = path.join(pluginsDir, 'user.json');
if (await fs.pathExists(p)) {
const { manifest } = await fs.readJSON(p);
for (const plugin of Object.keys(manifest.plugins)) {
process.stderr.write(`heroku-cli: migrating ${plugin}\n`);
await exec('heroku', ['plugins:install', plugin]);
}
}
}
catch (error) {
this.warn(error);
}
try {
const p = path.join(pluginsDir, 'link.json');
if (await fs.pathExists(p)) {
const { manifest } = await fs.readJSON(path.join(pluginsDir, 'link.json'));
for (const { root } of Object.values(manifest.plugins)) {
process.stderr.write(`heroku-cli: migrating ${root}\n`);
await exec('heroku', ['plugins:link', root]);
}
}
}
catch (error) {
this.warn(error);
}
await fs.remove(pluginsDir);
process.stderr.write('heroku: done migrating plugins\n');
};
await removeYarnLockFile();
await migrateV6Plugins();
};
exports.default = migrate;
;