#!/usr/bin/env php symlinks to modules//web * - copy: copy module web directories (for environments without symlink support) * * Exit codes: * 0 — sync successful * 1 — error during sync */ declare(strict_types=1); use MintyPHP\App\Module\ModuleRegistry; use MintyPHP\App\Module\ModuleRuntimeAssetPublisher; require_once __DIR__ . '/module-cli-bootstrap.php'; function moduleAssetsSyncRun(): int { return moduleCliRunStep('module-assets-sync', static function (): int { $runtimeModulesDir = __DIR__ . '/../web/modules'; $lockFile = __DIR__ . '/../storage/runtime/.module-assets-sync.lock'; $mode = (string) getenv('APP_MODULE_ASSET_MODE'); if (trim($mode) === '') { $mode = 'symlink'; } return moduleCliWithFileLock( $lockFile, 'module-assets-sync: another sync is in progress, skipping.', static function () use ($runtimeModulesDir, $mode): int { $registry = app(ModuleRegistry::class); $publisher = new ModuleRuntimeAssetPublisher(); $result = $publisher->publish($runtimeModulesDir, $registry->getModules(), $mode); fwrite(STDOUT, sprintf( "module-assets-sync: mode=%s created=%d updated=%d removed=%d unchanged=%d\n", $mode, $result['created'], $result['updated'], $result['removed'], $result['unchanged'] )); return 0; } ); }); } if (PHP_SAPI === 'cli' && realpath((string) ($_SERVER['SCRIPT_FILENAME'] ?? '')) === __FILE__) { fwrite(STDERR, "Hint: prefer `php bin/console module:assets-sync` instead.\n"); exit(moduleAssetsSyncRun()); }