Skip to content

Commit

Permalink
add sleep for short tasks
Browse files Browse the repository at this point in the history
Signed-off-by: vince-fugnitto <[email protected]>
  • Loading branch information
vince-fugnitto committed Jan 21, 2021
1 parent 4a16053 commit dbd2c0d
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 77 deletions.
79 changes: 2 additions & 77 deletions src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,83 +1,8 @@
import * as vscode from 'vscode';

interface TestTaskDefinition extends vscode.TaskDefinition {
/**
* The task name.
*/
task: string;
}
import { TestTaskProvider } from './task-provider';

export function activate(context: vscode.ExtensionContext) {
console.log(' \'vscode-task-provider-example\' extension started...');

let taskPromise: Thenable<vscode.Task[]> | undefined = undefined;
const taskProvider = vscode.tasks.registerTaskProvider('vince', {
provideTasks: () => {
if (!taskPromise) {
taskPromise = getTestTasks();
}
return taskPromise;
},
resolveTask(_task: vscode.Task): vscode.Task | undefined {
const task = _task.definition.task;
if (task) {
const definition: TestTaskDefinition = <any>_task.definition;
return new vscode.Task(
definition,
_task.scope ?? vscode.TaskScope.Workspace,
definition.task,
_task.name,
_task.execution,
);
}
return undefined;
}
});
vscode.tasks.registerTaskProvider('vince', new TestTaskProvider);
}

export function deactivate() { }

export function getTestTasks(): Promise<vscode.Task[]> {
const tasks: vscode.Task[] = [];
tasks.push(getTestTask());
tasks.push(getBuildTask());
tasks.push(getRebuildTask());
tasks.push(getCleanTask());
tasks.push(getNoneTask());
return Promise.resolve(tasks);
}

function getTestTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-test' }, workspaceFolder, 'vince-test', 'vince', new vscode.ShellExecution(`echo "Hello World - Test"`));
task.group = vscode.TaskGroup.Test;
return task;
}

function getBuildTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-build' }, workspaceFolder, 'vince-build', 'vince', new vscode.ShellExecution(`echo "Hello World - Build"`));
task.group = vscode.TaskGroup.Build;
return task;
}

function getRebuildTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-rebuild' }, workspaceFolder, 'vince-rebuild', 'vince', new vscode.ShellExecution(`echo "Hello World - Rebuild"`));
task.group = vscode.TaskGroup.Rebuild;
return task;
}

function getCleanTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-clean' }, workspaceFolder, 'vince-clean', 'vince', new vscode.ShellExecution(`echo "Hello World - Clean"`));
task.group = vscode.TaskGroup.Clean;
return task;
}

function getNoneTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-none' }, workspaceFolder, 'vince-none', 'vince', new vscode.ShellExecution(`echo "Hello World - None"`));
return task;
}

63 changes: 63 additions & 0 deletions src/task-provider.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import * as vscode from 'vscode';

export interface TestTaskDefinition extends vscode.TaskDefinition {
/**
* The task name.
*/
task: string;
}

export class TestTaskProvider implements vscode.TaskProvider {

provideTasks(_token: vscode.CancellationToken): vscode.ProviderResult<vscode.Task[]> {
return getTestTasks();
}

resolveTask(task: vscode.Task, _token: vscode.CancellationToken): vscode.Task | undefined {
return task;
}
}

export function getTestTasks(): Promise<vscode.Task[]> {
const tasks: vscode.Task[] = [];
tasks.push(getTestTask());
tasks.push(getBuildTask());
tasks.push(getRebuildTask());
tasks.push(getCleanTask());
tasks.push(getNoneTask());
return Promise.resolve(tasks);
}

function getTestTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-test' }, workspaceFolder, 'vince-test', 'vince', new vscode.ShellExecution(`sleep 5; echo "Hello World - Test"`));
task.group = vscode.TaskGroup.Test;
return task;
}

function getBuildTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-build' }, workspaceFolder, 'vince-build', 'vince', new vscode.ShellExecution(`sleep 5; echo "Hello World - Build"`));
task.group = vscode.TaskGroup.Build;
return task;
}

function getRebuildTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-rebuild' }, workspaceFolder, 'vince-rebuild', 'vince', new vscode.ShellExecution(`sleep 5; echo "Hello World - Rebuild"`));
task.group = vscode.TaskGroup.Rebuild;
return task;
}

function getCleanTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-clean' }, workspaceFolder, 'vince-clean', 'vince', new vscode.ShellExecution(`sleep 5; echo "Hello World - Clean"`));
task.group = vscode.TaskGroup.Clean;
return task;
}

function getNoneTask(): vscode.Task {
const workspaceFolder = vscode.workspace.workspaceFolders![0];
const task = new vscode.Task({ type: 'vince', task: 'vince-none' }, workspaceFolder, 'vince-none', 'vince', new vscode.ShellExecution(`sleep 5; echo "Hello World - None"`));
return task;
}

0 comments on commit dbd2c0d

Please sign in to comment.