@paroicms/cli
Version:
CLI of ParoiCMS
55 lines • 2.03 kB
JavaScript
import { readFile, rename, writeFile } from "node:fs/promises";
import { join } from "node:path";
import { pathExists } from "@paroicms/internal-server-lib";
export async function migrateFrom21To30(directory, siteSchema) {
const { version, languages, usePlugins, useModules, site, documentTypes, partTypes, ...rest } = siteSchema;
const leafTypes = [
...(documentTypes?.map(({ leafType, ...t }) => ({
kind: "document",
typeName: leafType,
...t,
})) ?? []),
...(partTypes?.map(({ leafType, ...t }) => ({
kind: "part",
typeName: leafType,
...t,
})) ?? []),
];
if (site) {
leafTypes.unshift({
kind: "site",
...site,
});
}
const newSchema = {
version: "3.0",
languages,
usePlugins,
useModules,
leafTypes,
...rest,
};
await rename(join(directory, "site-schema.json"), join(directory, "site-schema-v2.1.json"));
await writeFile(join(directory, "site-schema.json"), JSON.stringify(newSchema, undefined, 2));
for (const language of siteSchema.languages) {
const l10nFile = join(directory, `site-schema.l10n.${language}.json`);
if (!(await pathExists(l10nFile)))
continue;
const { site, documentTypes, partTypes, ...rest } = JSON.parse(await readFile(l10nFile, "utf-8"));
const leafTypes = {
_site: site,
...(documentTypes ?? {}),
...(partTypes ?? {}),
};
const newContent = Object.keys(leafTypes).length === 0
? rest
: {
leafTypes,
...rest,
};
await rename(l10nFile, join(directory, `site-schema-v2.1.l10n.${language}.json`));
await writeFile(join(directory, `site-schema.l10n.${language}.json`), JSON.stringify(newContent, undefined, 2));
}
return newSchema;
}
//# sourceMappingURL=site-schema-migration-2.1-to-3.0.js.map