66 lines
2.9 KiB
JavaScript
66 lines
2.9 KiB
JavaScript
// site-335411向け全体反映(updatesite)スクリプト。
|
||
// configs/site-335411_.../ 配下の現在のファイル一式(scripts/styles/serverscripts/processes.json)を
|
||
// サーバーの現状(SiteSettings)にマージし、Mode:"full"(updatesite)でそのまま送信する。
|
||
// 部分更新(updatesitesettings)はScripts/ServerScripts/Processesへの配列要素追加が反映されない事象が
|
||
// 繰り返し発生したため、以後このサイトでは常に全体反映を使う。
|
||
// 実行方法: プロジェクトルートで `node send-full-335411.js` を実行してください。
|
||
const fs = require("fs");
|
||
const path = require("path");
|
||
|
||
async function main() {
|
||
const baseDir = __dirname;
|
||
const config = JSON.parse(fs.readFileSync(path.join(baseDir, "config.json"), "utf8"));
|
||
const siteId = 335411;
|
||
const siteDir = path.join(baseDir, "configs", "site-335411_②問い合わせ内容管理 Ver0.3");
|
||
|
||
const latest = JSON.parse(
|
||
fs.readFileSync(path.join(baseDir, "siteSettingJsons", `site-${siteId}_latest.json`), "utf8")
|
||
);
|
||
const d = latest.Response.Data;
|
||
const manifest = JSON.parse(fs.readFileSync(path.join(siteDir, "manifest.json"), "utf8"));
|
||
|
||
const siteSettings = JSON.parse(JSON.stringify(d.SiteSettings));
|
||
|
||
// Scripts/Styles/ServerScriptsは、manifest.jsonのFile指定に従いローカルの本文で丸ごと置き換える
|
||
function rebuildList(manifestEntries, dir) {
|
||
return (manifestEntries || []).map((entry) => {
|
||
const { File, ...meta } = entry;
|
||
const body = fs.readFileSync(path.join(siteDir, dir, File), "utf-8");
|
||
return { ...meta, Body: body };
|
||
});
|
||
}
|
||
siteSettings.Scripts = rebuildList(manifest.Scripts, "scripts");
|
||
siteSettings.Styles = rebuildList(manifest.Styles, "styles");
|
||
siteSettings.ServerScripts = rebuildList(manifest.ServerScripts, "serverscripts");
|
||
|
||
const processesPath = path.join(siteDir, manifest.ProcessesFile || "processes.json");
|
||
siteSettings.Processes = fs.existsSync(processesPath) ? JSON.parse(fs.readFileSync(processesPath, "utf8")) : [];
|
||
|
||
const body = {
|
||
ApiVersion: config.ApiVersion || "1.1",
|
||
ApiKey: config.ApiKey,
|
||
TenantId: d.TenantId,
|
||
SiteId: d.SiteId,
|
||
Title: d.Title,
|
||
ReferenceType: d.ReferenceType,
|
||
ParentId: d.ParentId,
|
||
InheritPermission: d.InheritPermission,
|
||
SiteSettings: siteSettings,
|
||
};
|
||
|
||
const url = `https://neo999.next-hd.net/pleasanter/api/items/${siteId}/updatesite`;
|
||
console.log("送信先:", url);
|
||
console.log("Scripts:", siteSettings.Scripts.length, "Styles:", siteSettings.Styles.length,
|
||
"ServerScripts:", siteSettings.ServerScripts.length, "Processes:", siteSettings.Processes.length);
|
||
|
||
const res = await fetch(url, {
|
||
method: "POST",
|
||
headers: { "Content-Type": "application/json" },
|
||
body: JSON.stringify(body),
|
||
});
|
||
console.log("HTTPステータス:", res.status);
|
||
console.log(await res.text());
|
||
}
|
||
|
||
main();
|