|
|
@ -1,39 +1,71 @@ |
|
|
#!/usr/bin/env node
|
|
|
#!/usr/bin/env node
|
|
|
|
|
|
// For development purposes - run `npm run build-platform`.
|
|
|
|
|
|
|
|
|
import {exec} from 'child_process'; |
|
|
|
|
|
import config from 'config'; |
|
|
import config from 'config'; |
|
|
import Generator from "yeoman-generator"; |
|
|
import path from "path"; |
|
|
import yeoman from 'yeoman-environment'; |
|
|
import prompts from "prompts"; |
|
|
|
|
|
import {exec} from 'child_process'; |
|
|
import {buildHubspot} from "./platforms/hubspot/hubspot-adapter.js"; |
|
|
import {buildHubspot} from "./platforms/hubspot/hubspot-adapter.js"; |
|
|
import {getConfigs} from "./helpers.js"; |
|
|
import {getConfigs} from "./helpers.js"; |
|
|
import {buildWordPress} from "./platforms/wordpress/wordpress-adapter.js"; |
|
|
import {buildWordPress} from "./platforms/wordpress/wordpress-adapter.js"; |
|
|
import path from "path"; |
|
|
|
|
|
|
|
|
|
|
|
const {modulesPath, projectPath} = getConfigs(); |
|
|
const {isDev, modulesPath, projectPath, developmentBlockName} = getConfigs(); |
|
|
|
|
|
const blockName = isDev ? developmentBlockName : config.has('blockName') ? config.get('blockName') : developmentBlockName; |
|
|
|
|
|
|
|
|
const blockName = config.has('blockName') ? config.get('blockName') : 'development'; |
|
|
export const PLATFORM_OPTIONS = [{ |
|
|
|
|
|
name: 'wordpress', |
|
|
|
|
|
title: 'WordPress' |
|
|
|
|
|
}, { |
|
|
|
|
|
name: 'wordpress-blocks', |
|
|
|
|
|
title: 'WordPress Block' |
|
|
|
|
|
}, { |
|
|
|
|
|
name: 'hubspot', |
|
|
|
|
|
title: 'Hubspot' |
|
|
|
|
|
}, { |
|
|
|
|
|
name: 'hubspot-email', |
|
|
|
|
|
title: 'Hubspot Email' |
|
|
|
|
|
}, { |
|
|
|
|
|
name: 'javascript', |
|
|
|
|
|
title: 'JavaScript' |
|
|
|
|
|
}, { |
|
|
|
|
|
name: 'php', |
|
|
|
|
|
title: 'PHP' |
|
|
|
|
|
}]; |
|
|
|
|
|
|
|
|
class buildGenerator extends Generator { |
|
|
const data = await getExportData(); |
|
|
async prompting() { |
|
|
const selectedPlatform = PLATFORM_OPTIONS[data['platform']]; |
|
|
this.data = await this.prompt([ |
|
|
await buildExportFiles(selectedPlatform); |
|
|
{ |
|
|
|
|
|
type: "list", |
|
|
|
|
|
name: "platform", |
|
|
|
|
|
message: "Choose Platform", |
|
|
|
|
|
choices: ['WordPress', 'WordPress Block', 'Hubspot', 'Hubspot Email', 'JavaScript', 'PHP'], |
|
|
|
|
|
default: 'WordPress' |
|
|
|
|
|
} |
|
|
|
|
|
]) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
writing() { |
|
|
console.log('--------------------\nDone!'); |
|
|
new Promise((resolve => { |
|
|
|
|
|
if (['WordPress', 'PHP'].includes(this.data.platform)) { |
|
|
//
|
|
|
|
|
|
// Functions
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
export async function buildExportFiles(platform) { |
|
|
|
|
|
if (['wordpress', 'php'].includes(platform.name)) { |
|
|
const backPath = modulesPath ? modulesPath.split('/').map(() => '..').join('/') : ''; |
|
|
const backPath = modulesPath ? modulesPath.split('/').map(() => '..').join('/') : ''; |
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
|
|
const phpGeneratorPath = path.join(modulesPath, 'platforms', 'php'); |
|
|
const phpGeneratorPath = path.join(modulesPath, 'platforms', 'php'); |
|
|
exec(`cd ${phpGeneratorPath} && composer install && php build.php '${blockName}' '${backPath}' '${projectPath}'`, function (error, stdout) { |
|
|
await execCommand(`cd ${phpGeneratorPath} && composer install && php build.php '${blockName}' '${backPath}' '${projectPath}'`); |
|
|
|
|
|
if (platform.name === 'wordpress') { |
|
|
|
|
|
await buildWordPress(); |
|
|
|
|
|
} else { |
|
|
|
|
|
if (platform.name === 'wordpress-blocks') { |
|
|
|
|
|
await buildWordPress(true); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else if (platform.name === 'hubspot-email') { |
|
|
|
|
|
await buildHubspot(blockName) |
|
|
|
|
|
} else if (platform.name === 'hubspot') { |
|
|
|
|
|
console.log('"Hubspot" Coming soon...'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
export function execCommand(cmd = '') { |
|
|
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
|
|
|
|
|
|
|
|
exec(cmd, function (error, stdout) { |
|
|
if (error) { |
|
|
if (error) { |
|
|
console.log('Error:', error) |
|
|
console.log('Error:', error) |
|
|
reject(error); |
|
|
reject(error); |
|
|
@ -42,33 +74,18 @@ class buildGenerator extends Generator { |
|
|
console.log(stdout); |
|
|
console.log(stdout); |
|
|
resolve(); |
|
|
resolve(); |
|
|
}); |
|
|
}); |
|
|
}).then(() => { |
|
|
|
|
|
if (this.data.platform === 'WordPress') { |
|
|
|
|
|
return buildWordPress(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (this.data.platform === 'WordPress Block') { |
|
|
|
|
|
return buildWordPress(true); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
} else if (this.data.platform === 'Hubspot Email') { |
|
|
|
|
|
buildHubspot(blockName) |
|
|
|
|
|
.then(() => { |
|
|
|
|
|
resolve(); |
|
|
|
|
|
}); |
|
|
}); |
|
|
} else if (this.data.platform === 'Hubspot') { |
|
|
|
|
|
console.log('"Hubspot" Coming soon...'); |
|
|
|
|
|
resolve(); |
|
|
|
|
|
} else { |
|
|
|
|
|
resolve(); |
|
|
|
|
|
} |
|
|
} |
|
|
})) |
|
|
|
|
|
.then(() => { |
|
|
function getExportData() { |
|
|
console.log('--------------------\nDone!'); |
|
|
return prompts([ |
|
|
}); |
|
|
{ |
|
|
|
|
|
type: "select", |
|
|
|
|
|
name: "platform", |
|
|
|
|
|
message: "Choose Platform", |
|
|
|
|
|
choices: PLATFORM_OPTIONS.map(item => item.title), |
|
|
|
|
|
default: 'WordPress' |
|
|
} |
|
|
} |
|
|
|
|
|
]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const build = new buildGenerator([], {env: yeoman.createEnv()}, {}); |
|
|
|
|
|
build.run().then(() => null); |
|
|
|
|
|
|