MCPcopy Create free account
hub / github.com/abusoww/tuxmate / generateInstallScript

Function generateInstallScript

src/lib/generateInstallScript.ts:25–65  ·  view source on GitHub ↗
(options: GenerateOptions)

Source from the content-addressed store, hash-verified

23}
24
25export function generateInstallScript(options: GenerateOptions): string {
26 const { distroId, selectedAppIds, helper = 'yay' } = options;
27 const distro = distros.find(d => d.id === distroId);
28
29 if (!distro) return '#!/bin/bash\\necho "Error: Unknown distribution"\\nexit 1';
30
31 const uScript = generateUniversalScript(selectedAppIds, distroId);
32 const packages = getSelectedPackages(selectedAppIds, distroId);
33
34 if (packages.length === 0 && !uScript) return '#!/bin/bash\\necho "No packages selected"\\nexit 0';
35
36 const injectUniversal = (script: string) => script.replace('\\nprint_summary', '\\n' + uScript + '\\nprint_summary');
37
38 let scriptContent = '';
39
40 switch (distroId) {
41 case 'ubuntu': scriptContent = injectUniversal(generateUbuntuScript(packages)); break;
42 case 'debian': scriptContent = injectUniversal(generateDebianScript(packages)); break;
43 case 'arch': scriptContent = injectUniversal(generateArchScript(packages, helper)); break;
44 case 'fedora': scriptContent = injectUniversal(generateFedoraScript(packages)); break;
45 case 'opensuse': scriptContent = injectUniversal(generateOpenSUSEScript(packages)); break;
46 case 'flatpak': scriptContent = injectUniversal(generateFlatpakScript(packages)); break;
47 case 'snap': scriptContent = injectUniversal(generateSnapScript(packages)); break;
48 case 'homebrew': scriptContent = injectUniversal(generateHomebrewScript(packages)); break;
49 case 'nix':
50 if (packages.length === 0) return '# Nix\\n\\n# Generic Installers (Please run separately outside NixOS configuration):\\n' + uScript;
51 return generateNixConfig(packages) + '\\n\\n# ----------------------------------------\\n# NOTE: Universal packages (npm) cannot be strictly placed in environment.systemPackages.\\n# You may need to run these commands in a standard terminal:\\n# \\n/* \\n' + uScript + '\\n*/\\n';
52 default: return '#!/bin/bash\\necho "Unsupported distribution"\\nexit 1';
53 }
54
55 if (packages.length === 0) {
56 const universalCount = getUniversalPackages(selectedAppIds, 'npm', distroId).length
57 + getUniversalPackages(selectedAppIds, 'script', distroId).length;
58 return generateAsciiHeader(distro.name, universalCount)
59 + generateSharedUtils(distro.name.toLowerCase(), universalCount)
60 + uScript
61 + '\nprint_summary\n';
62 }
63
64 return scriptContent;
65}
66
67export function generateCommandline(options: GenerateOptions): string {
68 const { selectedAppIds, distroId } = options;

Callers 2

CommandFooterFunction · 0.90
SidebarFunction · 0.90

Calls 15

generateUniversalScriptFunction · 0.90
getSelectedPackagesFunction · 0.90
generateUbuntuScriptFunction · 0.90
generateDebianScriptFunction · 0.90
generateArchScriptFunction · 0.90
generateFedoraScriptFunction · 0.90
generateOpenSUSEScriptFunction · 0.90
generateFlatpakScriptFunction · 0.90
generateSnapScriptFunction · 0.90
generateHomebrewScriptFunction · 0.90
generateNixConfigFunction · 0.90
getUniversalPackagesFunction · 0.90

Tested by

no test coverage detected