UNPKG

sb-mig

Version:

CLI to rule the world. (and handle stuff related to Storyblok CMS)

63 lines (62 loc) 2.55 kB
import { managementApi } from "../../api/managementApi.js"; import { getFilesContentWithRequire } from "../../utils/files.js"; import Logger from "../../utils/logger.js"; import { apiConfig } from "../api-config.js"; import { askForConfirmation } from "../helpers.js"; import { isItFactory, getFrom, getTo } from "../utils/cli-utils.js"; import { discoverStories, LOOKUP_TYPE, SCOPE } from "../utils/discover.js"; const REVERT_COMMANDS = { content: "content", }; export const revert = async (props) => { const { input, flags } = props; const command = input[1]; const rules = { empty: [], }; const isIt = isItFactory(flags, rules, [ "to", "from", "pageId", "yes", ]); switch (command) { case REVERT_COMMANDS.content: if (isIt("empty")) { Logger.log(`Revert content migration with command: ${command}`); const from = getFrom(flags, apiConfig); const to = getTo(flags, apiConfig); await askForConfirmation("Are you sure you want to revert migration of content (stories) in your space ? (it will overwrite stories)", async () => { Logger.warning("Preparing to migrate..."); await managementApi.stories.backupStories({ filename: `${to}--backup-before-revert`, suffix: ".sb.stories", spaceId: to, }, apiConfig); const allLocalStories = discoverStories({ scope: SCOPE.local, type: LOOKUP_TYPE.fileName, fileNames: [from], }); const stories = getFilesContentWithRequire({ files: allLocalStories, }); await managementApi.stories.updateStories({ stories, spaceId: to, options: { publish: false }, }, apiConfig); }, () => { Logger.warning("Migration not started, exiting the program..."); }, flags["yes"]); } else { Logger.error("Wrong combination of flags. check help for more info."); console.log("Passed flags: "); console.log(flags); } break; default: console.log(`no command like that: ${command}`); } };