@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
106 lines (90 loc) • 3.98 kB
JavaScript
const { exec } = require( 'child_process' );
const fs = require( 'fs' );
const path = require( 'path' );
const { promisify } = require( 'util' );
const getConfig = require('../../config');
const { config } = getConfig();
const { trailingSlashIt } = require( './util' );
const sendSlackMessage = require( '../utils/send-slack-message' );
const root = trailingSlashIt( config?.paths?.root || '' );
const execAsync = promisify( exec );
const composerJsonContent = `{
"name": "gravityforms/build",
"description": "Build Gravity Forms.",
"keywords": ["wordpress", "gravity forms"],
"type": "wordpress-plugin",
"homepage": "https://www.gravityforms.com",
"license": "GPL-3.0+",
"authors": [
{
"name": "rocketgenius",
"email": "customerservice@rocketgenius.com",
"homepage": "http://www.gravityforms.com/"
}
],
"support": {
"issues": "http://www.gravityhelp.com"
},
"require": {
"wp-cli/i18n-command": "2.2.9"
}
}`;
const init = async () => {
try {
if ( fs.existsSync( path.join( root, 'vendor' ) ) ) {
fs.renameSync( path.join( root, 'vendor' ), path.join( root, 'vendor_old' ) );
}
if ( fs.existsSync( path.join( root, 'composer.lock' ) ) ) {
fs.renameSync( path.join( root, 'composer.lock' ), path.join( root, 'composer.lock.old' ) );
}
if ( fs.existsSync( path.join( root, 'composer.json' ) ) ) {
fs.renameSync( path.join( root, 'composer.json' ), path.join( root, 'composer.json.old' ) );
}
fs.writeFileSync( path.join( root, 'composer.json' ), composerJsonContent );
console.log( `Installing wp i18n...` );
await execAsync( `cd "${ root }" && composer install` );
console.log( `Generating POT file...` );
const slug = config?.settings?.slug || 'gravityforms';
const shellCommand = `"${ root }vendor/bin/wp" i18n make-pot . "${ root }languages/${ slug }.pot" --exclude=js/src/blocks --skip-audit --headers='${ JSON.stringify( {
'Report-Msgid-Bugs-To': 'https://gravityforms.com/support',
'Last-Translator': 'Gravity Forms <support@gravityforms.com>',
'Language-Team': 'Gravity Forms <support@gravityforms.com>',
} ) }' --allow-root`;
process.chdir( root );
await execAsync( shellCommand );
console.log( `Cleaning up...` );
// Cleanup
fs.rmSync( path.join( root, 'vendor' ), { recursive: true, force: true } );
fs.unlinkSync( path.join( root, 'composer.json' ) );
fs.unlinkSync( path.join( root, 'composer.lock' ) );
// reset the original composer files
if ( fs.existsSync( path.join( root, 'composer.json.old' ) ) ) {
fs.renameSync( path.join( root, 'composer.json.old' ), path.join( root, 'composer.json' ) );
}
if ( fs.existsSync( path.join( root, 'composer.lock.old' ) ) ) {
fs.renameSync( path.join( root, 'composer.lock.old' ), path.join( root, 'composer.lock' ) );
}
if ( fs.existsSync( path.join( root, 'vendor_old' ) ) ) {
fs.renameSync( path.join( root, 'vendor_old' ), path.join( root, 'vendor' ) );
}
console.log( `Created pot file for ${ slug }` );
} catch ( error ) {
if ( fs.existsSync( path.join( root, 'composer.json.old' ) ) ) {
fs.unlinkSync( path.join( root, 'composer.json' ) );
fs.renameSync( path.join( root, 'composer.json.old' ), path.join( root, 'composer.json' ) );
}
if ( fs.existsSync( path.join( root, 'composer.lock.old' ) ) ) {
fs.unlinkSync( path.join( root, 'composer.lock' ) );
fs.renameSync( path.join( root, 'composer.lock.old' ), path.join( root, 'composer.lock' ) );
}
if ( fs.existsSync( path.join( root, 'vendor_old' ) ) ) {
fs.rmSync( path.join( root, 'vendor' ), { recursive: true, force: true } );
fs.renameSync( path.join( root, 'vendor_old' ), path.join( root, 'vendor' ) );
}
console.error( 'Error during script execution:', error );
await sendSlackMessage( `Pot file generation failed during build: ${ error.message }`, 'error' );
process.exit( 1 );
}
};
init();