UNPKG

@paroicms/connector

Version:

An API to help build management tools for ParoiCMS instances

42 lines 1.98 kB
import { ensureDirectory, makeSecret } from "@paroicms/internal-server-lib"; import { format } from "date-fns"; import { join, normalize } from "node:path"; import { copySiteSchema, copyThemeFiles, copyTranslateFiles, makeContentDirectories, makeDefaultConfigJsonFile, makePackageJsonFile, } from "../single-site-builder/site-builder.js"; import { createZipArchive } from "./archiver.helper.js"; export async function buildSiteBackup(siteContext, { backupTempDir, archiveBaseName, serverVersion, }) { const { siteDir, dataDir, logger } = siteContext; const themeDir = join(siteDir, "theme"); try { await copyThemeFiles(themeDir, backupTempDir); await makeContentDirectories(backupTempDir, { copyFilesFromDataDir: dataDir }); await makePackageJsonFile(backupTempDir, siteDir, { serverPackageVersions: `~${serverVersion}`, }); await makeDefaultConfigJsonFile(backupTempDir, { devAccount: true }); await copySiteSchema(siteDir, backupTempDir); await copyTranslateFiles(siteDir, backupTempDir); const tempArchiveDir = normalize(`${backupTempDir}/../`); const { archivePath, archiveWeight, completeArchiveName } = await createZipArchive({ sourceDir: backupTempDir, destDir: tempArchiveDir, filename: archiveBaseName, logger, }); return { zipFilePath: archivePath, zipFileWeight: archiveWeight, zipFileName: completeArchiveName, }; } catch (error) { throw new Error(`[backup]: failed to build backup file: ${error}`); } } export async function makeBackupTempDir(siteFqdn, tmpDir) { const randomKey = makeSecret(3); const dirName = `${format(new Date(), "yyyyMMdd-HHmm")}-${siteFqdn}-${randomKey}`; const dirPath = join(tmpDir, dirName); await ensureDirectory(dirPath); return { dirName, dirPath }; } //# sourceMappingURL=backup-tasks.js.map