반응형
깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기)
참고
이름을 변경하는 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();
반응형
'개발 > Git, GitHub' 카테고리의 다른 글
깃허브 액션 - Schedule로 반복 작업하기 (1) | 2024.01.07 |
---|---|
깃허브 액션 - Push 될 때 메일 보내기 (Send Email using GitHub Actions) (0) | 2023.12.16 |
깃허브 - RESTful API로 파일 삭제하기 (Delete GitHub Files with DELETE) (0) | 2023.09.06 |
깃허브 - 메일 알림 설정하기 (Settings for Email Notifications) (0) | 2023.09.02 |
깃허브 - RESTful API로 PR 만들고 병합하기 (Create Pull Request and Merge) (0) | 2023.09.02 |
댓글