From 01dd0ba750f9b5084f618fe839cf14d485c90e22 Mon Sep 17 00:00:00 2001 From: kakkokari-gtyih Date: Sun, 24 Dec 2023 15:51:31 +0900 Subject: [PATCH] =?UTF-8?q?(gas)=20=E6=9B=B4=E6=96=B0=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=81=8C=E5=87=BA=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __misc/gas/code.gs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/__misc/gas/code.gs b/__misc/gas/code.gs index aa90e131..3b0054be 100644 --- a/__misc/gas/code.gs +++ b/__misc/gas/code.gs @@ -1,6 +1,4 @@ -// プログラムを変更したら都度「デプロイ」を行うこと - -// スクリプト プロパティを取得 +// 変更したら「デプロイ」を行うこと const env = PropertiesService.getScriptProperties().getProperties(); // Misskey @@ -10,7 +8,9 @@ const MI_API_TOKEN = env.MISSKEY_API_TOKEN ?? null; const CF_API_TOKEN = env.CF_API_TOKEN ?? null; const CF_ZONE_ID = env.CF_ZONE_ID ?? null; -// Webhook受信時のハンドラ +// Github 前のコミットSHA +const GH_PREVIOUS_COMMIT_SHA = env.GH_PREVIOUS_COMMIT_SHA ?? null; + function doPost(e) { const params = JSON.parse(e.postData.getDataAsString()); @@ -26,15 +26,29 @@ function doPost(e) { // デプロイされたことをMisskeyに通知する if (MI_API_TOKEN) { - postToMisskey(params); + setTimeout(() => postToMisskey(params), 5000); } + + // 今回のSHAを保存 + PropertiesService.getScriptProperties().setProperty('GH_PREVIOUS_COMMIT_SHA', params.deployment.sha); +} + +function getChangeLog(d) { + if (!GH_PREVIOUS_COMMIT_SHA) return null; + + const res = JSON.parse(UrlFetchApp.fetch(`https://api.github.com/repos/misskey-dev/misskey-hub-next/compare/${GH_PREVIOUS_COMMIT_SHA}...${d.deployment.sha}`).getContentText()); + + return res.commits.map((commit) => `・${commit.commit.message.split('\n')[0]}`).reverse().join('\n'); } function postToMisskey(d) { var data = { i: MI_API_TOKEN, text: `$[tada 📢] **Misskey Hub が更新されました!** -早速チェックしましょう ▶ ${d?.repository?.homepage ?? 'https://misskey-hub.net/'}`, +早速チェックしましょう ▶ ${d?.repository?.homepage ?? 'https://misskey-hub.net/'} + +**【今回の更新点】** +${getChangeLog(d) ?? "取得できませんでした…"}`, visibility: 'public', cw: null, localOnly: false,