* Generate a unified download badge for a platform
(platform: PlatformType, url: string)
| 220 | * Generate a unified download badge for a platform |
| 221 | */ |
| 222 | function generateDownloadBadge(platform: PlatformType, url: string): string { |
| 223 | // Platform configuration |
| 224 | const platformConfig: Record<PlatformType, PlatformBadgeConfig> = { |
| 225 | 'darwin-universal': { color: '000000', logo: 'apple', label: 'macOS Universal' }, |
| 226 | 'darwin-x64': { color: '000000', logo: 'apple', label: 'macOS Intel' }, |
| 227 | 'darwin-arm64': { color: '000000', logo: 'apple', label: 'macOS Apple Silicon' }, |
| 228 | 'win32-x64-system': { color: '0078D6', logo: 'windows', label: 'Windows x64 System' }, |
| 229 | 'win32-arm64-system': { color: '0078D6', logo: 'windows', label: 'Windows ARM64 System' }, |
| 230 | 'win32-x64-user': { color: '0078D6', logo: 'windows', label: 'Windows x64 User' }, |
| 231 | 'win32-arm64-user': { color: '0078D6', logo: 'windows', label: 'Windows ARM64 User' }, |
| 232 | 'win32-x64': { color: '0078D6', logo: 'windows', label: 'Windows x64' }, |
| 233 | 'win32-arm64': { color: '0078D6', logo: 'windows', label: 'Windows ARM64' }, |
| 234 | 'linux-x64': { color: 'FCC624', logo: 'linux', label: 'Linux x64' }, |
| 235 | 'linux-arm64': { color: 'FCC624', logo: 'linux', label: 'Linux ARM64' } |
| 236 | }; |
| 237 | |
| 238 | const config = platformConfig[platform]; |
| 239 | if (!config) { |
| 240 | return ''; |
| 241 | } |
| 242 | |
| 243 | // Encode the label for URL safety |
| 244 | const encodedLabel = config.label.replace(/\s+/g, '%20'); |
| 245 | const encodedPlatform = platform.replace(/-/g, '%20'); |
| 246 | |
| 247 | return `<a href="${url}"><img src="https://img.shields.io/badge/${encodedLabel}-Download-${config.color}?style=for-the-badge&logo=${config.logo}&logoColor=white" alt="${config.label}"></a>`; |
| 248 | } |
| 249 | |
| 250 | function generateDownloadLink(platform: PlatformType, url: string): string { |
| 251 | return `<a href="${url}">${platform}</a>`; |
no outgoing calls
no test coverage detected