UNPKG

@gravityforms/gulp-tasks

Version:
128 lines (107 loc) 4.29 kB
#!/usr/bin/env node const axios = require( 'axios' ); const FormData = require( 'form-data' ); const fs = require( 'fs' ); const path = require( 'path' ); const { loadEnv } = require( '../utils/tools' ); const getPluginVersion = require( '../utils/get-plugin-version' ); const sendSlackMessage = require( '../utils/send-slack-message' ); const generateSha1 = require( '../utils/generate-sha-1' ); const getConfig = require('../../config'); const { config } = getConfig(); const { trailingSlashIt, getLatestChangelogEntry } = require( './util' ); loadEnv( config.paths.root ); const rootPath = config?.paths?.root || ''; const fileName = config?.settings?.rootPluginFile || ''; const updateManagerVersion = async () => { // Check if not in production mode and exit early if ( process.env.GULP_PRODUCTION_MODE !== 'true' ) { console.log( 'Skipping updating manager version because GULP_PRODUCTION_MODE is not set to true.' ); return; } const slug = config?.settings?.slug || 'gravityforms'; const version = process.env.GRAVITY_PLUGIN_VERSION || getPluginVersion( rootPath, fileName ); const apiKey = process.env.MANAGER_API_KEY || ''; const managerUrl = process.env.MANAGER_URL || ''; if ( ! apiKey || ! managerUrl ) { console.error( 'API key or manager URL not found, cannot update manager version.' ); return; } // Get the changelog entry for the latest version (only if enabled) let changelogEntry = null; if ( process.env.UPDATE_CHANGELOG === 'true' ) { const changelogPath = path.join( rootPath, 'change_log.txt' ); changelogEntry = getLatestChangelogEntry( changelogPath ); } let pathValue = ''; if ( /gravityforms|gravityflow/.test( slug ) ) { pathValue = slug === 'gravityforms' ? `gravityforms/releases/gravityforms_${ version }.zip` : `gravityforms/addons/${ slug.replace( 'gravityforms', '' ) }/${ slug }_${ version }.zip`; } else { pathValue = `${ slug }/releases/${ slug }_${ version }.zip` } // Generate SHA1 hash and get file size for the zip file const zipFileName = `${ slug }_${ version }.zip`; const zipFilePath = path.join( rootPath, zipFileName ); let sha1Hash = null; let fileSize = null; if ( fs.existsSync( zipFilePath ) ) { sha1Hash = await generateSha1( zipFilePath ); fileSize = fs.statSync( zipFilePath ).size; console.log( `Generated SHA1 hash for ${ zipFileName }: ${ sha1Hash }` ); console.log( `File size for ${ zipFileName }: ${ fileSize } bytes` ); } else { console.log( `Zip file not found at ${ zipFilePath }, skipping hash and file size generation.` ); } console.log( `Updating Gravity manager version with path value: ${ pathValue }.` ); if ( process.env.UPDATE_CHANGELOG === 'true' ) { if ( changelogEntry ) { console.log( 'Including changelog entry in update request.' ); console.log( 'Changelog entry: ', changelogEntry ); } else { console.log( 'UPDATE_CHANGELOG enabled but no changelog entry found, proceeding without changelog data.' ); } } else { console.log( 'UPDATE_CHANGELOG not enabled, skipping changelog data.' ); } try { const params = { api_key: apiKey, slug: slug, latest_version: version, path: pathValue, }; // Add hash if available if ( sha1Hash ) { params.hash = sha1Hash; } // Add file size if available if ( fileSize ) { params.file_size = fileSize; } // Add changelog if available if ( changelogEntry ) { params.change_log = changelogEntry; } console.log( 'Updating Gravity manager version with params: ', params ); console.log( 'Manager URL: ', `${ trailingSlashIt( managerUrl ) }wp-json/gravityapi/v1/addons/update_latest_version` ); const response = await axios.patch( `${ trailingSlashIt( managerUrl ) }wp-json/gravityapi/v1/addons/update_latest_version`, {}, { params, headers: { 'Content-Type': 'application/json' } } ); console.log( 'Success, updated Gravity manager version: ', response.data ); } catch ( error ) { console.error( 'Error, could not update Gravity manager version: ', error.response ? error.response.data : error.message ); await sendSlackMessage( `Failed to update manager version during build: ${ error.response ? error.response.data : error.message }`, 'error' ); process.exit( 1 ); } }; updateManagerVersion();