Skip to content

Commit

Permalink
Fix
Browse files Browse the repository at this point in the history
  • Loading branch information
tolusha committed Oct 3, 2019
1 parent af01561 commit 080150e
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 39 deletions.
17 changes: 8 additions & 9 deletions packages/debug/src/browser/debug-session-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -399,35 +399,34 @@ export class DebugSessionManager {

/**
* Runs the given tasks.
* @param taskDisplayName the task name to run, see [TaskDisplayNameResolver](#TaskDisplayNameResolver)
* @param taskName the task name to run, see [TaskNameResolver](#TaskNameResolver)
* @return true if it allowed to continue debugging otherwise it returns false
*/
protected async runTask(workspaceFolderUri: string | undefined, taskDisplayName: string | undefined, checkErrors?: boolean): Promise<boolean> {
if (!taskDisplayName) {
protected async runTask(workspaceFolderUri: string | undefined, taskName: string | undefined, checkErrors?: boolean): Promise<boolean> {
if (!taskName) {
return true;
}

const workspaceFolder = workspaceFolderUri && new URI(workspaceFolderUri).path.toString();
const taskInfo = await this.taskService.runTaskFromWorkspace(workspaceFolder, taskDisplayName);
const taskInfo = await this.taskService.runWorkspaceTask(workspaceFolderUri, taskName);
if (!checkErrors) {
return true;
}

if (!taskInfo) {
return this.doPostTaskAction(`Could not find the task '${taskDisplayName}'.`);
return this.doPostTaskAction(`Could not find the task '${taskName}'.`);
}

const code = await this.taskService.getExitCode(taskInfo.taskId);
if (code === 0) {
return true;
} else if (code !== undefined) {
return this.doPostTaskAction(`Task '${taskDisplayName}' terminated with exit code ${code}.`);
return this.doPostTaskAction(`Task '${taskName}' terminated with exit code ${code}.`);
} else {
const signal = await this.taskService.getTerminateSignal(taskInfo.taskId);
if (signal !== undefined) {
return this.doPostTaskAction(`Task '${taskDisplayName}' terminated by signal ${signal}.`);
return this.doPostTaskAction(`Task '${taskName}' terminated by signal ${signal}.`);
} else {
return this.doPostTaskAction(`Task '${taskDisplayName}' terminated for unknown reason.`);
return this.doPostTaskAction(`Task '${taskName}' terminated for unknown reason.`);
}
}
}
Expand Down
26 changes: 12 additions & 14 deletions packages/task/src/browser/quick-open-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import { QuickOpenHandler, QuickOpenService, QuickOpenOptions } from '@theia/cor
import { WorkspaceService } from '@theia/workspace/lib/browser';
import { TerminalService } from '@theia/terminal/lib/browser/base/terminal-service';
import { QuickOpenModel, QuickOpenItem, QuickOpenActionProvider, QuickOpenMode, QuickOpenGroupItem, QuickOpenGroupItemOptions } from '@theia/core/lib/common/quick-open-model';
import { TaskDisplayNameResolver } from './task-display-name-resolver';
import { TaskNameResolver } from './task-name-resolver';

@injectable()
export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
Expand All @@ -51,8 +51,8 @@ export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
@inject(TaskDefinitionRegistry)
protected readonly taskDefinitionRegistry: TaskDefinitionRegistry;

@inject(TaskDisplayNameResolver)
protected readonly taskDisplayNameResolver: TaskDisplayNameResolver;
@inject(TaskNameResolver)
protected readonly taskNameResolver: TaskNameResolver;

/** Initialize this quick open model with the tasks. */
async init(): Promise<void> {
Expand All @@ -68,7 +68,7 @@ export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
const item = new TaskRunQuickOpenItem(task, this.taskService, isMulti, {
groupLabel: index === 0 ? 'recently used tasks' : undefined,
showBorder: false
});
}, this.taskNameResolver);
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
return item;
}),
Expand All @@ -80,7 +80,7 @@ export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
? false
: index === 0 ? true : false
)
});
}, this.taskNameResolver);
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
return item;
}),
Expand All @@ -92,7 +92,7 @@ export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
? false
: index === 0 ? true : false
)
});
}, this.taskNameResolver);
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
return item;
})
Expand Down Expand Up @@ -177,12 +177,12 @@ export class QuickOpenTask implements QuickOpenModel, QuickOpenHandler {
const { filteredConfiguredTasks, filteredProvidedTasks } = this.getFilteredTasks([], configuredTasks, providedTasks);
this.items.push(
...filteredConfiguredTasks.map((task, index) => {
const item = new TaskConfigureQuickOpenItem(task, this.taskService, this.taskDisplayNameResolver, this.workspaceService, isMulti);
const item = new TaskConfigureQuickOpenItem(task, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
return item;
}),
...filteredProvidedTasks.map((task, index) => {
const item = new TaskConfigureQuickOpenItem(task, this.taskService, this.taskDisplayNameResolver, this.workspaceService, isMulti);
const item = new TaskConfigureQuickOpenItem(task, this.taskService, this.taskNameResolver, this.workspaceService, isMulti);
item['taskDefinitionRegistry'] = this.taskDefinitionRegistry;
return item;
}),
Expand Down Expand Up @@ -245,6 +245,7 @@ export class TaskRunQuickOpenItem extends QuickOpenGroupItem {
protected taskService: TaskService,
protected isMulti: boolean,
protected readonly options: QuickOpenGroupItemOptions,
protected readonly taskNameResolver: TaskNameResolver,
) {
super(options);
}
Expand All @@ -254,10 +255,7 @@ export class TaskRunQuickOpenItem extends QuickOpenGroupItem {
}

getLabel(): string {
if (this.taskDefinitionRegistry && !!this.taskDefinitionRegistry.getDefinition(this.task)) {
return `${this.task.source}: ${this.task.label}`;
}
return `${this.task.type}: ${this.task.label}`;
return this.taskNameResolver.resolve(this.task);
}

getGroupLabel(): string {
Expand Down Expand Up @@ -324,7 +322,7 @@ export class TaskConfigureQuickOpenItem extends QuickOpenGroupItem {
constructor(
protected readonly task: TaskConfiguration,
protected readonly taskService: TaskService,
protected readonly taskDisplayNameResolver: TaskDisplayNameResolver,
protected readonly taskNameResolver: TaskNameResolver,
protected readonly workspaceService: WorkspaceService,
protected readonly isMulti: boolean
) {
Expand All @@ -334,7 +332,7 @@ export class TaskConfigureQuickOpenItem extends QuickOpenGroupItem {
}

getLabel(): string {
return this.taskDisplayNameResolver.resolve(this.task);
return this.taskNameResolver.resolve(this.task);
}

getDescription(): string {
Expand Down
3 changes: 2 additions & 1 deletion packages/task/src/browser/task-configurations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,8 @@ export class TaskConfigurations implements Disposable {
}
return {
...config,
_source: rootFolderUri
_source: rootFolderUri,
_scope: rootFolderUri
};
});
this.rawTaskConfigurations.set(rootFolderUri, tasks);
Expand Down
4 changes: 2 additions & 2 deletions packages/task/src/browser/task-frontend-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import { TaskConfigurationManager } from './task-configuration-manager';
import { bindTaskPreferences } from './task-preferences';
import '../../src/browser/style/index.css';
import './tasks-monaco-contribution';
import { TaskDisplayNameResolver } from './task-display-name-resolver';
import { TaskNameResolver } from './task-name-resolver';

export default new ContainerModule(bind => {
bind(TaskFrontendContribution).toSelf().inSingletonScope();
Expand Down Expand Up @@ -72,7 +72,7 @@ export default new ContainerModule(bind => {
bind(TaskResolverRegistry).toSelf().inSingletonScope();
bindContributionProvider(bind, TaskContribution);
bind(TaskSchemaUpdater).toSelf().inSingletonScope();
bind(TaskDisplayNameResolver).toSelf().inSingletonScope();
bind(TaskNameResolver).toSelf().inSingletonScope();

bindProcessTaskModule(bind);
bindTaskPreferences(bind);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { TaskConfiguration } from '../common';
import { TaskDefinitionRegistry } from './task-definition-registry';

@injectable()
export class TaskDisplayNameResolver {
export class TaskNameResolver {
@inject(TaskDefinitionRegistry)
protected taskDefinitionRegistry: TaskDefinitionRegistry;

Expand All @@ -31,6 +31,7 @@ export class TaskDisplayNameResolver {
if (this.taskDefinitionRegistry.getDefinition(task)) {
return `${task.source}: ${task.label}`;
}

return task.label;
}
}
23 changes: 11 additions & 12 deletions packages/task/src/browser/task-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import { ProvidedTaskConfigurations } from './provided-task-configurations';
import { TaskConfigurationClient, TaskConfigurations } from './task-configurations';
import { TaskProviderRegistry, TaskResolverRegistry } from './task-contribution';
import { TaskDefinitionRegistry } from './task-definition-registry';
import { TaskDisplayNameResolver } from './task-display-name-resolver';
import { TaskNameResolver } from './task-name-resolver';
import { ProblemMatcherRegistry } from './task-problem-matcher-registry';

export interface QuickPickProblemMatcherItem {
Expand Down Expand Up @@ -125,8 +125,8 @@ export class TaskService implements TaskConfigurationClient {
@inject(OpenerService)
protected readonly openerService: OpenerService;

@inject(TaskDisplayNameResolver)
protected readonly taskDisplayNameResolver: TaskDisplayNameResolver;
@inject(TaskNameResolver)
protected readonly taskNameResolver: TaskNameResolver;

/**
* @deprecated To be removed in 0.5.0
Expand Down Expand Up @@ -429,22 +429,21 @@ export class TaskService implements TaskConfigurationClient {
return;
}

async runTaskFromWorkspace(workspaceFolder: string | undefined, displayName: string): Promise<TaskInfo | undefined> {
const configuredTasks = await this.getConfiguredTasks();
let task = configuredTasks.filter(t => t._source === workspaceFolder && displayName === this.taskDisplayNameResolver.resolve(t))[0];

if (!task) {
const providedTasks = await this.getProvidedTasks();
task = providedTasks.filter(t => (!t._scope || t._scope === workspaceFolder) && displayName === this.taskDisplayNameResolver.resolve(t))[0];
}

async runWorkspaceTask(workspaceFolderUri: string | undefined, displayName: string): Promise<TaskInfo | undefined> {
const tasks = await this.getWorkspaceTasks(workspaceFolderUri);
const task = tasks.filter(t => displayName !== this.taskNameResolver.resolve(t))[0];
if (!task) {
return undefined;
}

return this.runTask(task);
}

protected async getWorkspaceTasks(workspaceFolderUri: string | undefined): Promise<TaskConfiguration[]> {
const tasks = await this.getTasks();
return tasks.filter(t => t._scope === workspaceFolderUri);
}

private async removeProblemMarks(option?: RunTaskOption): Promise<void> {
if (option && option.customization) {
const matchersFromOption = option.customization.problemMatcher || [];
Expand Down

0 comments on commit 080150e

Please sign in to comment.