diff --git a/dotfiles/.local/share/chezmoi/home/dot_local/bin/executable_install-software b/dotfiles/.local/share/chezmoi/home/dot_local/bin/executable_install-software index 6736eaba..143ef286 100644 --- a/dotfiles/.local/share/chezmoi/home/dot_local/bin/executable_install-software +++ b/dotfiles/.local/share/chezmoi/home/dot_local/bin/executable_install-software @@ -2,1835 +2,85 @@ # Store data in YML file and then generate the data below with: # yq e -o=j '.' .chezmoidata.yaml -const installData = { - "softwarePackages": { - "altair": { - "cask": "altair-graphql-client", - "choco": "altair-graphql", - "snap": "altair", - "yay": "altair" - }, - "angular-cli": { - "brew": "angular-cli", - "npm": "@angular/cli" - }, - "ansible-lint": { - "pipx": "ansible-lint" - }, - "ansible": { - "brew": "ansible", - "dnf": "ansible", - "pipx": "ansible" - }, - "ansibleconnect": { - "_deps": [ - "sshpass", - "tmux" - ], - "pipx": "ansibleconnect" - }, - "aqua": { - "brew": "aquaproj/aqua/aqua" - }, - "asciicinema": { - "pipx": "asciicinema" - }, - "astronvim": { - "_deps": [ - "bottom", - "lazygit", - "neovim", - "node", - "python", - "ripgrep", - "tree-sitter" - ] - }, - "auto-install": { - "npm": "auto-install" - }, - "automake": { - "brew": "automake" - }, - "bat": { - "apk": "bat", - "apt": "bat", - "brew": "bat", - "cargo": "bat", - "choco": "bat", - "pacman": "bat", - "pkg": "bat", - "port": "bat", - "scoop": "bat", - "zypper": "bat" - }, - "blockinfile": { - "go": "github.com/ProfessorManhattan/blockinfile@latest" - }, - "bundler": { - "gem": "bundler" - }, - "delta": { - "brew": "git-delta", - "cargo": "git-delta", - "choco": "delta", - "dnf": "git-delta", - "pacman": "git-delta", - "pkg": "git-delta", - "scoop": "delta" - }, - "bash-completion": { - "brew": "bash-completion" - }, - "bitly": { - "npm": "bitly-cli-client" - }, - "bottom": { - "brew": "bottom", - "pacman": "bottom", - "scoop": "bottom", - "snap": "bottom" - }, - "browser-sync": { - "npm": "browser-sync" - }, - "bw": { - "choco": "bitwarden-cli", - "snap": "bw" - }, - "caniuse": { - "npm": "caniuse-cmd" - }, - "carbon-now": { - "npm": "carbon-now-cli" - }, - "carthage": { - "brew:darwin": "carthage" - }, - "chef": { - "gem": "chef" - }, - "chrome-cli": { - "brew:darwin": "chrome-cli" - }, - "clocker": { - "cask": "clocker" - }, - "cookiecutter": { - "brew": "cookiecutter", - "pipx": "cookiecutter" - }, - "cocoapods": { - "brew:darwin": "cocoapods", - "gem:darwin": "cocoapods" - }, - "commitizen": { - "_bin": "cz", - "npm": "commitizen" - }, - "cordova": { - "npm": "cordova" - }, - "delve": { - "brew": "delve", - "go": "github.com/go-delve/delve/cmd/dlv@latest" - }, - "dframe": { - "npm": "deviceframe" - }, - "editly": { - "npm": "editly" - }, - "electron": { - "brew": "electron", - "npm": "electron" - }, - "emma": { - "npm": "emma-cli" - }, - "emoj": { - "npm": "emoj" - }, - "emplace": { - "cargo": "emplace", - "nix": "emplace", - "scoop": "emplace" - }, - "empty-trash": { - "npm": "empty-trash-cli" - }, - "eslint": { - "brew": "eslint", - "npm": "eslint" - }, - "fastify": { - "npm": "fastify-cli" - }, - "feathers": { - "npm": "@feathersjs/cli" - }, - "firebase": { - "npm": "firebase-tools" - }, - "ffmpeg": { - "apk": "ffmpeg", - "apt": "ffmpeg", - "brew": "ffmpeg", - "choco": "ffmpeg", - "dnf": "ffmpeg", - "pacman": "ffmpeg", - "scoop": "ffmpeg" - }, - "fkill": { - "npm": "fkill-cli" - }, - "fonts": { - "cask": [ - "epk/epk/font-sf-mono-nerd-font", - "homebrew/cask-fonts/font-hack-nerd-font", - "homebrew/cask-fonts/font-meslo-lg-nerd-font" - ] - }, - "fpm": { - "gem": "fpm" - }, - "gdown": { - "pipx": "gdown" - }, - "gdu": { - "brew": "gdu", - "go": "github.com/dundee/gdu/v5/cmd/gdu@latest", - "pacman": "gdu", - "snap": "gdu-disk-usage-analyzer" - }, - "gdu:debian": { - "apt": "gdu" - }, - "gfi": { - "npm": "google-font-installer" - }, - "git": { - "apk": "git", - "apt": "git", - "brew": "git", - "dnf": "git" - }, - "git-filter-repo": { - "brew": "git-filter-repo", - "pipx": "git-filter-repo" - }, - "git-lfs": { - "_deps": [ - "git" - ], - "brew": "git-lfs", - "scoop": "git-lfs" - }, - "git-open": { - "npm": "git-open" - }, - "gixy": { - "pipx": "gixy" - }, - "go-outline": { - "go": "github.com/ramya-rao-a/go-outline@latest" - }, - "gomodifytags": { - "brew": "gomodifytags", - "go": "github.com/fatih/gomodifytags@latest" - }, - "gopkgs": { - "go": "github.com/uudashr/gopkgs/v2/cmd/gopkgs@latest" - }, - "gopls": { - "brew": "gopls", - "go": "golang.org/x/tools/gopls@latest" - }, - "gotests": { - "brew": "gotests", - "go": "github.com/cweill/gotests/...@latest" - }, - "gphotos-sync": { - "pipx": "gphotos-sync" - }, - "gnu:darwin": { - "brew": [ - "coreutils", - "findutils", - "gawk", - "gnu-getopt", - "gnu-indent", - "gnu-tar", - "gnu-sed", - "gnutls", - "grep" - ] - }, - "gtop": { - "brew": "gtop", - "npm": "gtop" - }, - "gulp": { - "brew": "gulp", - "npm": "gulp" - }, - "http-prompt": { - "brew": "http-prompt", - "pipx": "http-prompt" - }, - "httpstat": { - "brew": "httpstat", - "pipx": "httpstat" - }, - "ideviceinstaller": { - "brew:darwin": "ideviceinstaller" - }, - "imagemagick": { - "apk": "imagemagick", - "apt": "imagemagick", - "brew": "imagemagick", - "choco": "imagemagick", - "dnf": "imagemagick", - "scoop": "imagemagick" - }, - "imgur-uploader": { - "npm": "imgur-uploader-cli" - }, - "impl": { - "go": "github.com/josharian/impl@latest" - }, - "ionic": { - "npm": "@ionic/cli" - }, - "ios-deploy": { - "brew:darwin": "ios-deploy", - "npm:darwin": "ios-deploy" - }, - "ipfs": { - "brew": "ipfs", - "choco": "go-ifps", - "nix": "ipfs", - "port": "ipfs", - "scoop": "go-ipfs", - "snap": "ipfs" - }, - "ipfs-desktop": { - "cask": "ipfs", - "choco": "ipfs-desktop", - "pacman": "ipfs-desktop", - "scoop": "ipfs-desktop" - }, - "ipfs-deploy": { - "_bin": "ipd", - "npm": "ipfs-deploy" - }, - "is-up": { - "npm": "is-up-cli" - }, - "lazygit": { - "brew": "lazygit", - "choco": "lazygit", - "go": "github.com/jesseduffield/lazygit@latest", - "pacman": "lazygit", - "scoop": "lazygit" - }, - "libimobiledevice": { - "brew:darwin": "libimobiledevice" - }, - "localtunnel": { - "brew": "localtunnel", - "npm": "localtunnel" - }, - "mjml": { - "cask": "mjml", - "npm": "mjml" - }, - "molecule": { - "brew": "molecule", - "pipx": "molecule" - }, - "nativefier": { - "_deps": [ - "imagemagick" - ], - "npm": "nativefier" - }, - "ncc": { - "brew": "ncc", - "npm": "@vercel/ncc" - }, - "netcat": { - "apt": "netcat", - "brew": "netcat", - "choco": "netcat", - "dnf": "netcat", - "pacman": "netcat", - "scoop": "netcat" - }, - "nb": { - "_deps": [ - "bat", - "netcat", - "pandoc", - "rg", - "tig", - "w3m" - ], - "basher": "xwmx/nb", - "bpkg": "xwmx/nb", - "brew": "nb", - "npm": "nb.sh" - }, - "nectar": { - "npm": "nectarjs" - }, - "neovim": { - "apk": "neovim", - "apt": [ - "neovim", - "python3-neovim" - ], - "brew": "neovim", - "choco": "neovim", - "dnf": [ - "neovim", - "python3-neovim" - ], - "flatpak": "io.neovim.nvim", - "nix": "neovim", - "pacman": [ - "neovim", - "python-pynvim" - ], - "pkg": [ - "neovim", - "py27-pynvim", - "py36-pynvim" - ], - "port": "neovim", - "winget": "Neovim.Neovim", - "zypper": [ - "neovim", - "python-neovim", - "python3-neovim" - ] - }, - "ngxtop": { - "pipx": "ngxtop" - }, - "node": { - "brew": "node", - "scoop": "nodejs" - }, - "nest": { - "npm": "@nestjs/cli" - }, - "newman": { - "brew": "newman", - "npm": "newman" - }, - "np": { - "npm": "np" - }, - "npm-check": { - "npm": "npm-check" - }, - "oclif": { - "npm": "oclif" - }, - "oh-my-posh": { - "brew": "jandedobbeleer/oh-my-posh/oh-my-posh", - "scoop": [ - "clink", - "https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json" - ] - }, - "package-size": { - "npm": "package-size" - }, - "pageres": { - "npm": "pageres-cli" - }, - "pandoc": { - "_deps": [ - "python" - ], - "apt": "pandoc", - "brew": [ - "pandoc", - "librsvg", - "homebrew/cask/basictex" - ], - "choco": [ - "pandoc", - "rsvg-convert", - "miktex" - ], - "crew": "pandoc", - "dnf": "pandoc", - "nix": "pandoc", - "pacman": "pandoc", - "winget": "pandoc" - }, - "papertrail": { - "gem": "papertrail" - }, - "pipx": { - "brew": "pipx" - }, - "pkg": { - "npm": "pkg" - }, - "playwright": { - "npm": "playwright" - }, - "pm2": { - "npm": "pm2" - }, - "pre-commit": { - "brew": "pre-commit", - "pipx": "pre-commit" - }, - "prettier": { - "brew": "prettier", - "npm": "prettier" - }, - "psi": { - "npm": "psi" - }, - "python": { - "apt": "python3-pip", - "brew": "python", - "dnf": "python3-pip", - "pacman": "python-pip", - "scoop": "python" - }, - "pywhat": { - "brew": "pywhat", - "pipx": "pywhat", - "port": "pywhat" - }, - "ramda": { - "npm": "ramda-cli" - }, - "rclone": { - "apt": "rclone", - "brew": "rclone", - "choco": [ - "rclone", - "winfsp", - "nssm" - ], - "dnf": "rclone", - "pacman": "rclone" - }, - "ripgrep": { - "_bin": "rg", - "apt": "ripgrep", - "brew": "ripgrep", - "cargo": "ripgrep", - "choco": "ripgrep", - "dnf": "ripgrep", - "nix": "ripgrep", - "pacman": "ripgrep", - "pkg": "ripgrep", - "port": "ripgrep", - "scoop": "ripgrep", - "zypper": "ripgrep" - }, - "ripgrep-all": { - "_bin": "rga", - "brew": [ - "ffmpeg", - "pandoc", - "poppler", - "rga", - "tesseract" - ], - "choco": "ripgrep-all", - "nix": "ripgrep-all", - "pacman": "ripgrep-all" - }, - "rofi": { - "apt": "rofi", - "dnf": "rofi", - "pacman": "rofi", - "pkg": "rofi", - "port": "rofi", - "zypper": "rofi" - }, - "rsync": { - "apt": "rsync", - "brew": "rsync", - "choco": "rsync", - "dnf": "rsync" - }, - "sad": { - "brew": "ms-jpq/sad/sad", - "pacman": "sad" - }, - "secretive": { - "cask": "secretive" - }, - "semantic-release": { - "npm": "semantic-release" - }, - "sentry-cli": { - "brew": "getsentry/tools/sentry-cli", - "github": "github.com/getsentry/sentry-cli", - "npm": "@sentry/cli", - "scoop": "sentry-cli", - "yay": "sentry-cli-bin" - }, - "serve": { - "npm": "serve" - }, - "serverless": { - "brew": "serverless", - "npm": "serverless" - }, - "share": { - "npm": "share-cli" - }, - "sharp": { - "npm": "sharp-cli" - }, - "shotcut": { - "choco": "shotcut", - "flatpak": "org.shotcut.Shotcut", - "snap": "shotcut" - }, - "sloth": { - "cask": "stats" - }, - "social-analyzer": { - "brew": "social-analyzer", - "pipx": "social-analyzer" - }, - "speed-test": { - "npm": "speed-test" - }, - "spotdl": { - "_deps": [ - "ffmpeg" - ], - "pipx": "spotdl" - }, - "sshpass": { - "apt": "sshpass", - "brew": "hudochenkov/sshpass/sshpass", - "dnf": "sshpass" - }, - "starred": { - "pipx": "starred" - }, - "statcode": { - "pipx": "statcode", - "yay": "statcode" - }, - "stats": { - "cask": "stats" - }, - "stegcloak": { - "npm": "stegcloak" - }, - "supdock": { - "npm": "supdock" - }, - "surge": { - "npm": "surge" - }, - "svgo": { - "brew": "svgo", - "npm": "svgo" - }, - "t": { - "gem": "t" - }, - "terminalizer": { - "npm": "terminalizer" - }, - "tig": { - "brew": "tig", - "nix": "tig", - "pkg": "tig" - }, - "tinypng": { - "npm": "tinypng-cli" - }, - "tldr": { - "brew": "tldr", - "npm": "tldr" - }, - "trellis": { - "brew": "roots/tap/trellis-cli" - }, - "trufflehog": { - "brew": "trufflesecurity/trufflehog/trufflehog" - }, - "tmux": { - "apt": "tmux", - "brew": [ - "awk", - "gnu-sed", - "perl", - "tmux" - ] - }, - "tree-sitter": { - "cargo": "tree-sitter-cli" - }, - "ts2c": { - "npm": "ts2c" - }, - "typescript": { - "_bin": "tsc", - "brew": "typescript", - "npm": "tsc" - }, - "virtualenv": { - "brew": "virtualenv", - "pipx": "virtualenv" - }, - "volta": { - "brew": "volta", - "scoop": "volta" - }, - "w3m": { - "apt": "w3m", - "brew": "w3m", - "dnf": "w3m", - "pacman": "w3m", - "port": "w3m", - "zypper": "w3m" - }, - "wget": { - "apk": "wget", - "apt": "wget", - "brew": "rsync", - "dnf": "wget", - "whalebrew": "whalebrew/wget" - }, - "wifi-password": { - "bpkg": "rauchg/wifi-password", - "brew": "wifi-password", - "npm": "wifi-password-cli" - }, - "wordpressify": { - "npm": "wordpressify" - }, - "wrangler": { - "npm": "@cloudflare/wrangler" - }, - "yamllint": { - "brew": "yamllint", - "pipx": "yamllint" - }, - "youtube-dl": { - "pipx": "youtube-dl", - "port": "youtube-dl", - "brew": "youtube-dl" - }, - "zx": { - "brew": "zx", - "npm": "zx" - }, - "act": { - "brew": "act", - "choco": "act-cli", - "go": "github.com/nektos/act@latest", - "ports": "act", - "scoop": "act", - "yay": "act" - }, - "argocli": { - "brew": "argocd", - "github": "https://github.com/argoproj/argo-workflows" - }, - "azurefunctions": { - "brew": "azure/functions/azure-functions-core-tools@4", - "choco": "azure-functions-core-tools", - "github": "github.com/Azure/azure-functions-core-tools", - "npm": "azure-functions-core-tools@4" - }, - "bandwhich": { - "brew": "bandwhich", - "github": "github.com/imsnif/bandwhich", - "pacman": "bandwhich", - "pkg": "bandwhich" - }, - "bane": { - "github": "github.com/genuinetools/bane", - "go": "github.com/genuinetools/bane@latest" - }, - "betwixt": { - "github": "github.com/kdzwinel/betwixt" - }, - "bin": { - "github": "github.com/marcosnils/bin", - "go": "github.com/marcosnils/bin@latest" - }, - "bitwarden": { - "cask": "bitwarden", - "choco": "bitwarden", - "github": "github.com/bitwarden/desktop", - "snap": "bitwarden", - "yay": "bitwarden-git" - }, - "bivac": { - "github": "github.com/camptocamp/bivac" - }, - "boilr": { - "github": "github.com/tmrts/boilr", - "go": "github.com/tmrts/boilr@latest" - }, - "budibase-cli": { - "github": "github.com/Budibase/budibase", - "npm": "@budibase/cli" - }, - "captain": { - "github": "github.com/jenssegers/captain" - }, - "cerebro": { - "cask": "cerebro", - "choco": "cerebro", - "github": "github.com/cerebroapp/cerebro", - "yay": "cerebro" - }, - "clair": { - "brew": "clair", - "github": "github.com/quay/clair" - }, - "cloudflared": { - "brew": "cloudflare/cloudflare/cloudflared", - "github": "github.com/cloudflare/cloudflared" - }, - "cmctl": { - "github": "github.com/cert-manager/cert-manager" - }, - "confd": { - "brew": "confd", - "choco": "confd", - "github": "github.com/kelseyhightower/confd", - "yay": "confd" - }, - "consul-cli": { - "github": "github.com/mantl/consul-cli" - }, - "croc": { - "brew": "croc", - "choco": "croc", - "github": "github.com/schollz/croc", - "go": "github.com/schollz/croc/v9@latest", - "pacman": "croc", - "pkg": "croc", - "scoop": "croc" - }, - "ctop": { - "brew": "ctop", - "github": "github.com/bcicen/ctop", - "yay": "ctop-bin" - }, - "cumulus": { - "cask": "cumulus", - "github": "github.com/gillesdemey/Cumulus" - }, - "curator": { - "pip": "elasticsearch-curator" - }, - "dasel": { - "brew": "dasel", - "github": "github.com/TomWright/dasel", - "go": "github.com/tomwright/dasel/cmd/dasel@master" - }, - "dat": { - "github": "github.com/dat-ecosystem-archive/dat", - "npm": "dat@next" - }, - "dat-desktop": { - "cask": "dat", - "github": "github.com/datproject/dat-desktop" - }, - "dive": { - "brew": "dive", - "github": "github.com/wagoodman/dive", - "go": "github.com/wagoodman/dive@latest", - "yay": "dive" - }, - "desed": { - "cargo": "desed", - "dnf": "desed", - "github": "github.com/SoptikHa2/desed", - "pkg": "desed" - }, - "deta": { - "github": "github.com/deta/deta-cli" - }, - "direnv": { - "apt": "direnv", - "brew": "direnv", - "github": "github.com/direnv/direnv" - }, - "docker-slim": { - "brew": "docker-slim", - "dnf": "golang-github-docker-slim", - "github": "github.com/docker-slim/docker-slim", - "yay": "docker-slim" - }, - "dockle": { - "brew": "goodwithtech/r/dockle", - "github": "github.com/goodwithtech/dockle", - "yay": "dockle-bin" - }, - "doctl": { - "brew": "doctl", - "github": "github.com/digitalocean/doctl", - "pacman": "doctl", - "pkg": "doctl", - "snap": "doctl" - }, - "dog": { - "brew": "dog", - "github": "github.com/ogham/dog", - "pacman": "dog", - "pkg": "dog" - }, - "drone": { - "brew": "drone/drone/drone", - "github": "github.com/harness/drone-cli", - "scoop": "drone" - }, - "duf": { - "brew": "duf", - "choco": "duf", - "github": "github.com/muesli/duf", - "pacman": "duf", - "pkg": "duf", - "scoop": "duf", - "snap": "duf-utility" - }, - "dust": { - "apk": "dust", - "github": "github.com/bootandy/dust", - "pacman": "dust" - }, - "envconsul": { - "github": "github.com/hashicorp/envconsul" - }, - "etcd": { - "apt": "etcd", - "brew": "etcd", - "choco": "etcd", - "dnf": "etcd", - "github": "github.com/etcd-io/etcd", - "yay": "etcd" - }, - "fd": { - "apk": "fd", - "apt": "fd-find", - "brew": "fd", - "cargo": "fd-find", - "choco": "fd", - "github": "github.com/sharkdp/fd", - "pacman": "fd", - "pkg": "fd", - "scoop": "fd" - }, - "ffsend": { - "apk": "ffsend", - "brew": "ffsend", - "github": "github.com/timvisee/ffsend", - "pkg": "ffsend", - "scoop": "ffsend", - "snap": "ffsend", - "yay": "ffsend" - }, - "filebrowser": { - "brew": "filebrowser/tap/filebrowser", - "github": "github.com/filebrowser/filebrowser" - }, - "fission": { - "github": "github.com/fission/fission" - }, - "fly": { - "brew": "fly", - "github": "https://github.com/concourse/concourse", - "yay": "fly-cli" - }, - "fm": { - "github": "github.com/knipferrc/fm", - "go": "github.com/knipferrc/fm@latest" - }, - "fq": { - "apk": "fq", - "brew": "wader/tap/fq", - "go": "github.com/wader/fq@latest", - "github": "github.com/wader/fq", - "pacman": "fq", - "scoop": "fq" - }, - "fselect": { - "brew": "fselect", - "choco": "fselect", - "cargo": "fselect", - "github": "github.com/jhspetersson/fselect", - "yay": "fselect" - }, - "fuego": { - "github": "github.com/sgarciac/fuego", - "snap": "fuego" - }, - "g-assist": { - "snap": "g-assist", - "github": "github.com/Melvin-Abraham/Google-Assistant-Unofficial-Desktop-Client" - }, - "gdrive": { - "brew": "gdrive", - "github": "github.com/prasmussen/gdrive", - "yay": "gdrive" - }, - "ghorg": { - "github": "github.com/gabrie30/ghorg", - "yay": "ghorg" - }, - "gitify": { - "cask": "gitify", - "github": "github.com/manosim/gitify", - "yay": "gitify-bin" - }, - "gitleaks": { - "brew": "gitleaks", - "github": "github.com/zricethezav/gitleaks", - "pkg": "gitleaks", - "yay": "gitleaks" - }, - "gitomatic": { - "github": "github.com/muesli/gitomatic" - }, - "glab": { - "apk": "glab", - "brew": "glab", - "github": "github.com/profclems/glab", - "scoop": "glab", - "snap": "glab", - "yay": "gitlab-glab-bin" - }, - "glow": { - "brew": "glow", - "github": "github.com/charmbracelet/glow", - "pkg": "glow", - "scoop": "glow", - "yay": "glow" - }, - "gojq": { - "brew": "gojq", - "github": "github.com/itchyny/gojq", - "go": "github.com/itchyny/gojq@latest" - }, - "go-chromecast": { - "github": "github.com/vishen/go-chromecast", - "go": "github.com/vishen/go-chromecast@latest" - }, - "gping": { - "brew": "gping", - "cargo": "gping", - "choco": "gping", - "github": "github.com/orf/gping", - "scoop": "gping", - "pacman": "gping" - }, - "grex": { - "brew": "grex", - "cargo": "grex", - "choco": "grex", - "github": "github.com/pemistahl/grex", - "scoop": "grex" - }, - "gron": { - "brew": "gron", - "github": "github.com/tomnomnom/gron", - "go": "github.com/tomnomnom/gron@latest" - }, - "hclq": { - "github": "github.com/mattolenik/hclq", - "go": "github.com/mattolenik/hclq@latest" - }, - "hexyl": { - "apt": "hexyl", - "brew": "hexyl", - "cargo": "hexyl", - "github": "github.com/sharkdp/hexyl", - "pacman": "hexyl", - "pkg": "hexyl", - "scoop": "hexyl", - "snap": "hexyl" - }, - "hey": { - "brew": "hey", - "github": "github.com/rakyll/hey" - }, - "hostctl": { - "brew": "guumaster/tap/hostctl", - "github": "github.com/guumaster/hostctl", - "scoop": "hostctl", - "yay": "hostctl" - }, - "htmlq": { - "brew": "htmlq", - "cargo": "htmlq", - "github": "github.com/mgdm/htmlq" - }, - "hyperfine": { - "apk": "hyperfine", - "brew": "hyperfine", - "cargo": "hyperfine", - "choco": "hyperfine", - "dnf": "hyperfine", - "github": "github.com/sharkdp/hyperfine", - "pacman": "hyperfine", - "pkg": "hyperfine" - }, - "jiq": { - "github": "github.com/fiatjaf/jiq/cmd/jiq", - "go": "github.com/fiatjaf/jiq/cmd/jiq@latest" - }, - "jitsi-meet-electron": { - "cask": "jisti-meet", - "choco": "jitsi-meet-electron", - "github": "github.com/jitsi/jitsi-meet-electron", - "pkg": "jisti-meet", - "yay": "jitsi-meet-desktop-bin" - }, - "jo": { - "brew": "jo", - "apt": "jo", - "snap": "jo", - "github": "github.com/jpmens/jo", - "pkg": "jo", - "scoop": "jo", - "yay": "jo" - }, - "jq": { - "brew": "jq", - "choco": "jq", - "apk": "jq", - "apt": "jq", - "dnf": "jq", - "github": "github.com/stedolan/jq", - "pkg": "jq" - }, - "kdash": { - "brew": "kdash-rs/kdash/kdash", - "cargo": "kdash", - "choco": "kdash", - "github": "github.com/kdash-rs/kdash", - "scoop": "kdash" - }, - "kn": { - "brew": "kn", - "github": "github.com/knative/client", - "yay": "knative-client-bin" - }, - "kubenav": { - "github": "github.com/kubenav/kubenav", - "yay": "kubenav-bin" - }, - "license": { - "go": "github.com/nishanths/license@latest", - "yay": "nishanths-license-git" - }, - "linkerd2": { - "brew": "linkerd", - "github": "github.com/linkerd/linkerd2", - "yay": "linkerd" - }, - "linuxkit": { - "brew": "linuxkit/linuxkit/linuxkit", - "github": "github.com/linuxkit/linuxkit" - }, - "logcli": { - "brew": "logcli", - "github": "github.com/grafana/loki", - "yay": "logcli-git" - }, - "manta": { - "cask": "manta", - "github": "github.com/hql287/Manta" - }, - "mark-text": { - "cask": "mark-text", - "choco": "marktext", - "github": "github.com/marktext/marktext", - "yay": "marktext" - }, - "masscode": { - "cask": "masscode", - "github": "github.com/antonreshetov/massCode" - }, - "mc": { - "brew": "minio/stable/mc", - "binary:linux": "https://dl.min.io/client/mc/release/linux-amd64/mc", - "binary:windows": "https://dl.min.io/client/mc/release/windows-amd64/mc.exe", - "go": "github.com/minio/mc@latest" - }, - "mergestat": { - "brew": "mergestat/mergestat/mergestat", - "github": "github.com/mergestat/mergestat" - }, - "mjml-app": { - "github": "github.com/mjmlio/mjml-app" - }, - "mkcert": { - "brew": "mkcert", - "choco": "mkcert", - "github": "github.com/FiloSottile/mkcert", - "pacman": "mkcert", - "scoop": "mkcert" - }, - "mockoon": { - "cask": "mockoon", - "choco": "mockoon", - "github": "github.com/mockoon/mockoon", - "snap": "mockoon", - "yay": "mockoon-bin" - }, - "mole": { - "brew": "davrodpin/homebrew-mole/mole", - "github": "github.com/davrodpin/mole", - "yay": "mole-bin" - }, - "motrix": { - "cask": "motrix", - "choco": "motrix", - "github": "github.com/agalwood/Motrix", - "scoop": "motrix", - "yay": "motrix-bin" - }, - "mqttx": { - "cask": "mqttx", - "github": "github.com/emqx/MQTTX", - "snap": "mqttx", - "yay": "mqttx-bin" - }, - "muffet": { - "brew": "muffet", - "github": "github.com/raviqqe/muffet", - "go": "github.com/raviqqe/muffet/v2@latest", - "yay": "muffet-bin" - }, - "mullvad-vpn": { - "cask": "mullvadvpn", - "github": "github.com/mullvad/mullvadvpn-app", - "yay": "mullvad-vpn" - }, - "nebula": { - "github": "github.com/slackhq/nebula", - "pacman": "nebula" - }, - "nnn": { - "apk": "nnn", - "apt": "nnn", - "brew": "nnn", - "github": "github.com/jarun/nnn", - "pacman": "nnn", - "pkg": "nnn" - }, - "node-prune": { - "github": "github.com/tj/node-prune", - "go": "github.com/tj/node-prune@latest" - }, - "nomino": { - "cargo": "nomino", - "github": "github.com/yaa110/nomino", - "yay": "nomino" - }, - "nuclear": { - "cask": "nuclear", - "choco": "nuclear", - "github": "github.com/nukeop/nuclear", - "snap": "nuclear", - "yay": "nuclear-player-bin" - }, - "osquery": { - "cask": "osquery", - "choco": "osquery", - "github": "github.com/osquery/osquery", - "yay": "osquery-git" - }, - "ots": { - "brew": "ots", - "github": "github.com/sniptt-official/ots", - "go": "github.com/sniptt-official/ots@latest" - }, - "oq": { - "brew": "oq", - "github": "github.com/Blacksmoke16/oq", - "snap": "oq", - "yay": "oq" - }, - "page-fetch": { - "go": "github.com/detectify/page-fetch@latest" - }, - "pass": { - "apt": "pass", - "brew": "pass", - "dnf": "pass", - "pacman": "pass", - "pkg": "password-store" - }, - "pastel": { - "brew": "pastel", - "cargo": "pastel", - "github": "github.com/sharkdp/pastel", - "snap": "pastel", - "yay": "pastel" - }, - "peco": { - "apt": "peco", - "brew": "peco", - "choco": "peco", - "github": "github.com/peco/peco", - "pacman": "peco" - }, - "pony": { - "github": "github.com/jessfraz/pony", - "go": "github.com/jessfraz/pony@latest" - }, - "pretzel": { - "github": "github.com/amiechen/pretzel" - }, - "procs": { - "apk": "procs", - "brew": "procs", - "cargo": "procs", - "dnf": "procs", - "github": "github.com/dalance/procs", - "pacman": "procs", - "scoop": "procs", - "snap": "procs" - }, - "psu": { - "github": "github.com/greenled/portainer-stack-utils" - }, - "pup": { - "brew": "pup", - "github": "github.com/ericchiang/pup", - "go": "github.com/ericchiang/pup@latest" - }, - "q": { - "brew": "q", - "github": "github.com/harelba/q" - }, - "raindrop": { - "cask": "raindropio", - "github": "github.com/raindropio/desktop" - }, - "rancher": { - "brew": "rancher-cli", - "github": "github.com/rancher/cli", - "yay": "rancher-cli-bin" - }, - "responsively": { - "cask": "responsively", - "choco": "responsively", - "github": "github.com/responsively-org/responsively-app" - }, - "rip": { - "brew": "rm-improved", - "cargo": "rm-improved", - "github": "github.com/nivekuil/rip", - "yay": "rm-improved" - }, - "runjs": { - "cask": "runjs", - "choco": "runjs", - "github": "github.com/lukehaas/RunJS", - "yay": "runjs-bin" - }, - "s5cmd": { - "brew": "peak/tap/s5cmd", - "github": "github.com/peak/s5cmd", - "go": "github.com/peak/s5cmd@latest" - }, - "schema": { - "go": "github.com/Confbase/schema" - }, - "scrcpy": { - "apt": "scrcpy", - "brew": "scrcpy", - "choco": "scrcpy", - "dnf": "scrcpy", - "github": "github.com/Genymobile/scrcpy", - "pkg": "scrcpy", - "snap": "scrcpy", - "yay": "scrcpy" - }, - "scrcpy-gui": { - "github": "github.com/Tomotoes/scrcpy-gui" - }, - "sd": { - "apk": "sd", - "brew": "sd", - "cargo": "sd", - "choco": "sd-cli", - "dnf": "sd", - "github": "github.com/chmln/sd", - "pacman": "sd", - "pkg": "sd" - }, - "sftpgo": { - "brew": "sftpgo", - "choco": "sftpgo", - "github": "github.com/drakkan/sftpgo", - "pkg": "sftpgo", - "yay": "sftpgo-bin" - }, - "shfmt": { - "apk": "shfmt", - "brew": "shfmt", - "github": "github.com/mvdan/sh", - "go": "mvdan.cc/sh/v3/cmd/shfmt@latest", - "pacman": "shfmt", - "pkg": "shfmt", - "scoop": "shfmt", - "snap": "shfmt" - }, - "skm": { - "brew": "timothyye/tap/skm", - "github": "github.com/TimothyYe/skm", - "go": "github.com/TimothyYe/skm/cmd/skm@latest" - }, - "skype": { - "cask": "skype", - "choco": "skype", - "snap": "skype" - }, - "slack": { - "cask": "slack", - "choco": "slack", - "snap": "slack" - }, - "sqlectron": { - "cask": "sqlectron", - "github": "github.com/sqlectron/sqlectron-gui", - "yay": "sqlectron-gui" - }, - "ssh-vault": { - "brew": "ssh-vault", - "github": "github.com/ssh-vault/ssh-vault" - }, - "ssl-proxy": { - "github": "github.com/suyashkumar/ssl-proxy" - }, - "staticcheck": { - "apt": "go-staticcheck", - "brew": "staticcheck", - "dnf": "golang-honnef-tools", - "go": "honnef.co/go/tools/cmd/staticcheck@latest", - "pacman": "staticcheck", - "port": "staticcheck", - "scoop": "staticcheck" - }, - "switchhosts": { - "github": "github.com/oldj/SwitchHosts" - }, - "sync-ssh-keys": { - "github": "github.com/samber/sync-ssh-keys", - "yay": "sync-ssh-keys-bin" - }, - "sysbench": { - "apk": "sysbench", - "apt": "sysbench", - "brew": "sysbench", - "dnf": "sysbench", - "pacman": "sysbench", - "pkg": "sysbench" - }, - "sysget": { - "github": "github.com/Eugeny/tabby" - }, - "tabby": { - "cask": "tabby", - "choco": "tabby", - "github": "github.com/Eugeny/tabby" - }, - "task": { - "brew": "go-task/tap/go-task", - "choco": "go-task", - "go": "github.com/go-task/task/v3/cmd/task@latest", - "github": "github.com/go-task/task", - "scoop": "task" - }, - "teleport": { - "brew": "teleport", - "pkg": "teleport", - "yay": "teleport-bin" - }, - "teller": { - "brew": "spectralops/tap/teller", - "github": "github.com/tellerops/teller" - }, - "tflint": { - "brew": "tflint", - "choco": "tflint", - "github": "github.com/terraform-linters/tflint" - }, - "tilt": { - "brew": "tilt", - "github": "github.com/tilt-dev/tilt", - "yay": "tilt-bin" - }, - "temps": { - "github": "github.com/jackd248/temps" - }, - "tokei": { - "apk": "tokei", - "brew": "tokei", - "cargo": "tokei", - "dnf": "tokei", - "github": "github.com/XAMPPRocky/tokei", - "pacman": "tokei", - "pkg": "tokei", - "scoop": "tokei" - }, - "transfer": { - "github": "github.com/rinetd/transfer", - "go": "github.com/rinetd/transfer@latest" - }, - "trivy": { - "github": "github.com/aquasecurity/trivy", - "yay": "trivy-bin" - }, - "up": { - "brew": "up", - "github": "github.com/akavel/up", - "pkg": "up", - "yay": "up" - }, - "vault": { - "brew": "hashicorp/tap/vault", - "yay": "vault-cli" - }, - "vector": { - "brew": "vectordotdev/brew/vector" - }, - "velero": { - "brew": "velero", - "choco": "velero", - "github": "github.com/vmware-tanzu/velero", - "yay": "velero-bin" - }, - "waypoint": { - "brew": "hashicorp/tap/waypoint", - "scoop": "waypoint" - }, - "websocat": { - "brew": "websocat", - "cargo": "websocat", - "github": "github.com/vi/websocat", - "pkg": "websocat", - "port": "websocat" - }, - "webtorrent": { - "cask": "webtorrent", - "choco": "webtorrent-desktop", - "github": "github.com/webtorrent/webtorrent-desktop", - "yay": "webtorrent-desktop" - }, - "whaler": { - "github": "github.com/P3GLEG/Whaler" - }, - "winrm-cli": { - "yay": "winrm-cli-git" - }, - "wkhtmltopdf": { - "apt": "wkhtmltopdf", - "cask": "wkhtmltopdf", - "choco": "wkhtmltopdf", - "github": "github.com/wkhtmltopdf/wkhtmltopdf", - "pacman": "wkhtmltopdf" - }, - "xurls": { - "go": "mvdan.cc/xurls/v2/cmd/xurls@latest", - "github": "github.com/mvdan/xurls" - }, - "ykman": { - "brew": "ykman", - "pipx": "yubikey-manager" - }, - "yq": { - "brew": "yq", - "choco": "yq", - "apk": "yq", - "github": "github.com/stedolan/jq", - "go": "github.com/mikefarah/yq/v4@latest", - "snap": "yq" - }, - "yubikey-authenticator": { - "ansible:darwin": "professormanhattan.yubikey", - "choco": "yubico-authenticator", - "flatpak": "com.yubico.yubioath" - }, - "yubikey-manager": { - "brew": "ykman", - "dnf": "yubikey-manager", - "pacman": "yubikey-manager", - "pipx": "yubikey-manager" - }, - "yubikey-manager-qt": { - "ansible:darwin": "professormanhattan.yubikey", - "appimage": "https://developers.yubico.com/yubikey-manager-qt/Releases/yubikey-manager-qt-1.2.4b-linux.AppImage", - "choco": "yubikey-manager", - "dnf": "yubikey-manager-qt", - "pacman": "yubikey-manager-qt", - "scoop": "yubikey-manager-qt" - } - }, - "installerPostInstallScripts": { - "astronvim": "nvim --headless -c 'autocmd User PackerComplete quitall'\n", - "bottom": { - "snap": "sudo snap connect bottom:mount-observe\nsudo snap connect bottom:hardware-observe\nsudo snap connect bottom:system-observe\nsudo snap connect bottom:process-control\n" - }, - "gdu": { - "brew": "brew link --overwrite gdu", - "snap": "sudo snap connect gdu-disk-usage-analyzer:mount-observe :mount-observe\nsudo snap connect gdu-disk-usage-analyzer:system-backup :system-backup\nsudo snap alias gdu-disk-usage-analyzer.gdu gdu\n" - }, - "git-lfs": "git lfs install", - "nb": "nb completions install", - "oh-my-posh": { - "scoop": "clink autorun install" - }, - "pipx": { - "brew": "pipx ensurepath" - }, - "python": { - "brew": "python3 -m pip install --upgrade setuptools\npython3 -m pip install --upgrade pip\n" - }, - "volta": "volta setup\nvolta install node@latest\n" - }, - "softwarePlugins": { - "dotnet": { - "plugins": [ - "Microsoft.CST.AttackSurfaceAnalyzer.CLI" - ] - }, - "helm": { - "plugins": [ - "https://github.com/databus23/helm-diff", - "https://github.com/jkroepke/helm-secrets" - ] - }, - "krew": { - "plugins": [ - "access-matrix", - "datree", - "deprecations", - "get-all", - "konfig", - "modify-secret", - "neat", - "node-shell", - "resource-capacity", - "score", - "sniff", - "tree", - "tunnel", - "view-allocations", - "who-can" - ] - }, - "quicklook": { - "plugins": [ - { - "plugin": "apparency", - "corporate": false - }, - "provisionql", - "qlcolorcode", - "qlimagesize", - "qlmarkdown", - "qlstephen", - "qlvideo", - "quicklook-json", - "quicklookapk", - { - "plugin": "suspicious-package", - "corporate": false - }, - "webpquicklook" - ] - }, - "vagrant": { - "plugins": [ - "vagrant-bindfs", - "vagrant-digitalocean", - "vagrant-google", - "vagrant-libvirt", - "vagrant-parallels", - "vagrant-share", - "vagrant-vmware-desktop", - "vagrant-vbguest" - ] - }, - "vim": { - "plugins": [ - "https://github.com/dense-analysis/ale.git", - "https://github.com/pearofducks/ansible-vim.git", - "https://github.com/neoclide/coc.nvim.git", - "https://github.com/ekalinin/dockerfile.vim.git", - "https://github.com/editorconfig/editorconfig-vim.git", - "https://github.com/junegunn/fzf.git", - "https://github.com/junegunn/fzf.vim.git", - "https://github.com/itchyny/lightline.vim.git", - "https://github.com/scrooloose/nerdtree.git", - "https://github.com/stanangeloff/php.vim.git", - "https://github.com/hdima/python-syntax.git", - "https://github.com/vim-syntastic/syntastic.git", - "https://github.com/vim-airline/vim-airline.git", - "https://github.com/kristijanhusak/vim-carbon-now-sh.git", - "https://github.com/ryanoasis/vim-devicons.git", - "https://github.com/tpope/vim-fugitive.git", - "https://github.com/airblade/vim-gitgutter.git", - "https://github.com/fatih/vim-go.git", - "https://github.com/pangloss/vim-javascript.git", - "https://github.com/mxw/vim-jsx.git", - "https://github.com/plasticboy/vim-markdown.git", - "https://github.com/terryma/vim-multiple-cursors.git", - "https://github.com/prettier/vim-prettier.git", - "https://github.com/tpope/vim-sensible.git", - "https://github.com/tpope/vim-surround.git", - "https://github.com/nanotee/zoxide.vim.git" - ] - }, - "visualStudioCode": { - "plugins": [ - "Angular.ng-template", - "attilabuti.vscode-mjml", - "bierner.markdown-emoji", - "ChakrounAnas.turbo-console-log", - "ChFlick.firecode", - "chrmarti.regex", - "cweijan.vscode-mysql-client2", - "DavidAnson.vscode-markdownlint", - "dbaeumer.vscode-eslint", - "denoland.vscode-deno", - "eamodio.gitlens", - "EditorConfig.EditorConfig", - "esbenp.prettier-vscode", - "ericadamski.carbon-now-sh", - "firsttris.vscode-jest-runner", - "formulahendry.auto-rename-tag", - "formulahendry.code-runner", - "GitHub.vscode-pull-request-github", - "GitLab.gitlab-workflow", - "GoogleCloudTools.cloudcode", - "golang.Go", - "HashiCorp.terraform", - "hediet.vscode-drawio", - "IBM.output-colorizer", - "Kelvin.vscode-sshfs", - "mads-hartmann.bash-ide-vscode", - "ms-azuretools.vscode-docker", - "ms-kubernetes-tools.vscode-kubernetes-tools", - "ms-vscode-remote.remote-containers", - "ms-vscode-remote.remote-ssh", - "ms-vscode-remote.remote-wsl", - "ms-python.python", - "ms-vscode.PowerShell", - "MS-vsliveshare.vsliveshare", - "MS-vsliveshare.vsliveshare-audio", - "njpwerner.autodocstring", - "nrwl.angular-console", - "philnash.ngrok-for-vscode", - "PKief.material-icon-theme", - "pranaygp.vscode-css-peek", - "quicktype.quicktype", - "rbbit.typescript-hero", - "redhat.ansible", - "redhat.vscode-yaml", - "richie5um2.vscode-sort-json", - "Rubymaniac.vscode-paste-and-indent", - "salbert.comment-ts", - "shd101wyy.markdown-preview-enhanced", - "softwaredotcom.swdc-vscode", - "steoates.autoimport", - "stylelint.vscode-stylelint", - "timonwong.shellcheck", - "toba.vsfire", - "tyriar.sort-lines", - "usernamehw.errorlens", - "valentjn.vscode-ltex", - "VisualStudioExptTeam.vscodeintellicode", - "vsciot-vscode.vscode-arduino", - "vsls-contrib.codetour", - "vsls-contrib.gistfs", - "wayou.vscode-todo-highlight", - "wix.vscode-import-cost", - "yatki.vscode-surround" - ] - } - }, - "installerPreference": [ - "flatpak", - "snap", - "whalebrew", - "apt", - "dnf", - "pacman", - "apk", - "nix", - "pkg", - "zypper", - "brew", - "crew", - "port", - "yay", - "choco", - "scoop", - "winget", - "go", - "cargo", - "npm", - "pipx", - "gem", - "cask", - "bpkg", - "basher", - "appimage", - "binary" - ] +let response = await fetch('https://gitlab.com/megabyte-labs/misc/dotfiles/-/raw/master/dotfiles/.local/share/chezmoi/software.json') +if (response.ok) { + const installData = await response.json() +} else { + await $`logg 'Error acquiring software installation map` } +const installOrders = {} +const installOrdersPre = [] +const installOrdersPost = [] +const osType = OSType() +const osID = osType == 'linux' ? releaseID() : osType ### Creates the installOrders object which maps package managers to arrays of packages to install function generateInstallOrders() { - const installOrders = {} const packagesToInstall = process.argv.slice(1) - const preferenceOrder = installData.installerPreference[OSType()] + const preferenceOrder = installData.installerPreference[OSTypeInstallerKey()] const softwarePackages = installData.softwarePackages for(let package of packagesToInstall) { - if (softwarePackages[package]) { - console.log(package + ' found in map') - for (let preference of preferenceOrder) { - if (softwarePackages[package][preference]) { - console.log('Using ' + preference + ' to install ' + package) - if (!installOrders[preference]) { - installOrders[preference] = [] - } - installOrders[preference].push(package) - break - } - } + if (softwarePackages[package + ':' osID]) { + const packageKey = package + ':' + osID + } else if (softwarePackages[package + ':' + osType]) { + const packageKey = package + ':' + osType + } else if (softwarePackages[package]) { + const packageKey = package } else { - console.log(package + ' not found in map') + $`logg '\`'"${package}'\` not found in the installation map'` + continue + } + $`logg '\`'"${package}'\` found in the installation map using \`'"${packageKey}"'\`'` + for (let preference of preferenceOrder) { + if (softwarePackages[packageKey][preference + ':' + osID]) { + updateInstallMaps(preference, softwarePackages[packageKey], preference + ':' + osID) + } else if (softwarePackages[packageKey][preference + ':' + osType]) { + updateInstallMaps(preference, softwarePackages[packageKey], preference + ':' + osType) + } else if (softwarePackages[packageKey][preference]) { + updateInstallMaps(preference, softwarePackages[packageKey], preference) + } } } return installOrders } -### Acquire OS type -async function OSType() { - const osType = await $` +### Update install, pre-hook, and post-hook objects +function updateInstallMaps(preference, packages, scopedPreference) { + const preHook = getHook(packages, 'pre', scopedPreference, preference) + if (preHook) { + installOrdersPre.concat(typeof preHook === 'string' ? [preHook] : preHook) + } + const postHook(packages, 'post', scopedPreference, preference) + if (postHook) { + installOrdersPost.concat(typeof postHook === 'string' ? [postHook] : postHook) + } + if (!installOrders[preference]) { + installOrders[preference] = [] + } + const newPackages = packages[scopedPreference] + installOrders[preference].concat(typeof newPackages === 'string' ? [newPackages] : newPackages) +} + +### Get pre / post install hooks +function getHook(packages, hook, scopedPreference, preference) { + const hookLabel = '_' + hook + ':' + if (packages[hookLabel + scopedPreference]) { + return packages[hookLabel + scopedPreference] + } else if (packages[hookLabel + preference]) { + return packages[hookLabel + preference] + } else if (packages[hookLabel + osID]) { + return packages + } else if (packages[hookLabel + osType]) { + return packages[hookLabel + osType] + } else if (packages['_pre']) { + return packages['_pre'] + } +} + +### Acquire OS type installer key (for the installerPreference data key) +async function OSTypeInstallerKey() { + const osTypeKey = await $` if [ -d /Applications ] && [ -d /Library ]; then echo 'darwin' elif command -v apt > /dev/null; then @@ -1847,9 +97,32 @@ async function OSType() { echo 'windows' fi ` + return osTypeKey +} + +### Acquire OS type +async function OSType() { + const osType = await $` + if [ -d /Applications ] && [ -d /Library ]; then + echo 'darwin' + elif [ -f /etc/os-release ]; then + echo 'linux' + else + echo 'windows' + fi + ` return osType } +### Acquire release ID +async function releaseID() { + const ID = await $` + . /etc/os-release + echo $ID + ` + return ID +} + ### Post-install hook async function afterInstall(packageManager) { const PACKAGE_MANAGER = packageManager @@ -2232,11 +505,17 @@ async function main() { for (const packageManager of packageManagers) { await beforeInstall(packageManager) } + for (const script of installOrdersPre) { + await $`${script}` + } for (const packageManager of packageManagers) { const asyncOrders = [] asyncOrders.push(Promise.resolve(installPackageList(packageManager, installOrders[packageManager]))) await Promise.all(asyncOrders) } + for (const script of installOrdersPost) { + await $`${script}` + } for (const packageManager of packageManagers) { await afterInstall(packageManager) }