Skip to content
This repository has been archived by the owner on Dec 9, 2024. It is now read-only.

Commit

Permalink
feat: Add options to base plugin class (#198)
Browse files Browse the repository at this point in the history
  • Loading branch information
tbarlow12 authored Jul 12, 2019
1 parent 4208625 commit d8cca60
Show file tree
Hide file tree
Showing 14 changed files with 51 additions and 27 deletions.
4 changes: 2 additions & 2 deletions src/plugins/apim/azureApimFunctionPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { AzureBasePlugin } from "../azureBasePlugin";
export class AzureApimFunctionPlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.hooks = {
"after:deploy:function:deploy": this.deploy.bind(this)
};
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/apim/azureApimServicePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { AzureBasePlugin } from "../azureBasePlugin";
export class AzureApimServicePlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.hooks = {
"after:deploy:deploy": this.deploy.bind(this)
};
Expand Down
22 changes: 18 additions & 4 deletions src/plugins/azureBasePlugin.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@ import Serverless from "serverless";
import { MockFactory } from "../test/mockFactory";

class MockPlugin extends AzureBasePlugin {
public constructor(serverless: Serverless) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
}

public logMessage(message: string) {
this.log(message);
}

public getServerlessOption(key: string, defaultValue?: any) {
return this.getOption(key, defaultValue);
}
}

describe("Azure Base Plugin", () => {
Expand All @@ -18,12 +22,22 @@ describe("Azure Base Plugin", () => {

beforeEach(() => {
sls = MockFactory.createTestServerless();
plugin = new MockPlugin(sls);
const options = MockFactory.createTestServerlessOptions();
options["key1"] = "val1";
options["key2"] = "val2";
plugin = new MockPlugin(sls, options);
});


it("logs a message", () => {
plugin.logMessage("test message");
expect(sls.cli.log).lastCalledWith("test message");
})
});

it("gets an option", () => {
expect(plugin.getServerlessOption("key1")).toEqual("val1");
expect(plugin.getServerlessOption("key2")).toEqual("val2");
expect(plugin.getServerlessOption("key3")).toBeUndefined();
expect(plugin.getServerlessOption("key3", "myValue")).toEqual("myValue");
});
})
6 changes: 6 additions & 0 deletions src/plugins/azureBasePlugin.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
import { Guard } from "../shared/guard";
import Serverless from "serverless";
import { Utils } from "../shared/utils";

export abstract class AzureBasePlugin {
public constructor(
protected serverless: Serverless,
protected options: Serverless.Options,
) {
Guard.null(serverless);
}

protected log(message: string) {
this.serverless.cli.log(message);
}

protected getOption(key: string, defaultValue?: any): string {
return Utils.get(this.options, key, defaultValue);
}
}
5 changes: 3 additions & 2 deletions src/plugins/deploy/azureDeployPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import { ResourceService } from "../../services/resourceService";
import { Utils } from "../../shared/utils";
import { AzureBasePlugin } from "../azureBasePlugin";


export class AzureDeployPlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };
public commands: any;

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);

this.hooks = {
"deploy:deploy": this.deploy.bind(this),
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/func/azureFuncPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export class AzureFuncPlugin extends AzureBasePlugin {
public commands: any;
private service: FuncService;

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);

this.hooks = {
"func:func": this.func.bind(this),
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/invoke/azureInvokePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ export class AzureInvokePlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };
private commands: ServerlessCommandMap;
private invokeService: InvokeService;
public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
const path = this.options["path"];

if (path) {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/login/azureLoginPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export class AzureLoginPlugin extends AzureBasePlugin {
private provider: AzureProvider;
public hooks: { [eventName: string]: Promise<any> };

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.provider = (this.serverless.getProvider("azure") as any) as AzureProvider;

this.hooks = {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/logs/azureLogsPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export class AzureLogsPlugin extends AzureBasePlugin {

private provider: AzureProvider;

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);

this.provider = (this.serverless.getProvider("azure") as any) as AzureProvider;

Expand Down
4 changes: 2 additions & 2 deletions src/plugins/offline/azureOfflinePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export class AzureOfflinePlugin extends AzureBasePlugin {
public commands: any;
private offlineService: OfflineService;

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.offlineService = new OfflineService(this.serverless, this.options);

this.hooks = {
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/package/azurePackagePlugin.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ describe("Azure Package Plugin", () => {
beforeEach(() => {
jest.resetAllMocks();
sls = MockFactory.createTestServerless();
const options = MockFactory.createTestServerlessOptions();

plugin = new AzurePackagePlugin(sls);
plugin = new AzurePackagePlugin(sls, options);
});

it("sets creates function bindings before package:setupProviderConfiguration life cycle event", async () => {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/package/azurePackagePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ export class AzurePackagePlugin extends AzureBasePlugin {
public provider: AzureProvider;
public hooks: { [eventName: string]: Promise<any> };

public constructor(serverless: Serverless) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.hooks = {
"before:package:setupProviderConfiguration": this.setupProviderConfiguration.bind(this),
"before:webpack:package:packageModules": this.webpack.bind(this),
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/remove/azureRemovePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { AzureBasePlugin } from "../azureBasePlugin";
export class AzureRemovePlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };

public constructor(serverless: Serverless, private options: Serverless.Options) {
super(serverless);
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.hooks = {
"remove:remove": this.remove.bind(this)
};
Expand Down
6 changes: 4 additions & 2 deletions src/plugins/rollback/azureRollbackPlugin.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import Serverless from "serverless";
import { RollbackService } from "../../services/rollbackService";
import { AzureBasePlugin } from "../azureBasePlugin";

/**
* Plugin for rolling back Function App Service to previous deployment
*/
export class AzureRollbackPlugin {
export class AzureRollbackPlugin extends AzureBasePlugin {
public hooks: { [eventName: string]: Promise<any> };

public constructor(private serverless: Serverless, private options: Serverless.Options) {
public constructor(serverless: Serverless, options: Serverless.Options) {
super(serverless, options);
this.hooks = {
"rollback:rollback": this.rollback.bind(this)
};
Expand Down

0 comments on commit d8cca60

Please sign in to comment.