You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

56 lines
1.8 KiB

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));
}