mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 17:52:34 -05:00
Feature: Tasks (core) (#12184)
* initial * string sanitize * hygiene * build task * added build task * hygiene * initial tasks view * finished tasks * add sql carbon tags and undo changes * remove task message * fix tasks tests * removed extension stuff * add problem matcher * remove extra space * undo extension changes * add problem matcher to mssql
This commit is contained in:
@@ -82,6 +82,12 @@ import { isWorkspaceFolder, TaskQuickPickEntry, QUICKOPEN_DETAIL_CONFIG, TaskQui
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { once } from 'vs/base/common/functional';
|
||||
|
||||
// {{ SQL CARBON EDIT }}
|
||||
// integration with tasks view panel
|
||||
import { ITaskService as ISqlTaskService, TaskStatusChangeArgs } from 'sql/workbench/services/tasks/common/tasksService';
|
||||
import { TaskStatus } from 'sql/workbench/api/common/extHostBackgroundTaskManagement';
|
||||
import { TaskInfo } from 'azdata';
|
||||
|
||||
const QUICKOPEN_HISTORY_LIMIT_CONFIG = 'task.quickOpen.history';
|
||||
const PROBLEM_MATCHER_NEVER_CONFIG = 'task.problemMatchers.neverPrompt';
|
||||
const USE_SLOW_PICKER = 'task.quickOpen.showAll';
|
||||
@@ -227,6 +233,9 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
private _waitForSupportedExecutions: Promise<void>;
|
||||
private _onDidRegisterSupportedExecutions: Emitter<void> = new Emitter();
|
||||
|
||||
// {{SQL CARBON EDIT}}
|
||||
private lastRunTasksViewTask: TaskInfo;
|
||||
|
||||
constructor(
|
||||
@IConfigurationService private readonly configurationService: IConfigurationService,
|
||||
@IMarkerService protected readonly markerService: IMarkerService,
|
||||
@@ -258,7 +267,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
@ITextModelService private readonly textModelResolverService: ITextModelService,
|
||||
@IPreferencesService private readonly preferencesService: IPreferencesService,
|
||||
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
|
||||
@ILogService private readonly logService: ILogService
|
||||
@ILogService private readonly logService: ILogService,
|
||||
@ISqlTaskService private readonly sqlTaskService: ISqlTaskService
|
||||
) {
|
||||
super();
|
||||
|
||||
@@ -882,7 +892,6 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
if (!task) {
|
||||
throw new TaskError(Severity.Info, nls.localize('TaskServer.noTask', 'Task to execute is undefined'), TaskErrors.TaskNotFound);
|
||||
}
|
||||
|
||||
return new Promise<ITaskSummary | undefined>(async (resolve) => {
|
||||
let resolver = this.createResolver();
|
||||
if (options && options.attachProblemMatcher && this.shouldAttachProblemMatcher(task) && !InMemoryTask.is(task)) {
|
||||
@@ -1473,8 +1482,25 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
|
||||
const execTask = async (task: Task, resolver: ITaskResolver): Promise<ITaskSummary> => {
|
||||
return ProblemMatcherRegistry.onReady().then(() => {
|
||||
// {{ SQL CARBON EDIT }}
|
||||
const taskNodeId = UUID.generateUuid();
|
||||
let taskInfo: TaskInfo = {
|
||||
databaseName: undefined,
|
||||
serverName: undefined,
|
||||
description: undefined,
|
||||
isCancelable: false,
|
||||
name: task._label,
|
||||
providerName: undefined,
|
||||
taskExecutionMode: 0,
|
||||
taskId: taskNodeId,
|
||||
status: TaskStatus.NotStarted
|
||||
};
|
||||
this.sqlTaskService.createNewTask(taskInfo);
|
||||
this.lastRunTasksViewTask = taskInfo;
|
||||
|
||||
let executeResult = this.getTaskSystem().run(task, resolver);
|
||||
return this.handleExecuteResult(executeResult, runSource);
|
||||
// {{ SQL CARBON EDIT }}
|
||||
return this.handleExecuteResult(executeResult, runSource, taskNodeId);
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1511,7 +1537,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
}
|
||||
}
|
||||
|
||||
private async handleExecuteResult(executeResult: ITaskExecuteResult, runSource?: TaskRunSource): Promise<ITaskSummary> {
|
||||
// {{SQL CARBON EDIT}}
|
||||
private async handleExecuteResult(executeResult: ITaskExecuteResult, runSource?: TaskRunSource, taskNodeId?: string): Promise<ITaskSummary> {
|
||||
if (executeResult.task.taskLoadMessages && executeResult.task.taskLoadMessages.length > 0) {
|
||||
executeResult.task.taskLoadMessages.forEach(loadMessage => {
|
||||
this._outputChannel.append(loadMessage + '\n');
|
||||
@@ -1546,6 +1573,19 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
throw new TaskError(Severity.Warning, nls.localize('TaskSystem.active', 'There is already a task running. Terminate it first before executing another task.'), TaskErrors.RunningTask);
|
||||
}
|
||||
}
|
||||
// {{ SQL CARBON EDIT }}
|
||||
executeResult.promise.then((summary: ITaskSummary) => {
|
||||
let args: TaskStatusChangeArgs = {
|
||||
taskId: taskNodeId ? taskNodeId : executeResult.task._id,
|
||||
status: undefined
|
||||
};
|
||||
if (summary.exitCode === 0) {
|
||||
args.status = TaskStatus.Succeeded;
|
||||
} else if (summary.exitCode === 1) {
|
||||
args.status = TaskStatus.Failed;
|
||||
}
|
||||
this.sqlTaskService.handleTaskComplete(args);
|
||||
});
|
||||
return executeResult.promise;
|
||||
}
|
||||
|
||||
@@ -2555,9 +2595,16 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
|
||||
|
||||
ProblemMatcherRegistry.onReady().then(() => {
|
||||
return this.editorService.saveAll({ reason: SaveReason.AUTO }).then(() => { // make sure all dirty editors are saved
|
||||
// {{SQL CARBON EDIT}}
|
||||
let lastRunTasksViewTask = this.lastRunTasksViewTask;
|
||||
lastRunTasksViewTask.taskId = UUID.generateUuid();
|
||||
this.sqlTaskService.createNewTask(lastRunTasksViewTask);
|
||||
this.lastRunTasksViewTask = lastRunTasksViewTask;
|
||||
|
||||
let executeResult = this.getTaskSystem().rerun();
|
||||
if (executeResult) {
|
||||
return this.handleExecuteResult(executeResult);
|
||||
// {{SQL CARBON EDIT}}
|
||||
return this.handleExecuteResult(executeResult, undefined, lastRunTasksViewTask.taskId);
|
||||
} else {
|
||||
this.doRunTaskCommand();
|
||||
return Promise.resolve(undefined);
|
||||
|
||||
Reference in New Issue
Block a user