Script for resolving plugin directory by its package name
Summary: Changed "build-plugin" script to allow triggering release by plugin name (required to enable triggering releases by button in Marketplace): 1) Added new script to resolve plugin dir by name 2) Allow passing either plugin dir or name to "build-plugin" script Reviewed By: passy Differential Revision: D22354643 fbshipit-source-id: b7aca57acefc81ca0b6d9c7f359f63d8f0599e39
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b11082d229
commit
228d09d572
@@ -11,20 +11,19 @@ import {pluginsDir, rootDir, distDir} from './paths';
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import {execSync} from 'child_process';
|
||||
import {resolvePluginDir} from './workspaces';
|
||||
|
||||
(async function buildPlugin() {
|
||||
const pluginDirArg = process.argv[2];
|
||||
const pluginDir = await resolveAbsolutePluginDir(pluginDirArg);
|
||||
if (path.relative(pluginsDir, pluginDir).includes('..')) {
|
||||
throw new Error(
|
||||
`Plugin dir ${pluginDir} is not inside plugins directory ${pluginsDir}`,
|
||||
);
|
||||
}
|
||||
const outputFile = path.join(
|
||||
distDir,
|
||||
'plugins',
|
||||
path.relative(pluginsDir, pluginDir) + '.tgz',
|
||||
);
|
||||
const pluginName = process.argv[2];
|
||||
const pluginDir = await resolvePluginDir(pluginName);
|
||||
const outputFileArg = process.argv.length > 3 ? process.argv[3] : null;
|
||||
const outputFile = outputFileArg
|
||||
? path.resolve(outputFileArg)
|
||||
: path.join(
|
||||
distDir,
|
||||
'plugins',
|
||||
path.relative(pluginsDir, pluginDir) + '.tgz',
|
||||
);
|
||||
await fs.ensureDir(path.dirname(outputFile));
|
||||
await fs.remove(outputFile);
|
||||
const bundleCmd = `yarn flipper-pkg bundle "${pluginDir}" --production`;
|
||||
@@ -32,23 +31,3 @@ import {execSync} from 'child_process';
|
||||
execSync(bundleCmd, {cwd: rootDir, stdio: 'inherit'});
|
||||
execSync(packCmd, {cwd: rootDir, stdio: 'inherit'});
|
||||
})();
|
||||
|
||||
async function resolveAbsolutePluginDir(dir: string): Promise<string> {
|
||||
if (path.isAbsolute(dir)) {
|
||||
return dir;
|
||||
}
|
||||
const resolvedFromPluginDir = path.resolve(pluginsDir, dir);
|
||||
if (await fs.pathExists(resolvedFromPluginDir)) {
|
||||
return resolvedFromPluginDir;
|
||||
}
|
||||
const resolvedFromCwd = path.resolve(process.cwd(), dir);
|
||||
if (await fs.pathExists(resolvedFromCwd)) {
|
||||
return resolvedFromCwd;
|
||||
}
|
||||
throw new Error(
|
||||
`Cannot resolve plugin dir path. Paths checked: ${[
|
||||
resolvedFromPluginDir,
|
||||
resolvedFromCwd,
|
||||
]}`,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user