wing-ops/.claude/tmp-approve-merge.mjs
leedano 9e51651fc7 Merge remote-tracking branch 'origin/develop' into feature/design-system-refactoring
# Conflicts:
#	docs/RELEASE-NOTES.md
#	frontend/src/common/components/map/MapView.tsx
#	frontend/src/tabs/incidents/components/DischargeZonePanel.tsx
#	frontend/src/tabs/incidents/components/IncidentsView.tsx
2026-04-07 18:02:57 +09:00

53 lines
1.6 KiB
JavaScript

import https from 'https';
const prNumber = 161;
const giteaToken = process.env.GITEA_TOKEN;
const botToken = process.env.CLAUDE_BOT_TOKEN;
function req(method, path, token, body) {
return new Promise((resolve, reject) => {
const data = body ? JSON.stringify(body) : '';
const r = https.request({
hostname: 'gitea.gc-si.dev',
path,
method,
headers: {
'Authorization': `token ${token}`,
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(data),
},
}, (res) => {
let buf = '';
res.on('data', (c) => buf += c);
res.on('end', () => resolve({ status: res.statusCode, body: buf }));
});
r.on('error', reject);
if (data) r.write(data);
r.end();
});
}
(async () => {
if (!botToken) {
console.log('NO_BOT_TOKEN: skipping approval/merge');
process.exit(0);
}
// 1. approve
const ap = await req('POST', `/api/v1/repos/gc/wing-ops/pulls/${prNumber}/reviews`, botToken, {
event: 'APPROVED',
body: 'MR 승인 (via /mr skill)',
});
console.log(`APPROVE_STATUS=${ap.status}`);
if (ap.status >= 300) { console.error(ap.body); process.exit(1); }
// 2. merge
const mg = await req('POST', `/api/v1/repos/gc/wing-ops/pulls/${prNumber}/merge`, giteaToken, {
Do: 'merge',
merge_message_field: 'feat(design): 디자인 시스템 토큰 적용 및 Float 카탈로그 추가',
delete_branch_after_merge: true,
});
console.log(`MERGE_STATUS=${mg.status}`);
if (mg.status >= 300) { console.error(mg.body); process.exit(1); }
console.log('MERGE_DONE');
})();