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:
|
- promptResponse:
|
||||||
firstSimple:
|
firstSimple:
|
||||||
variants:
|
variants:
|
||||||
- speech: Seems like you want to create a repository. What name would you
|
- speech: Alright let us create a repository!
|
||||||
like to use?
|
|
||||||
slots:
|
slots:
|
||||||
- commitBehavior:
|
- commitBehavior:
|
||||||
writeSessionParam: project_name_slot
|
writeSessionParam: project_name_slot
|
||||||
name: 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
|
required: true
|
||||||
type:
|
type:
|
||||||
name: project_name
|
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 {conversation} = require('@assistant/conversation');
|
||||||
const functions = require('firebase-functions');
|
const functions = require('firebase-functions');
|
||||||
|
const { Octokit } = require("@octokit/core");
|
||||||
|
|
||||||
const app = conversation({debug: true});
|
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) => {
|
app.handle('start_scene_initial_prompt', (conv) => {
|
||||||
console.log('Start scene: initial prompt');
|
console.log('Start scene: initial prompt');
|
||||||
conv.overwrite = false;
|
conv.overwrite = false;
|
||||||
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
|
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) => {
|
app.handle('create_github_repository', (conv) => {
|
||||||
console.log('Start scene: create_github_repository');
|
return createFromTemplate(conv.scene.slots.project_name_slot.value, conv.scene.slots.project_type_slot.value).then(response =>{
|
||||||
conv.overwrite = false;
|
console.log('Start scene: create_github_repository');
|
||||||
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
|
conv.overwrite = false;
|
||||||
conv.add('Hello world from ' + conv.scene.slots.project_name_slot.value);
|
conv.scene.next.name = 'actions.scene.END_CONVERSATION';
|
||||||
console.log(conv.scene.slots.project_name_slot.value);
|
|
||||||
|
// 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);
|
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user