diff --git a/src/models/serverless.ts b/src/models/serverless.ts index 1505415b..c1e43e7a 100644 --- a/src/models/serverless.ts +++ b/src/models/serverless.ts @@ -88,6 +88,10 @@ export interface ServerlessCommand { commands?: ServerlessCommandMap; } +export interface ServerlessHookMap { + [eventName: string]: Promise; +} + export interface ServerlessCommandMap { [command: string]: ServerlessCommand; } diff --git a/src/plugins/apim/azureApimFunctionPlugin.ts b/src/plugins/apim/azureApimFunctionPlugin.ts index ff8010ad..c81300c5 100644 --- a/src/plugins/apim/azureApimFunctionPlugin.ts +++ b/src/plugins/apim/azureApimFunctionPlugin.ts @@ -3,7 +3,6 @@ import { ApimService } from "../../services/apimService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureApimFunctionPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); diff --git a/src/plugins/apim/azureApimServicePlugin.ts b/src/plugins/apim/azureApimServicePlugin.ts index 3aa6e5e4..d900fc5e 100644 --- a/src/plugins/apim/azureApimServicePlugin.ts +++ b/src/plugins/apim/azureApimServicePlugin.ts @@ -3,7 +3,6 @@ import { ApimService } from "../../services/apimService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureApimServicePlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); diff --git a/src/plugins/azureBasePlugin.ts b/src/plugins/azureBasePlugin.ts index 3aa78342..75b61bee 100644 --- a/src/plugins/azureBasePlugin.ts +++ b/src/plugins/azureBasePlugin.ts @@ -1,8 +1,13 @@ import { Guard } from "../shared/guard"; import Serverless from "serverless"; import { Utils } from "../shared/utils"; +import { ServerlessCommandMap, ServerlessHookMap } from "../models/serverless"; export abstract class AzureBasePlugin { + + public hooks: ServerlessHookMap + protected commands: ServerlessCommandMap; + public constructor( protected serverless: Serverless, protected options: TOptions, diff --git a/src/plugins/deploy/azureDeployPlugin.ts b/src/plugins/deploy/azureDeployPlugin.ts index ff9d60fd..84c1b993 100644 --- a/src/plugins/deploy/azureDeployPlugin.ts +++ b/src/plugins/deploy/azureDeployPlugin.ts @@ -6,7 +6,6 @@ import { ResourceService } from "../../services/resourceService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureDeployPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public commands: any; public constructor(serverless: Serverless, options: AzureLoginOptions) { @@ -25,6 +24,24 @@ export class AzureDeployPlugin extends AzureBasePlugin { lifecycleEvents: [ "list" ] + }, + options: { + resourceGroup: { + usage: "Resource group for the service", + shortcut: "g", + }, + stage: { + usage: "Stage of service", + shortcut: "s" + }, + region: { + usage: "Region of service", + shortcut: "r" + }, + subscriptionId: { + usage: "Sets the Azure subscription ID", + shortcut: "i", + }, } }, options: { @@ -32,6 +49,14 @@ export class AzureDeployPlugin extends AzureBasePlugin { usage: "Resource group for the service", shortcut: "g", }, + stage: { + usage: "Stage of service", + shortcut: "s" + }, + region: { + usage: "Region of service", + shortcut: "r" + }, subscriptionId: { usage: "Sets the Azure subscription ID", shortcut: "i", diff --git a/src/plugins/func/azureFuncPlugin.ts b/src/plugins/func/azureFuncPlugin.ts index 599f6fb1..3a7c48c1 100644 --- a/src/plugins/func/azureFuncPlugin.ts +++ b/src/plugins/func/azureFuncPlugin.ts @@ -3,8 +3,6 @@ import { FuncService } from "../../services/funcService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureFuncPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; - public commands: any; private service: FuncService; public constructor(serverless: Serverless, options: Serverless.Options) { diff --git a/src/plugins/invoke/azureInvokePlugin.ts b/src/plugins/invoke/azureInvokePlugin.ts index 4c18936a..5aeabfcb 100644 --- a/src/plugins/invoke/azureInvokePlugin.ts +++ b/src/plugins/invoke/azureInvokePlugin.ts @@ -1,14 +1,13 @@ +import fs from "fs"; import { isAbsolute, join } from "path"; import Serverless from "serverless"; import { InvokeService } from "../../services/invokeService"; -import fs from "fs"; -import { ServerlessCommandMap } from "../../models/serverless"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureInvokePlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; - private commands: ServerlessCommandMap; + private invokeService: InvokeService; + public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); const path = this.options["path"]; @@ -31,6 +30,22 @@ export class AzureInvokePlugin extends AzureBasePlugin { usage: "Invoke command", lifecycleEvents: ["invoke"], options: { + resourceGroup: { + usage: "Resource group for the service", + shortcut: "g", + }, + stage: { + usage: "Stage of service", + shortcut: "s" + }, + region: { + usage: "Region of service", + shortcut: "r" + }, + subscriptionId: { + usage: "Sets the Azure subscription ID", + shortcut: "i", + }, function: { usage: "Function to call", shortcut: "f", diff --git a/src/plugins/login/azureLoginPlugin.ts b/src/plugins/login/azureLoginPlugin.ts index 5091624d..e3f96921 100644 --- a/src/plugins/login/azureLoginPlugin.ts +++ b/src/plugins/login/azureLoginPlugin.ts @@ -4,7 +4,6 @@ import { AzureBasePlugin } from "../azureBasePlugin"; import { loginHooks } from "./loginHooks"; export class AzureLoginPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: AzureLoginOptions) { super(serverless, options); diff --git a/src/plugins/logs/azureLogsPlugin.ts b/src/plugins/logs/azureLogsPlugin.ts index 3c4acc8f..464bb1e5 100644 --- a/src/plugins/logs/azureLogsPlugin.ts +++ b/src/plugins/logs/azureLogsPlugin.ts @@ -3,7 +3,6 @@ import AzureProvider from "../../provider/azureProvider"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureLogsPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; private provider: AzureProvider; diff --git a/src/plugins/offline/azureOfflinePlugin.ts b/src/plugins/offline/azureOfflinePlugin.ts index 315de169..699419bb 100644 --- a/src/plugins/offline/azureOfflinePlugin.ts +++ b/src/plugins/offline/azureOfflinePlugin.ts @@ -3,8 +3,6 @@ import { OfflineService } from "../../services/offlineService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureOfflinePlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; - public commands: any; private offlineService: OfflineService; public constructor(serverless: Serverless, options: Serverless.Options) { diff --git a/src/plugins/package/azurePackagePlugin.ts b/src/plugins/package/azurePackagePlugin.ts index 1d3ab579..39a67c3b 100644 --- a/src/plugins/package/azurePackagePlugin.ts +++ b/src/plugins/package/azurePackagePlugin.ts @@ -8,7 +8,6 @@ export class AzurePackagePlugin extends AzureBasePlugin { private bindingsCreated: boolean = false; private packageService: PackageService; public provider: AzureProvider; - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); diff --git a/src/plugins/remove/azureRemovePlugin.ts b/src/plugins/remove/azureRemovePlugin.ts index e4fe885b..f9da971f 100644 --- a/src/plugins/remove/azureRemovePlugin.ts +++ b/src/plugins/remove/azureRemovePlugin.ts @@ -3,10 +3,37 @@ import { ResourceService } from "../../services/resourceService"; import { AzureBasePlugin } from "../azureBasePlugin"; export class AzureRemovePlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); + + this.commands = { + remove: { + usage: "Remove service resource group (USE WITH CAUTION)", + lifecycleEvents: [ + "remove" + ], + options: { + resourceGroup: { + usage: "Resource group for the service", + shortcut: "g", + }, + stage: { + usage: "Stage of service", + shortcut: "s" + }, + region: { + usage: "Region of service", + shortcut: "r" + }, + subscriptionId: { + usage: "Sets the Azure subscription ID", + shortcut: "i", + }, + } + } + } + this.hooks = { "remove:remove": this.remove.bind(this) }; diff --git a/src/plugins/rollback/azureRollbackPlugin.ts b/src/plugins/rollback/azureRollbackPlugin.ts index 438d77b5..a6e22f96 100644 --- a/src/plugins/rollback/azureRollbackPlugin.ts +++ b/src/plugins/rollback/azureRollbackPlugin.ts @@ -6,10 +6,41 @@ import { AzureBasePlugin } from "../azureBasePlugin"; * Plugin for rolling back Function App Service to previous deployment */ export class AzureRollbackPlugin extends AzureBasePlugin { - public hooks: { [eventName: string]: Promise }; public constructor(serverless: Serverless, options: Serverless.Options) { super(serverless, options); + + this.commands = { + rollback: { + usage: "Rollback command", + lifecycleEvents: [ + "rollback" + ], + options: { + timestamp: { + usage: "Timestamp of previous deployment", + shortcut: "t", + }, + resourceGroup: { + usage: "Resource group for the service", + shortcut: "g", + }, + stage: { + usage: "Stage of service", + shortcut: "s" + }, + region: { + usage: "Region of service", + shortcut: "r" + }, + subscriptionId: { + usage: "Sets the Azure subscription ID", + shortcut: "i", + }, + } + } + } + this.hooks = { "rollback:rollback": this.rollback.bind(this) };