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
@@ -211,3 +211,47 @@ export async function publishPackages({
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function resolvePluginDir(name: string): Promise<string> {
|
||||
const pluginDir =
|
||||
(await resolvePluginByNameOrId(name)) ?? (await resolvePluginByPath(name));
|
||||
if (!pluginDir) {
|
||||
throw new Error(`Cannot find plugin by name or dir ${name}`);
|
||||
} else {
|
||||
return pluginDir;
|
||||
}
|
||||
}
|
||||
|
||||
async function resolvePluginByNameOrId(
|
||||
pluginName: string,
|
||||
): Promise<string | undefined> {
|
||||
const workspaces = await getWorkspaces();
|
||||
const pluginDir = workspaces.packages
|
||||
.filter((p) => p.isPlugin)
|
||||
.find(
|
||||
(p) =>
|
||||
p.json.name === pluginName ||
|
||||
p.json.id === pluginName ||
|
||||
p.json.name === `flipper-plugin-${pluginName}`,
|
||||
)?.dir;
|
||||
return pluginDir;
|
||||
}
|
||||
|
||||
async function resolvePluginByPath(dir: string): Promise<string | undefined> {
|
||||
if (path.isAbsolute(dir)) {
|
||||
if (await fs.pathExists(dir)) {
|
||||
return dir;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user