Skip to content

Commit 2f54792

Browse files
committed
Making more progress but this commit doesn't fully work
Error with the language download
1 parent d496b02 commit 2f54792

File tree

4 files changed

+99
-27
lines changed

4 files changed

+99
-27
lines changed

generators/app/eventTypes.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"http" : {
3+
"Languages" : ["JavaScript", "C#", "Batch", "Powershell"]
4+
},
5+
6+
"blob" : {
7+
"Languages" : ["JavaScript", "C#", "Batch"]
8+
},
9+
10+
"eventhub" : {
11+
"Languages" : ["JavaScript", "C#", "Python"]
12+
},
13+
14+
"timer" : {
15+
"Languages" : ["JavaScript", "C#", "Powershell"]
16+
},
17+
18+
"queue" : {
19+
"Languages" : ["JavaScript", "C#", "Batch", "Bash", "Python", "Powershell"]
20+
}
21+
}

generators/app/index.js

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ var fs = require('fs');
88
var path = require('path');
99
var languages = require ('./languages.js');
1010
var languagesJSON = require('./languages.json');
11-
// var Regex = require("regex");
11+
var eventTypesJson = require('./eventTypes.json');
1212

1313
// Setting up constants for the menu items
1414
const ALL_TEMPLATES = 'List all templates',
@@ -117,15 +117,15 @@ module.exports = yeoman.Base.extend({
117117

118118
var prompts = [{
119119
type: 'rawlist',
120-
name: 'languageChoose',
120+
name: 'languageChose',
121121
message: 'Select an option...',
122122
choices: listOfLanguages,
123123
default: listOfLanguages[0]
124124
}];
125125

126126
return this.prompt(prompts).then(answer => {
127127
this.answer = answer;
128-
this._showRelevantTemplates(this.answer.languageChoose)
128+
this._showLanguageRelevantTemplates(this.answer.languageChose)
129129
});
130130
}
131131

@@ -136,26 +136,30 @@ module.exports = yeoman.Base.extend({
136136
//------------------------------
137137
if (this.answer.requestFunctionTemplates == TEMPLATES_BY_EVENT_TYPE) {
138138
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";
147139

148-
if (languageName === "C#")
149-
languageTemplateIdentifier = "CSharp";
140+
let listOfEventTypes = [];
141+
for (let key in eventTypesJson) {
142+
listOfEventTypes.push(key);
143+
}
150144

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+
}];
153152

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+
},
156159

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);
159163

160164
var options = {
161165
uri: 'https://api.github.com/repos/Azure/azure-webjobs-sdk-templates/contents/Templates',
@@ -165,11 +169,11 @@ module.exports = yeoman.Base.extend({
165169
json: true
166170
};
167171

172+
var listOfTemplates = [];
173+
var listOfUrls = {};
174+
168175
requestPromise(options)
169176
.then(templates => {
170-
var listOfTemplates = [];
171-
var listOfUrls = {};
172-
173177
for (let i = 0; i < templates.length; i++) {
174178
let templateName = templates[i]['name'];
175179
if (templateName.indexOf(languageTemplateIdentifier) >= 0) {
@@ -184,12 +188,30 @@ module.exports = yeoman.Base.extend({
184188
message: 'Select from one of the available templates...',
185189
choices: listOfTemplates,
186190
default: 0
191+
}, {
192+
type: 'input',
193+
name: 'functionName',
194+
message: 'Enter a name for your function...',
195+
default: 'MyAzureFunction'
187196
}];
188197

189198
return this.prompt(prompts).then(answer => {
190199
this.answer = answer;
191200
});
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+
193215
},
194216

195217
_downloadTemplate: function (templateToUse, listOfUrls, functionName, language = "") {
@@ -233,7 +255,6 @@ module.exports = yeoman.Base.extend({
233255
languageOfTemplate = languages.resolveLanguage(path.resolve(pathToSaveFunction, "metadata.json"));
234256
if (languageToUse === "") {
235257
languageToUse = languageOfTemplate;
236-
this.log('languageToUse: ' + languageToUse);
237258

238259
for (let j = 0; j < files.length; j++) {
239260
var fileName = files[j]['name'];
@@ -272,9 +293,6 @@ module.exports = yeoman.Base.extend({
272293
this.log(err);
273294
})
274295
.pipe(fs.createWriteStream(path.resolve(pathToSaveFunction, fileName)));
275-
276-
this.log('Downloading file ' + fileName + ' to:');
277-
this.log(path.resolve(pathToSaveFunction, fileName));
278296
}
279297
}
280298

generators/app/languages.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,32 @@ this.resolveLanguage = function (jsonFilePath){
77

88
// Return the language
99
return metadataJson['language'];
10+
}
11+
12+
this.resolveLanguageIdentifier = function (language){
13+
let tempIdentifier = "";
14+
15+
// Return the determined Identifier
16+
switch(language) {
17+
case "Javascript":
18+
tempIdentifier = "NodeJS";
19+
break;
20+
case "C#":
21+
tempIdentifier = "CSharp";
22+
break;
23+
case "Python":
24+
tempIdentifier = "Python";
25+
break;
26+
case "PowerShell":
27+
tempIdentifier = "Powershell";
28+
break;
29+
case "Batch":
30+
tempIdentifier = "Batch";
31+
break;
32+
case "Bash":
33+
tempIdentifier = "Bash";
34+
break;
35+
}
36+
37+
return tempIdentifier;
1038
}

generators/app/languages.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,10 @@
2222
"Batch" : {
2323
"fileExtension" : ".bat",
2424
"additionalFiles" : "package.json"
25+
},
26+
27+
"Bash" : {
28+
"fileExtension" : ".sh",
29+
"additionalFiles" : "package.json"
2530
}
2631
}

0 commit comments

Comments
 (0)