First version that creates repositories

This commit is contained in:
Julien Lengrand-Lambert
2020-07-31 13:52:47 +02:00
parent 8e434cf6e9
commit f51228ed6a
5 changed files with 98 additions and 54 deletions

View File

@@ -8,12 +8,33 @@ onEnter:
- promptResponse:
firstSimple:
variants:
- speech: Seems like you want to create a repository. What name would you
like to use?
- speech: Alright let us create a repository!
slots:
- commitBehavior:
writeSessionParam: project_name_slot
name: project_name_slot
promptSettings:
initialPrompt:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: What name would you like to use for your repo?
required: true
type:
name: project_name
- commitBehavior:
writeSessionParam: project_type_slot
name: project_type_slot
promptSettings:
initialPrompt:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Would you like a Java or Typescript project?
required: true
type:
name: project_type

View File

@@ -1 +0,0 @@
{}

View File

@@ -0,0 +1,9 @@
synonym:
entities:
java:
synonyms:
- java
typescript:
synonyms:
- typescript
matchType: FUZZY_MATCH

View File

@@ -1,45 +0,0 @@
const { request } = require("@octokit/request");
const { Octokit } = require("@octokit/core");
const octokit = new Octokit({ auth: `test` });
const sanitize = function(repoName){
return repoName.split(' ').join('_');
}
const createJavaRepoFromTemplate = createRepoFromTemplate(sanitizedRepoName, "Spring-Boot-Framework", "Spring-Boot-Application-Template");
const createTypescriptRepoFromTemplate = createRepoFromTemplate(sanitizedRepoName, "carsonfarmer", "ts-template");
const createRepoFromTemplate = async function(sanitizedRepoName, templateOwner, templateRepo){
const response = await octokit.request("POST /repos/:template_owner/:template_repo/generate", {
template_owner: templateOwner,
template_repo: templateRepo,
name: sanitizedRepoName,
mediaType: {
previews: ["baptiste-preview"],
},
});
console.log(`${response.data.length} repos found.`);
console.log(`${response.data[0]}`);
}
const listRepos = async function(){
const response = await octokit.request("GET /users/:username/repos", {
username: "jlengrand",
mediaType: {
previews: ["baptiste"],
},
});
console.log(`${response.data.length} repos found.`);
console.log(`${response.data[0]}`);
}
const createFromTemplate = async function(repoName){
const response = await createJavaRepoFromTemplate(sanitize(repoName));
console.log(`${response}`);
}
// start();
createFromTemplate("a test repo");

View File

@@ -1,21 +1,81 @@
const {conversation} = require('@assistant/conversation');
const functions = require('firebase-functions');
const { Octokit } = require("@octokit/core");
const app = conversation({debug: true});
const octokit = new Octokit({ auth: `test` });
function sanitize(repoName){
return repoName.split(' ').join('_');
}
async function createRepoFromTemplate(sanitizedRepoName, templateOwner, templateRepo){
const res = await octokit.request("POST /repos/:template_owner/:template_repo/generate", {
template_owner: templateOwner,
template_repo: templateRepo,
name: sanitizedRepoName,
mediaType: {
previews: ["baptiste-preview"],
},
});
console.log('res2');
console.log(res);
}
async function listRepos(){
const response = await octokit.request("GET /users/:username/repos", {
username: "jlengrand",
mediaType: {
previews: ["baptiste"],
},
});
return response;
}
async function createFromTemplate(repoName, repoType){
let response;
if (repoType === 'java' ){
response = await createRepoFromTemplate(sanitize(repoName), "Spring-Boot-Framework", "Spring-Boot-Application-Template");
}
else if (repoType === 'typescript') {
response = await createRepoFromTemplate(sanitize(repoName), "carsonfarmer", "ts-template");
}
return response;
}
app.handle('start_scene_initial_prompt', (conv) => {
console.log('Start scene: initial prompt');
conv.overwrite = false;
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
conv.add('Hello world from fulfillment');
conv.add('triggered start_scene_initial_prompt');
});
app.handle('create_github_repository', (conv) => {
console.log('Start scene: create_github_repository');
conv.overwrite = false;
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
conv.add('Hello world from ' + conv.scene.slots.project_name_slot.value);
console.log(conv.scene.slots.project_name_slot.value);
return createFromTemplate(conv.scene.slots.project_name_slot.value, conv.scene.slots.project_type_slot.value).then(response =>{
console.log('Start scene: create_github_repository');
conv.overwrite = false;
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
// conv.add('Alright, creating a ' + conv.scene.slots.project_type_slot.value + ' repository with name ' + sanitize(conv.scene.slots.project_name_slot.value));
conv.add('Repository is created!');
console.log(response);
}).catch(error => {
console.log('Start scene: create_github_repository');
conv.overwrite = false;
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
// conv.add('Alright, creating a ' + conv.scene.slots.project_type_slot.value + ' repository with name ' + sanitize(conv.scene.slots.project_name_slot.value));
conv.add('Error while creating your repository, sorry. Maybe try again?');
console.log('error');
console.log(error);
})
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);