44 */
55
66import * as nls from 'vscode-nls'
7+ import * as _ from 'lodash'
8+
79const localize = nls . loadMessageBundle ( )
810
911import * as path from 'path'
@@ -16,11 +18,11 @@ import { getRegionsForActiveCredentials } from '../../shared/regions/regionUtili
1618import { createHelpButton } from '../../shared/ui/buttons'
1719import * as input from '../../shared/ui/input'
1820import * as picker from '../../shared/ui/picker'
19- import { difference , filter , toArrayAsync } from '../../shared/utilities/collectionUtils'
21+ import { difference , filter } from '../../shared/utilities/collectionUtils'
2022import { MultiStepWizard , WizardStep } from '../../shared/wizards/multiStepWizard'
2123import { configureParameterOverrides } from '../config/configureParameterOverrides'
22- import { detectLocalTemplates } from '../local/detectLocalTemplates'
2324import { getOverriddenParameters , getParameters } from '../utilities/parameterUtils'
25+ import { CloudFormationTemplateRegistry } from '../../shared/cloudformation/templateRegistry'
2426
2527export interface SamDeployWizardResponse {
2628 parameterOverrides : Map < string , string >
@@ -36,7 +38,7 @@ export const enum ParameterPromptResult {
3638}
3739
3840export interface SamDeployWizardContext {
39- readonly onDetectLocalTemplates : typeof detectLocalTemplates
41+ readonly templateUris : vscode . Uri [ ]
4042
4143 readonly workspaceFolders : vscode . Uri [ ] | undefined
4244
@@ -120,12 +122,15 @@ function getSingleResponse(responses: vscode.QuickPickItem[] | undefined): strin
120122}
121123
122124export class DefaultSamDeployWizardContext implements SamDeployWizardContext {
123- public readonly onDetectLocalTemplates = detectLocalTemplates
125+ public readonly templateUris : vscode . Uri [ ]
124126 public readonly getParameters = getParameters
125127 public readonly getOverriddenParameters = getOverriddenParameters
126128 private readonly helpButton = createHelpButton ( localize ( 'AWS.command.help' , 'View Toolkit Documentation' ) )
127129
128- public constructor ( private readonly regionProvider : RegionProvider , private readonly awsContext : AwsContext ) { }
130+ public constructor ( private readonly regionProvider : RegionProvider , private readonly awsContext : AwsContext ) {
131+ const cfnRegistry = CloudFormationTemplateRegistry . getRegistry ( )
132+ this . templateUris = cfnRegistry . registeredTemplates . map ( o => vscode . Uri . file ( o . path ) )
133+ }
129134
130135 public get workspaceFolders ( ) : vscode . Uri [ ] | undefined {
131136 return ( vscode . workspace . workspaceFolders || [ ] ) . map ( f => f . uri )
@@ -148,7 +153,7 @@ export class DefaultSamDeployWizardContext implements SamDeployWizardContext {
148153 ) ,
149154 } ,
150155 buttons : [ this . helpButton , vscode . QuickInputButtons . Back ] ,
151- items : await getTemplateChoices ( this . onDetectLocalTemplates , ...workspaceFolders ) ,
156+ items : await getTemplateChoices ( this . templateUris , ...workspaceFolders ) ,
152157 } )
153158
154159 const choices = await picker . promptUser ( {
@@ -626,15 +631,13 @@ function validateStackName(value: string): string | undefined {
626631}
627632
628633async function getTemplateChoices (
629- onDetectLocalTemplates : typeof detectLocalTemplates = detectLocalTemplates ,
634+ templateUris : vscode . Uri [ ] ,
630635 ...workspaceFolders : vscode . Uri [ ]
631636) : Promise < SamTemplateQuickPickItem [ ] > {
632- const uris = await toArrayAsync ( onDetectLocalTemplates ( { workspaceUris : workspaceFolders } ) )
633-
634637 const uriToLabel : Map < vscode . Uri , string > = new Map < vscode . Uri , string > ( )
635638 const labelCounts : Map < string , number > = new Map ( )
636639
637- uris . forEach ( uri => {
640+ templateUris . forEach ( uri => {
638641 const label = SamTemplateQuickPickItem . getLabel ( uri )
639642 uriToLabel . set ( uri , label )
640643 labelCounts . set ( label , 1 + ( labelCounts . get ( label ) || 0 ) )
0 commit comments