#!/usr/bin/env bun type SoftwareGroup = { name: string packages: string[] } async function install(groups: SoftwareGroup[]) { const packageNames = groups.flatMap(x => x.packages) await Bun.$`dnf install -y --setopt install_weak_deps=False ${packageNames}` } const EXT_SOFTWARES: SoftwareGroup[] = [ { name: "Python", packages: [ "python", "python-devel", "poetry" ] }, { name: "NodeJS", packages: [ "nodejs", "nodejs-devel" ] }, { name: "Perl", packages: [ "perl", "perl-devel" ] }, { name: "Ruby", packages: [ "ruby", "ruby-devel" ] }, { name: "PHP", packages: [ "php", "php-devel", "composer" ] }, { name: "Java", packages: [ "java-21-openjdk", "java-21-openjdk-devel", ] }, { name: "QEMU", packages: [ "qemu-user-static", "qemu-user-binfmt" ] }, { name: "C", packages: [ "bison", "flex", "vcpkg", "@c-development" ] } ] const command = process.argv[2] if (command === "install") { await install(EXT_SOFTWARES) }