/* * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ /** * YAMLファイルをJSONファイルに変換するスクリプト * ビルド前に実行し、ランタイムにjs-yamlを含まないようにする */ import fs from 'node:fs'; import { resolve, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import yaml from 'js-yaml'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const configDir = resolve(_dirname, '../../../.config'); /** * YAMLファイルをJSONファイルに変換 * @param {string} ymlPath - YAMLファイルのパス * @param {string} jsonPath - JSONファイルの出力パス */ function convertYamlToJson(ymlPath, jsonPath) { if (!fs.existsSync(ymlPath)) { console.log(`${ymlPath} が見つからないためスキップします`); return; } const yamlContent = fs.readFileSync(ymlPath, 'utf-8'); const jsonContent = yaml.load(yamlContent); fs.writeFileSync(jsonPath, JSON.stringify(jsonContent, null, 2), 'utf-8'); console.log(`✓ ${ymlPath} → ${jsonPath}`); } // default.yml と test.yml を変換 convertYamlToJson( resolve(configDir, 'default.yml'), resolve(configDir, 'default.json'), ); convertYamlToJson( resolve(configDir, 'test.yml'), resolve(configDir, 'test.json'), ); // MISSKEY_CONFIG_YML 環境変数が指定されている場合も変換 if (process.env.MISSKEY_CONFIG_YML) { const customYmlPath = resolve(configDir, process.env.MISSKEY_CONFIG_YML); const customJsonPath = customYmlPath.replace(/\.ya?ml$/i, '.json'); convertYamlToJson(customYmlPath, customJsonPath); } console.log('設定ファイルの変換が完了しました');