// Archive配下の全ページにhidden=trueを設定する使い捨てスクリプト。 const fs = require("fs"); const path = require("path"); const envPath = path.join(__dirname, "..", ".env"); for (const line of fs.readFileSync(envPath, "utf8").split("\n")) { const m = line.match(/^([A-Z_]+)=(.*)$/); if (m) process.env[m[1]] = m[2].replace(/^"|"$/g, ""); } const XWIKI_BASE_URL = process.env.XWIKI_BASE_URL; const AUTH = "Basic " + Buffer.from(`${process.env.XWIKI_ADMIN_USER}:${process.env.XWIKI_ADMIN_PASSWORD}`).toString("base64"); const WIKI_ID = "nexthd"; const pages = [ "Archive.FIT■FIT-PHP.WebHome", "Archive.FIT■FIT-PHP.アーキトレンド.FCコンシェルジュ登録", "Archive.FIT■FIT-PHP.アーキトレンド.WebHome", "Archive.FIT■FIT-PHP.アーキトレンド.アーキトレンド", "Archive.FIT■FIT-PHP.アーキトレンド.アーキトレンドマスタ更新", "Archive.FIT■デザインセンター.WebHome", "Archive.FIT■デザインセンター.デザインセンター", "Archive.ネクスト■ウェルホーム八王子.WebHome", "Archive.ネクスト■ウェルホーム八王子.ウェルホーム八王子", "Archive.ネクスト■ウェルホーム八王子.テスト", "Archive.ネクスト■ウェルホーム横浜.WebHome", "Archive.ネクスト■ウェルホーム横浜.ウェルホーム横浜", "Archive.ネクスト■ウェルホーム立川.WebHome", "Archive.ネクスト■ウェルホーム立川.WELLHOMES立川", "Archive.ネクスト■ネクストハウス厚木.WebHome", "Archive.ネクスト■ネクストハウス厚木.ネクストハウス厚木", "Archive.ネクスト■ネクストハウス相模原.WebHome", "Archive.ネクスト■ネクストハウス相模原.ネクストハウス相模原", "Archive.ネクスト■ネクストハウス立川.WebHome", "Archive.ネクスト■ネクストハウス立川.モデルハウス名", "Archive.ネクスト■東京特販課.東京特販課", "Archive.ネクスト■東京特販課.WebHome", "Archive.ネクストイノベーション株式会社.WebHome", "Archive.ネクストイノベーション株式会社.東京住宅営業部", "Archive.ネクストイノベーション株式会社.不動産事業部.WebHome", "Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).WebHome", "Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).イオンハウジング相模原", "Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).東京不動産(センチュリー21)", "Archive.ネクストイノベーション株式会社.住宅営業部.WebHome", "Archive.ネクストイノベーション株式会社.住宅営業部.WELLHOMESブランド_西東京_.WebHome", "Archive.ネクストイノベーション株式会社.住宅営業部.WELLHOMESブランド_西東京_.業務フロー(WELLHOMES[西東京])", "Archive.愛知■アクティエ大府第1.WebHome", "Archive.愛知■アクティエ大府第1.actie大府第一", "Archive.業務改善プロジェクトページ.WebHome", "Archive.業務改善プロジェクトページ.野木試作中.2021年6月14日 議事録", "Archive.業務改善プロジェクトページ.野木試作中.WebHome", "Archive.業務改善プロジェクトページ.野木試作中.テスト", "Archive.業務改善プロジェクトページ.野木試作中.nexthouse厚木", ]; function fullNameToUrlPath(fullName) { const parts = fullName.split("."); const pageName = parts.pop(); const spacesPart = parts.map((s) => `spaces/${encodeURIComponent(s)}`).join("/"); return `/rest/wikis/${WIKI_ID}/${spacesPart}/pages/${encodeURIComponent(pageName)}`; } function escapeXml(s) { return s.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); } async function main() { let ok = 0; let fail = 0; for (const fullName of pages) { const urlPath = fullNameToUrlPath(fullName); const getRes = await fetch(`${XWIKI_BASE_URL}${urlPath}`, { headers: { Authorization: AUTH, Accept: "application/json" }, }); if (!getRes.ok) { console.warn(` ! GET失敗(${getRes.status}): ${fullName}`); fail++; continue; } const data = await getRes.json(); if (data.hidden === true) { console.log(` - 既にhidden: ${fullName}`); ok++; continue; } const xml = ` ${escapeXml(data.title)} ${escapeXml(data.syntax)} true ${escapeXml(data.content)} `; const putRes = await fetch(`${XWIKI_BASE_URL}${urlPath}`, { method: "PUT", headers: { Authorization: AUTH, "Content-Type": "application/xml; charset=UTF-8" }, body: xml, }); if (putRes.status === 200 || putRes.status === 202 || putRes.status === 201) { console.log(` - hidden設定: ${fullName} (${putRes.status})`); ok++; } else { console.warn(` ! PUT失敗(${putRes.status}): ${fullName}`); fail++; } } console.log(`完了: ${ok}件成功, ${fail}件失敗`); } main().catch((e) => { console.error(e); process.exit(1); });