fix: project id check

This commit is contained in:
DomWane 2024-09-24 12:11:34 +02:00
parent 116f91f17c
commit 3dd8cd9f5c

View file

@ -6,7 +6,7 @@ export default defineEventHandler(async (event) => {
const body = await readBody<{ project: Project, image?: { type: string, data: string } }>(event) const body = await readBody<{ project: Project, image?: { type: string, data: string } }>(event)
const { appId, privateKey, installationId, baseBranch, owner, repo } = useRuntimeConfig().app.github const { appId, privateKey, installationId, baseBranch, owner, repo } = useRuntimeConfig().app.github
const id = (body.project.id && body.project.id === body.project.name.toLowerCase().replace(/\s+/g, '-')) const id = (body.project.id && body.project.id.toLowerCase() === body.project.name.toLowerCase().replace(/\s+/g, '-'))
? body.project.id ? body.project.id
: body.project.name.toLowerCase().replace(/\s+/g, '-') : body.project.name.toLowerCase().replace(/\s+/g, '-')
@ -131,61 +131,66 @@ export default defineEventHandler(async (event) => {
files: { path: string, content: string, encoding: string }[], files: { path: string, content: string, encoding: string }[],
deletedFiles: string[] = [], deletedFiles: string[] = [],
) { ) {
const { data: latestCommit } = await octokit.rest.repos.getCommit({ try {
owner, const { data: latestCommit } = await octokit.rest.repos.getCommit({
repo,
ref: newBranch,
})
const { data: baseTree } = await octokit.rest.git.getTree({
owner,
repo,
tree_sha: latestCommit.commit.tree.sha,
})
const blobs = await Promise.all(files.map(async (file) => {
const { data: blob } = await octokit.rest.git.createBlob({
owner, owner,
repo, repo,
content: file.content, ref: newBranch,
encoding: file.encoding,
}) })
return {
path: file.path, const { data: baseTree } = await octokit.rest.git.getTree({
owner,
repo,
tree_sha: latestCommit.commit.tree.sha,
})
const blobs = await Promise.all(files.map(async (file) => {
const { data: blob } = await octokit.rest.git.createBlob({
owner,
repo,
content: file.content,
encoding: file.encoding,
})
return {
path: file.path,
mode: '100644' as const,
type: 'blob' as const,
sha: blob.sha,
}
}))
const deletions = deletedFiles.map(filePath => ({
path: filePath,
mode: '100644' as const, mode: '100644' as const,
type: 'blob' as const, type: 'blob' as const,
sha: blob.sha, sha: null,
} }))
}))
const deletions = deletedFiles.map(filePath => ({ const { data: newTree } = await octokit.rest.git.createTree({
path: filePath, owner,
mode: '100644' as const, repo,
type: 'blob' as const, base_tree: baseTree.sha,
sha: null, tree: [...blobs, ...deletions],
})) })
const { data: newTree } = await octokit.rest.git.createTree({ const { data: newCommit } = await octokit.rest.git.createCommit({
owner, owner,
repo, repo,
base_tree: baseTree.sha, message,
tree: [...blobs, ...deletions], tree: newTree.sha,
}) parents: [latestCommit.sha],
})
const { data: newCommit } = await octokit.rest.git.createCommit({ await octokit.rest.git.updateRef({
owner, owner,
repo, repo,
message, ref: `heads/${newBranch}`,
tree: newTree.sha, sha: newCommit.sha,
parents: [latestCommit.sha], })
}) }
catch (error) {
await octokit.rest.git.updateRef({ console.error('Error during commit operation:', error)
owner, }
repo,
ref: `heads/${newBranch}`,
sha: newCommit.sha,
})
} }
async function createPullRequest(owner: string, repo: string, head: string, base: string, title: string, body: string) { async function createPullRequest(owner: string, repo: string, head: string, base: string, title: string, body: string) {
@ -206,7 +211,7 @@ export default defineEventHandler(async (event) => {
console.log(`Branch ${newBranchName} created successfully!`) console.log(`Branch ${newBranchName} created successfully!`)
const deletedFiles = [] const deletedFiles = []
if (body.project.id && body.project.id !== body.project.name.toLowerCase().replace(/\s+/g, '-')) { if (body.project.id && body.project.id.toLowerCase() !== body.project.name.toLowerCase().replace(/\s+/g, '-')) {
const oldId = body.project.id const oldId = body.project.id
const oldFolderPath = `src/projects/${oldId}` const oldFolderPath = `src/projects/${oldId}`
await deleteOldProjectFolder(owner, repo, newBranchName, oldFolderPath) await deleteOldProjectFolder(owner, repo, newBranchName, oldFolderPath)