@gravityforms/gulp-tasks
Version:
Configurable Gulp tasks for use in Gravity Forms projects.
70 lines (55 loc) • 2.18 kB
JavaScript
import fs from 'node:fs/promises';
import path from 'node:path';
import getConfig from '../../config.js';
import sendSlackMessage from '../utils/send-slack-message.js';
import { loadEnv } from '../utils/tools.js';
const { config } = getConfig();
loadEnv( config.paths.root );
const enableFeatureFlags = async () => {
if ( process.env.FEATURE_FLAGS_ENABLED === 'true' ) {
try {
const phpFilePath = path.join( config.paths.root, config.settings.rootPluginFile );
let phpFileContent = await fs.readFile( phpFilePath, 'utf8' );
const featureFlagLine = `add_filter( '${ config.settings.slug }_feature_flag', '__return_true' );\n`;
phpFileContent += `\n${ featureFlagLine }`;
await fs.writeFile( phpFilePath, phpFileContent, 'utf8' );
console.log( 'Feature flags enabled.' );
} catch ( error ) {
console.error( 'Failed to enable feature flags:', error );
throw error;
}
}
};
const setOverrideVersion = async () => {
const overrideVersion = process.env.BUILD_OVERRIDE_VERSION;
if ( overrideVersion ) {
try {
const phpFilePath = path.join( config.paths.root, config.settings.rootPluginFile );
const phpFileContent = await fs.readFile( phpFilePath, 'utf8' );
const versionMatch = phpFileContent.match( /Version:\s*([\d\w.\-]+)/ );
if ( ! versionMatch ) {
throw new Error( 'Could not find the version in the PHP file header.' );
}
const currentVersion = versionMatch[ 1 ];
const updatedContent = phpFileContent.replace( new RegExp( currentVersion, 'g' ), overrideVersion );
await fs.writeFile( phpFilePath, updatedContent, 'utf8' );
console.log( `Version override applied: ${ overrideVersion }` );
} catch ( error ) {
console.error( 'Failed to set override version:', error );
throw error;
}
}
};
const init = async () => {
try {
await enableFeatureFlags();
await setOverrideVersion();
console.log( 'Ran all pre-package scripts.' );
} catch ( error ) {
console.error( 'Failed to run pre-package scripts:', error );
await sendSlackMessage( `Failed to run pre-package scripts during build: ${ error.message }`, 'error' );
process.exit( 1 );
}
};
export default init;