개발/Git, GitHub
깃허브 - RESTful API로 파일 이름 변경하기 (Renaming files)
피로물든딸기
2023. 10. 16. 19:25
반응형
깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기)

참고
이름을 변경하는 API는 지원하지 않는 것으로 보인다.
따라서 파일을 읽어서(GET) 다른 이름으로 그대로 쓰고(PUT), 원본 파일을 지운다(DELETE).
전체 코드는 다음과 같다.
(auto-test 저장소의 test/apitest.txt 파일을 test/apitest_new.txt로 변경)
let myKey = "...";
const { Octokit } = require("@octokit/rest");
const octokit = new Octokit({
auth: myKey,
});
async function renameFile() {
const owner = "bloodstrawberry";
const repo = "auto-test";
const oldPath = "test/apitest.txt";
const newPath = "test/apitest_new.txt";
const result = await octokit.request(
`GET /repos/${owner}/${repo}/contents/${oldPath}`,
{
owner,
repo,
path: oldPath,
}
);
console.log(result);
if(result.status !== 200) {
console.log("File Read Error!");
return;
}
const file = result.data;
const renameResult = await octokit.request(
`PUT /repos/${owner}/${repo}/contents/${newPath}`,
{
owner,
repo,
path: newPath,
content: file.content,
message: "Rename file",
sha: file.sha,
headers: {
"X-GitHub-Api-Version": "2022-11-28",
},
}
);
console.log(renameResult);
if(renameResult.status !== 201) { // 200인 경우는 이미 존재하는 파일을 덮어씌움.
console.log("File Create Error!");
return;
}
const deleteResult = await octokit.request(
`DELETE /repos/${owner}/${repo}/contents/${oldPath}`,
{
owner,
repo,
path: oldPath,
message : "delete!!",
sha: file.sha,
}
);
console.log(deleteResult);
if(deleteResult.status !== 200) {
console.log("File Delete Error!");
return;
}
}
renameFile();

반응형