From 1131b46e44bd40c64a2f308cff2d22853e1cd8ce Mon Sep 17 00:00:00 2001 From: David Tomaschik Date: Wed, 30 Apr 2025 13:27:02 -0700 Subject: [PATCH] Update package tools --- bin/install_package.sh | 92 ++++++++++++++++++++++++++++++++++++++++++ packages.cli | 10 ++--- 2 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 bin/install_package.sh diff --git a/bin/install_package.sh b/bin/install_package.sh new file mode 100644 index 0000000..f62333e --- /dev/null +++ b/bin/install_package.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# Attempt to install packages regardless of OS + +set -ue + +is_sourced() { + if [ -n "${ZSH_VERSION:-}" ]; then + case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac + else # Add additional POSIX-compatible shell names here, if needed. + case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac + fi + return 1 # NOT sourced. +} + +# Format is :: +# Use "-" for alternate name if not available +PACKAGE_ALIASES=$(cat <<'EOF' +bat:brew:- +binfmt-support:brew:- +cryptsetup:brew:- +EOF +) + +package_alias() { + local manager="$1" + local package="$2" + local alias=$(echo "$PACKAGE_ALIASES" | \ + awk -F: -v manager="${manager}" -v package="${package}" \ + '$1 == package && $2 == manager { print $3 }' 2>/dev/null) + echo "${alias:-${package}}" +} + +install_package() { + local package="$1" + + # Check for apt-get + if command -v apt-get &> /dev/null; then + package=$(package_alias apt "${package}") + if [ "$package" == "-" ] ; then + echo "Package not available on this platform" + return 1 + fi + echo "Installing '$package' using apt-get..." + sudo apt-get install -y "$package" + return 0 + elif command -v yum &> /dev/null; then + package=$(package_alias yum "${package}") + if [ "$package" == "-" ] ; then + echo "Package not available on this platform" + return 1 + fi + echo "Installing '$package' using yum..." + sudo yum install -y "$package" + return 0 + elif command -v pacman &> /dev/null; then + package=$(package_alias pacman "${package}") + if [ "$package" == "-" ] ; then + echo "Package not available on this platform" + return 1 + fi + echo "Installing '$package' using pacman..." + sudo pacman -S "$package" + return 0 + # For macOS, assume Homebrew is installed + elif command -v brew &> /dev/null; then + package=$(package_alias brew "${package}") + if [ "$package" == "-" ] ; then + echo "Package not available on this platform" + return 1 + fi + echo "Installing '$package' using Homebrew..." + brew install "$package" + return 0 + else + echo "Error: No suitable package manager found." + return 1 + fi +} + +is_sourced || { + # Get the package name from the command line argument + if [ $# -eq 0 ]; then + echo "Usage: $0 " + exit 1 + fi + + package_name="$1" + + # Call the install function + install_package "$package_name" +} diff --git a/packages.cli b/packages.cli index 38fe75e..32fb4be 100644 --- a/packages.cli +++ b/packages.cli @@ -23,24 +23,23 @@ lvm2 most msitools nasm -nvim +neovim opensc openvpn p7zip-full psmisc pwgen -python-crypto -python-dev python-hachoir-urwid python-html5lib python-nwdiag python-pip python-virtualenv -python-yara python3 -python3-scapy +python3-dev python3-pip +python3-scapy python3-virtualenv +python3-yara radare2 ripgrep scapy @@ -50,4 +49,5 @@ source-highlight sqlite3 ugrep vim-youcompleteme +yara zsh-syntax-highlighting