@@ -8,7 +8,7 @@ var fs = require('fs');
8
8
var path = require ( 'path' ) ;
9
9
var languages = require ( './languages.js' ) ;
10
10
var languagesJSON = require ( './languages.json' ) ;
11
- // var Regex = require("regex" );
11
+ var eventTypesJson = require ( './eventTypes.json' ) ;
12
12
13
13
// Setting up constants for the menu items
14
14
const ALL_TEMPLATES = 'List all templates' ,
@@ -117,15 +117,15 @@ module.exports = yeoman.Base.extend({
117
117
118
118
var prompts = [ {
119
119
type : 'rawlist' ,
120
- name : 'languageChoose ' ,
120
+ name : 'languageChose ' ,
121
121
message : 'Select an option...' ,
122
122
choices : listOfLanguages ,
123
123
default : listOfLanguages [ 0 ]
124
124
} ] ;
125
125
126
126
return this . prompt ( prompts ) . then ( answer => {
127
127
this . answer = answer ;
128
- this . _showRelevantTemplates ( this . answer . languageChoose )
128
+ this . _showLanguageRelevantTemplates ( this . answer . languageChose )
129
129
} ) ;
130
130
}
131
131
@@ -136,26 +136,30 @@ module.exports = yeoman.Base.extend({
136
136
//------------------------------
137
137
if ( this . answer . requestFunctionTemplates == TEMPLATES_BY_EVENT_TYPE ) {
138
138
this . log ( 'Feature coming soon, just wait on it!' ) ;
139
- }
140
- } ,
141
-
142
- _showRelevantTemplates : function ( languageName ) {
143
- // Setup the correlation with the language chosen to the template name
144
- var languageTemplateIdentifier = "" ;
145
- if ( languageName === "JavaScript" )
146
- languageTemplateIdentifier = "NodeJS" ;
147
139
148
- if ( languageName === "C#" )
149
- languageTemplateIdentifier = "CSharp" ;
140
+ let listOfEventTypes = [ ] ;
141
+ for ( let key in eventTypesJson ) {
142
+ listOfEventTypes . push ( key ) ;
143
+ }
150
144
151
- if ( languageName === "Python" )
152
- languageTemplateIdentifier = "Python" ;
145
+ var prompts = [ {
146
+ type : 'rawlist' ,
147
+ name : 'eventChoose' ,
148
+ message : 'Select an option...' ,
149
+ choices : listOfEventTypes ,
150
+ default : listOfEventTypes [ 0 ]
151
+ } ] ;
153
152
154
- if ( languageName === "PowerShell" )
155
- languageTemplateIdentifier = "Powershell" ;
153
+ return this . prompt ( prompts ) . then ( answer => {
154
+ this . answer = answer ;
155
+ this . _showEventRelevantTemplates ( this . answer . eventChoose )
156
+ } ) ;
157
+ }
158
+ } ,
156
159
157
- if ( languageName === "Batch" )
158
- languageTemplateIdentifier = "Batch" ;
160
+ _showLanguageRelevantTemplates : function ( languageName ) {
161
+ // Setup the correlation with the language chosen to the template name
162
+ var languageTemplateIdentifier = languages . resolveLanguageIdentifier ( languageName ) ;
159
163
160
164
var options = {
161
165
uri : 'https://api.github.com/repos/Azure/azure-webjobs-sdk-templates/contents/Templates' ,
@@ -165,11 +169,11 @@ module.exports = yeoman.Base.extend({
165
169
json : true
166
170
} ;
167
171
172
+ var listOfTemplates = [ ] ;
173
+ var listOfUrls = { } ;
174
+
168
175
requestPromise ( options )
169
176
. then ( templates => {
170
- var listOfTemplates = [ ] ;
171
- var listOfUrls = { } ;
172
-
173
177
for ( let i = 0 ; i < templates . length ; i ++ ) {
174
178
let templateName = templates [ i ] [ 'name' ] ;
175
179
if ( templateName . indexOf ( languageTemplateIdentifier ) >= 0 ) {
@@ -184,12 +188,30 @@ module.exports = yeoman.Base.extend({
184
188
message : 'Select from one of the available templates...' ,
185
189
choices : listOfTemplates ,
186
190
default : 0
191
+ } , {
192
+ type : 'input' ,
193
+ name : 'functionName' ,
194
+ message : 'Enter a name for your function...' ,
195
+ default : 'MyAzureFunction'
187
196
} ] ;
188
197
189
198
return this . prompt ( prompts ) . then ( answer => {
190
199
this . answer = answer ;
191
200
} ) ;
192
- } ) ;
201
+ } )
202
+ . then ( ( ) => {
203
+ this . log ( "downloadTemplate options:" ) ;
204
+ this . log ( this . answer . templateToUse , listOfUrls , this . answer . functionName , languageName ) ;
205
+ this . _downloadTemplate ( this . answer . templateToUse , listOfUrls , this . answer . functionName , languageName ) ;
206
+ } )
207
+ . catch ( err => {
208
+ this . log ( 'There was an error in searching for available templates...' ) ;
209
+ this . log ( err ) ;
210
+ } ) ; ;
211
+ } ,
212
+
213
+ _showEventRelevantTemplates : function ( eventName ) {
214
+
193
215
} ,
194
216
195
217
_downloadTemplate : function ( templateToUse , listOfUrls , functionName , language = "" ) {
@@ -233,7 +255,6 @@ module.exports = yeoman.Base.extend({
233
255
languageOfTemplate = languages . resolveLanguage ( path . resolve ( pathToSaveFunction , "metadata.json" ) ) ;
234
256
if ( languageToUse === "" ) {
235
257
languageToUse = languageOfTemplate ;
236
- this . log ( 'languageToUse: ' + languageToUse ) ;
237
258
238
259
for ( let j = 0 ; j < files . length ; j ++ ) {
239
260
var fileName = files [ j ] [ 'name' ] ;
@@ -272,9 +293,6 @@ module.exports = yeoman.Base.extend({
272
293
this . log ( err ) ;
273
294
} )
274
295
. pipe ( fs . createWriteStream ( path . resolve ( pathToSaveFunction , fileName ) ) ) ;
275
-
276
- this . log ( 'Downloading file ' + fileName + ' to:' ) ;
277
- this . log ( path . resolve ( pathToSaveFunction , fileName ) ) ;
278
296
}
279
297
}
280
298
0 commit comments