()
| 44 | } |
| 45 | |
| 46 | async function main() { |
| 47 | if (isVersionCheckDisabled(process.env)) { |
| 48 | printBox([`${colors.dim}Version check skipped (disabled via env)${colors.reset}`], colors.dim); |
| 49 | return; |
| 50 | } |
| 51 | |
| 52 | try { |
| 53 | const result = await performVersionCheck(); |
| 54 | const currentVersion = result.requestedVersion; |
| 55 | const latest = result.response.latest_version; |
| 56 | const minSupported = result.response.min_supported_version; |
| 57 | |
| 58 | if (result.outcome === 'unsupported') { |
| 59 | const lines = [ |
| 60 | `${colors.red}${colors.bold}❌ UNSUPPORTED VERSION${colors.reset}`, |
| 61 | '', |
| 62 | `${colors.white}Current version:${colors.reset} ${colors.red}${colors.bold}v${currentVersion}${colors.reset}`, |
| 63 | `${colors.white}Latest version:${colors.reset} ${colors.green}v${latest}${colors.reset}`, |
| 64 | `${colors.white}Min supported:${colors.reset} ${colors.yellow}v${minSupported}${colors.reset}`, |
| 65 | '', |
| 66 | `${colors.red}Your version is no longer supported.${colors.reset}`, |
| 67 | `${colors.red}Please upgrade to continue receiving updates.${colors.reset}`, |
| 68 | ]; |
| 69 | if (result.response.upgrade_url) { |
| 70 | lines.push(''); |
| 71 | lines.push( |
| 72 | `${colors.cyan}${colors.bold}Upgrade:${colors.reset} ${result.response.upgrade_url}`, |
| 73 | ); |
| 74 | } |
| 75 | printBox(lines, colors.red); |
| 76 | return; |
| 77 | } |
| 78 | |
| 79 | if (result.outcome === 'upgrade') { |
| 80 | const lines = [ |
| 81 | `${colors.yellow}${colors.bold}⚠️ UPDATE AVAILABLE${colors.reset}`, |
| 82 | '', |
| 83 | `${colors.white}Current version:${colors.reset} ${colors.yellow}v${currentVersion}${colors.reset}`, |
| 84 | `${colors.white}Latest version:${colors.reset} ${colors.green}${colors.bold}v${latest}${colors.reset}`, |
| 85 | '', |
| 86 | `${colors.yellow}A newer version is available.${colors.reset}`, |
| 87 | ]; |
| 88 | if (result.response.upgrade_url) { |
| 89 | lines.push(''); |
| 90 | lines.push( |
| 91 | `${colors.cyan}${colors.bold}Upgrade:${colors.reset} ${result.response.upgrade_url}`, |
| 92 | ); |
| 93 | } |
| 94 | printBox(lines, colors.yellow); |
| 95 | return; |
| 96 | } |
| 97 | |
| 98 | // outcome === 'ok' |
| 99 | const lines = [ |
| 100 | `${colors.green}${colors.bold}✅ UP TO DATE${colors.reset}`, |
| 101 | '', |
| 102 | `${colors.white}Version:${colors.reset} ${colors.green}${colors.bold}v${currentVersion}${colors.reset}`, |
| 103 | '', |
no test coverage detected