diff --git a/Gruntfile.js b/Gruntfile.js index 6124852c03..860b0967df 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -371,6 +371,10 @@ module.exports = grunt => { cp.execSync("vendor/bin/phpunit ./tests/integration", {stdio: 'inherit'}); }); + grunt.registerTask('set-config-params', () => { + cp.execSync("composer run-script setConfigParams", {stdio: 'ignore'}); + }); + grunt.registerTask('zip', () => { const archiver = require('archiver'); @@ -416,7 +420,6 @@ module.exports = grunt => { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-replace'); - grunt.registerTask('internal', [ 'less', 'cssmin', @@ -442,6 +445,7 @@ module.exports = grunt => { grunt.registerTask('build', [ 'composer-install', 'npm-install', + 'set-config-params', 'offline', ]); diff --git a/composer.json b/composer.json index 461e417b83..2f04aa78b1 100644 --- a/composer.json +++ b/composer.json @@ -86,5 +86,8 @@ { "name": "Oleksii Avramenko" } - ] + ], + "scripts": { + "setConfigParams": "EspoDev\\SetConfigParams::process" + } } diff --git a/dev/SetConfigParams.php b/dev/SetConfigParams.php new file mode 100644 index 0000000000..aade394610 --- /dev/null +++ b/dev/SetConfigParams.php @@ -0,0 +1,88 @@ +getContents('package.json') + ); + + $version = $packageData->version ?? null; + + if (!$version) { + return; + } + + $configPath = 'data/config.php'; + + $configWriterFileManager = new ConfigWriterFileManager(); + + if (!$configWriterFileManager->isFile($configPath)) { + $configWriterFileManager->putPhpContents($configPath, []); + } + + $app = new Application(); + + /** @var \Espo\Core\InjectableFactory $injectableFactory */ + $injectableFactory = $app->getContainer()->get('injectableFactory'); + + /** @var \Espo\Core\Utils\Config $config */ + $config = $app->getContainer()->get('config'); + + if ($config->get('version') === $version) { + return; + } + + /** @var ConfigWriter $configWriter */ + $configWriter = $injectableFactory->create(ConfigWriter::class); + + $configWriter->set('version', $version); + + $configWriter->save(); + } +}