mirror of
https://github.com/jlengrand/github-project.git
synced 2026-03-10 08:21:20 +00:00
First version that creates repositories
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
9
sdk/custom/types/project_type.yaml
Normal file
9
sdk/custom/types/project_type.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
synonym:
|
||||
entities:
|
||||
java:
|
||||
synonyms:
|
||||
- java
|
||||
typescript:
|
||||
synonyms:
|
||||
- typescript
|
||||
matchType: FUZZY_MATCH
|
||||
@@ -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");
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user