UNPKG

@gravityforms/gulp-tasks

Version:
106 lines (90 loc) 3.98 kB
#!/usr/bin/env node 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();