Skip to content

Commit

Permalink
[plugin] activate dependencies before activating a plugin
Browse files Browse the repository at this point in the history
Signed-off-by: Anton Kosyakov <anton.kosyakov@typefox.io>
  • Loading branch information
akosyakov committed Jul 12, 2019
1 parent c2ec867 commit 57fb86a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
2 changes: 1 addition & 1 deletion packages/plugin-ext-vscode/src/node/scanner-vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export class VsCodePluginScanner extends TheiaPluginScanner implements PluginSca

getModel(plugin: PluginPackage): PluginModel {
const result: PluginModel = {
id: `${plugin.publisher}.${plugin.name}`,
id: `${plugin.publisher.toLowerCase()}.${plugin.name.toLowerCase()}`,
name: plugin.name,
publisher: plugin.publisher,
version: plugin.version,
Expand Down
1 change: 1 addition & 0 deletions packages/plugin-ext/src/common/plugin-protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ export interface PluginPackage {
contributes?: PluginPackageContribution;
packagePath: string;
activationEvents?: string[];
extensionDependencies?: string[];
}
export namespace PluginPackage {
export function toPluginUrl(pck: PluginPackage, relativePath: string): string {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export class TheiaPluginScanner implements PluginScanner {

getModel(plugin: PluginPackage): PluginModel {
const result: PluginModel = {
id: `${plugin.publisher}.${plugin.name}`,
id: `${plugin.publisher.toLowerCase()}.${plugin.name.toLowerCase()}`,
name: plugin.name,
publisher: plugin.publisher,
version: plugin.version,
Expand Down
13 changes: 11 additions & 2 deletions packages/plugin-ext/src/plugin/plugin-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,6 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
for (const activationEvent of pluginInit.activationEvents) {
await this.$activateByEvent(activationEvent);
}
// TODO eager activate by `workspaceContains`

if (this.host.loadTests) {
return this.host.loadTests();
Expand All @@ -167,7 +166,7 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
} else {
for (let activationEvent of plugin.rawModel.activationEvents) {
if (activationEvent === 'onUri') {
activationEvent = `onUri:theia://${plugin.model.publisher.toLowerCase()}.${plugin.model.name.toLowerCase()}`;
activationEvent = `onUri:theia://${plugin.model.id}`;
}
this.setActivation(activationEvent, activation);
}
Expand All @@ -185,6 +184,16 @@ export class PluginManagerExtImpl implements PluginManagerExt, PluginManager {
return;
}
this.loadedPlugins.add(plugin.model.id);
if (plugin.rawModel.extensionDependencies) {
for (const dependencyId of plugin.rawModel.extensionDependencies) {
const dependency = this.registry.get(dependencyId);
if (dependency) {
await this.loadPlugin(dependency, configStorage);
} else {
console.warn(`cannot find a dependency to '${dependencyId}' for '${plugin.model.id}' plugin`);
}
}
}

const pluginMain = this.host.loadPlugin(plugin);
// able to load the plug-in ?
Expand Down

0 comments on commit 57fb86a

Please sign in to comment.