(options: ScriptOptions)
| 24 | |
| 25 | // The full fancy script with progress bars and all that jazz |
| 26 | export function generateInstallScript(options: ScriptOptions): string { |
| 27 | perfMonitor.start(`generateScript-${options.distroId}`); |
| 28 | |
| 29 | const { distroId, selectedAppIds, helper = 'yay' } = options; |
| 30 | const distro = distros.find(d => d.id === distroId); |
| 31 | |
| 32 | if (!distro) { |
| 33 | perfMonitor.end(`generateScript-${options.distroId}`); |
| 34 | return '#!/bin/bash\necho "Error: Unknown distribution"\nexit 1'; |
| 35 | } |
| 36 | |
| 37 | const packages = getSelectedPackages(selectedAppIds, distroId); |
| 38 | if (packages.length === 0) { |
| 39 | perfMonitor.end(`generateScript-${options.distroId}`); |
| 40 | return '#!/bin/bash\necho "No packages selected"\nexit 0'; |
| 41 | } |
| 42 | |
| 43 | let script: string; |
| 44 | switch (distroId) { |
| 45 | case 'ubuntu': script = generateUbuntuScript(packages); break; |
| 46 | case 'debian': script = generateDebianScript(packages); break; |
| 47 | case 'arch': script = generateArchScript(packages, helper); break; |
| 48 | case 'fedora': script = generateFedoraScript(packages); break; |
| 49 | case 'opensuse': script = generateOpenSUSEScript(packages); break; |
| 50 | case 'nix': script = generateNixScript(packages); break; |
| 51 | case 'flatpak': script = generateFlatpakScript(packages); break; |
| 52 | case 'snap': script = generateSnapScript(packages); break; |
| 53 | case 'homebrew': script = generateHomebrewScript(packages); break; |
| 54 | default: script = '#!/bin/bash\necho "Unsupported distribution"\nexit 1'; |
| 55 | } |
| 56 | |
| 57 | perfMonitor.end(`generateScript-${options.distroId}`); |
| 58 | return script; |
| 59 | } |
| 60 | |
| 61 | // Quick one-liner for copy-paste warriors |
| 62 | export function generateSimpleCommand(selectedAppIds: Set<string>, distroId: DistroId): string { |
no test coverage detected