import path from "path"; import {readFile, writeFile, mkdir, copyFile} from "fs/promises"; import {copy} from "fs-extra"; import {capitalize, getConfigs} from "../../helpers.js"; import {convertToHubspotField, getBlockFields} from "./hubspot-email-adapter.js"; const {modulesPath, projectPath} = getConfigs(); export async function buildHubspotPage(blockName) { const distPath = `./exports/hubspot/${blockName}.module`; await mkdir(distPath, {recursive: true}) await copyFile(`${projectPath}/src/${blockName}.template.hbs`, `${distPath}/module.html`) await copyFile(`${projectPath}/src/styles/${blockName}.min.css`, `${distPath}/module.css`) await copyFile(`${projectPath}/src/scripts/${blockName}.min.js`, `${distPath}/module.js`) await copy( path.join(projectPath, 'src', 'images'), path.join(distPath, 'images'), ); const metaData = { global: false, host_template_types: ["PAGE"], label: capitalize(blockName), is_available_for_new_content: true } await writeFile(`${distPath}/meta.json`, JSON.stringify(metaData, null, 4)); const blockJSON = await readFile(`${projectPath}/block.json`, "utf8"); const block = JSON.parse(blockJSON); const fields = getBlockFields(block, 'content'); // Styling TAB. const stylingFields = getBlockFields(block, 'styling'); if (stylingFields.length) { const stylingFieldsByName = {}; stylingFields.forEach(field => stylingFieldsByName[field.name] = field); const stylingGroup = convertToHubspotField({ type: 'group', name: 'style', label: "Style", }); stylingGroup.children = Object.values(stylingFieldsByName); stylingGroup.tab = "STYLE"; fields.push(stylingGroup); } // Export JSON file. await writeFile(`${distPath}/fields.json`, JSON.stringify(fields, null, 4)); }