Skip to content
This repository has been archived by the owner on Aug 31, 2021. It is now read-only.

Commit

Permalink
context based script events
Browse files Browse the repository at this point in the history
  • Loading branch information
mkloubert committed Dec 28, 2017
1 parent 4cd36b0 commit 62aa478
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import * as deploy_helpers from './helpers';
import * as deploy_log from './log';
import * as deploy_values from './values';
import * as deploy_workspaces from './workspaces';
import * as Events from 'events';
import * as vscode from 'vscode';


Expand Down Expand Up @@ -187,6 +188,7 @@ export async function reloadCommands(newCfg: deploy_contracts.Configuration) {
const CTX: ScriptCommandExecutionContext = {
button: btn,
command: id,
events: ME.sessionState['commands']['events'],
globalEvents: deploy_events.EVENTS,
globals: ME.globals,
globalState: GLOBAL_STATE,
Expand Down Expand Up @@ -221,7 +223,7 @@ export async function reloadCommands(newCfg: deploy_contracts.Configuration) {

return await Promise.resolve(
EXECUTE.apply(SCRIPT_MODULE,
args.concat( deploy_helpers.toArray(arguments) ))
args.concat( deploy_helpers.toArray(arguments) ))
);
}
else {
Expand Down
4 changes: 4 additions & 0 deletions src/contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,10 @@ export interface PlatformItem {
* Arguments for a script.
*/
export interface ScriptArguments {
/**
* Event emitter for scripts of that kind.
*/
readonly events: NodeJS.EventEmitter;
/**
* Gets the emitter for global extension events.
*/
Expand Down
1 change: 1 addition & 0 deletions src/plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,7 @@ export abstract class FileToUploadBase implements FileToUpload {
);

const CONTEXT: deploy_transformers.DataTransformerContext = {
events: ME.workspace.sessionState['upload']['events'],
globalEvents: deploy_events.EVENTS,
globals: ME.workspace.globals,
globalState: ME.workspace.sessionState['upload']['states']['global'],
Expand Down
7 changes: 7 additions & 0 deletions src/plugins/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import * as deploy_log from '../log';
import * as deploy_plugins from '../plugins';
import * as deploy_targets from '../targets';
import * as deploy_workspaces from '../workspaces';
import * as Events from 'events';


/**
Expand Down Expand Up @@ -95,6 +96,7 @@ export interface ScriptTarget extends deploy_targets.Target {


class ScriptPlugin extends deploy_plugins.PluginBase<ScriptTarget> {
private readonly _EVENTS = new Events.EventEmitter();
private readonly _GLOBAL_STATE: deploy_contracts.KeyValuePairs = {};
private readonly _SCRIPT_STATES: deploy_contracts.KeyValuePairs = {};

Expand All @@ -119,6 +121,7 @@ class ScriptPlugin extends deploy_plugins.PluginBase<ScriptTarget> {
const ARGS: ScriptArguments = {
cancellationToken: undefined,
dir: context['dir'],
events: ME._EVENTS,
files: context['files'],
globalEvents: deploy_events.EVENTS,
globals: context.target.__workspace.globals,
Expand Down Expand Up @@ -269,6 +272,10 @@ class ScriptPlugin extends deploy_plugins.PluginBase<ScriptTarget> {
return RESULT;
}

protected onDispose() {
this._EVENTS.removeAllListeners();
}

public async uploadFiles(context: deploy_plugins.UploadContext<ScriptTarget>): Promise<void> {
const ARGS = await this.createScriptArgsFromContext(context,
deploy_contracts.DeployOperation.Deploy);
Expand Down
1 change: 1 addition & 0 deletions src/pull.ts
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ export async function pullFilesFrom(files: string[],
);

const CONTEXT: deploy_transformers.DataTransformerContext = {
events: ME.sessionState['pull']['events'],
globalEvents: deploy_events.EVENTS,
globals: ME.globals,
globalState: ME.sessionState['pull']['states']['global'],
Expand Down
1 change: 1 addition & 0 deletions src/targets/operations/http.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ export async function execute(context: deploy_targets.TargetOperationExecutionCo
getBodyToSend = async () => {
const ARGS: HttpBodyModuleExecutionArguments = {
context: context,
events: WORKSPACE.sessionState['target_operations']['http']['events'],
globalEvents: deploy_events.EVENTS,
globals: WORKSPACE.globals,
globalState: WORKSPACE.sessionState['target_operations']['http']['global'],
Expand Down
1 change: 1 addition & 0 deletions src/targets/operations/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export async function execute(context: deploy_targets.TargetOperationExecutionCo
if (EXECUTE) {
const ARGS: ScriptTargetOperationExecutionArguments = {
context: context,
events: WORKSPACE.sessionState['target_operations']['script']['events'],
globalEvents: deploy_events.EVENTS,
globals: WORKSPACE.globals,
globalState: WORKSPACE.sessionState['target_operations']['script']['global'],
Expand Down
10 changes: 9 additions & 1 deletion src/workspaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import * as deploy_transformers from './transformers';
import * as deploy_tasks from './tasks';
import * as deploy_values from './values';
import * as Enumerable from 'node-enumerable';
import * as Events from 'events';
import * as Glob from 'glob';
import * as i18 from './i18';
import * as i18next from 'i18next';
Expand Down Expand Up @@ -427,8 +428,12 @@ export class Workspace extends deploy_objects.DisposableBase implements deploy_c

private createSessionState(newCfg: WorkspaceSettings) {
const NEW_SESSION_STATE: deploy_contracts.KeyValuePairs = {};


NEW_SESSION_STATE['commands'] = {};
NEW_SESSION_STATE['commands']['events'] = new Events.EventEmitter();

NEW_SESSION_STATE['pull'] = {};
NEW_SESSION_STATE['pull']['events'] = new Events.EventEmitter();
NEW_SESSION_STATE['pull']['states'] = {};
NEW_SESSION_STATE['pull']['states']['global'] = {};
NEW_SESSION_STATE['pull']['states']['data_transformers'] = {};
Expand All @@ -438,15 +443,18 @@ export class Workspace extends deploy_objects.DisposableBase implements deploy_c
NEW_SESSION_STATE['sync']['whenOpen']['states'] = {};

NEW_SESSION_STATE['upload'] = {};
NEW_SESSION_STATE['upload']['events'] = new Events.EventEmitter();
NEW_SESSION_STATE['upload']['states'] = {};
NEW_SESSION_STATE['upload']['states']['global'] = {};
NEW_SESSION_STATE['upload']['states']['data_transformers'] = {};

NEW_SESSION_STATE['target_operations'] = {};
NEW_SESSION_STATE['target_operations']['http'] = {};
NEW_SESSION_STATE['target_operations']['http']['events'] = new Events.EventEmitter();
NEW_SESSION_STATE['target_operations']['http']['global'] = {};
NEW_SESSION_STATE['target_operations']['http']['body_scripts'] = {};
NEW_SESSION_STATE['target_operations']['script'] = {};
NEW_SESSION_STATE['target_operations']['script']['events'] = new Events.EventEmitter();
NEW_SESSION_STATE['target_operations']['script']['global'] = {};
NEW_SESSION_STATE['target_operations']['script']['scripts'] = {};

Expand Down

0 comments on commit 62aa478

Please sign in to comment.