()
| 80 | } |
| 81 | |
| 82 | async function enforceVersionCheck() { |
| 83 | if (isVersionCheckDisabled(process.env)) { |
| 84 | console.warn('[version-check] Skipping version validation (disabled via env).'); |
| 85 | return; |
| 86 | } |
| 87 | |
| 88 | try { |
| 89 | const result = await performVersionCheck(); |
| 90 | const currentVersion = |
| 91 | process.env.SHIPSEC_VERSION_CHECK_VERSION ?? result.response.min_supported_version; |
| 92 | const latest = result.response.latest_version; |
| 93 | |
| 94 | if (result.outcome === 'unsupported') { |
| 95 | console.error( |
| 96 | `[version-check] Version ${currentVersion} is no longer supported. Latest available: ${latest}.`, |
| 97 | ); |
| 98 | if (result.response.upgrade_url) { |
| 99 | console.error(`[version-check] Upgrade URL: ${result.response.upgrade_url}`); |
| 100 | } |
| 101 | process.exit(1); |
| 102 | } |
| 103 | |
| 104 | if (result.outcome === 'upgrade') { |
| 105 | console.warn( |
| 106 | `[version-check] Version ${latest} is available. You are running ${currentVersion}.`, |
| 107 | ); |
| 108 | if (result.response.upgrade_url) { |
| 109 | console.warn(`[version-check] Upgrade URL: ${result.response.upgrade_url}`); |
| 110 | } |
| 111 | } else if (result.outcome === 'ok') { |
| 112 | console.log(`[version-check] Version ${currentVersion} is supported.`); |
| 113 | } |
| 114 | } catch (error) { |
| 115 | console.warn( |
| 116 | '[version-check] Failed to contact version service. Continuing without enforcement.', |
| 117 | error, |
| 118 | ); |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | bootstrap().catch((error) => { |
| 123 | console.error('Failed to bootstrap ShipSec backend', error); |
no test coverage detected