Files
dotfiles/scripts/_utils.sh
2021-04-16 00:26:07 +01:00

68 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Utility functions for common tasks
# @arg $1 URL to download
# @arg $2 Path to file
function download_file {
curl \
--silent \
--show-error \
--location \
--output $2 \
$1
}
# @arg $1 URL to run
# @arg $2 binary to use
function download_run {
file=$(mktemp)
download_file $1 $file
cat $file | $2
}
# @arg $1 binary to test
function bin_in_path {
command -v $1
}
# @arg $1 apt package to test
function apt_installed {
dpkg --status $1
}
function clean {
sudo apt-get clean -qq
}
function update {
sudo apt-get update -qq
}
# @arg $1 apt package to install if not present
function install {
if ! apt_installed $1; then
sudo apt-get install -qq $1
fi
}
# Add apt repository
# @arg $1 JSON object containing the following keys
# * repository - apt repository
# * signingKey - gpg signing key url
# * components - apt components
function add_repository {
repository=$(jq -r ".repository" <<<"$1")
if ! grep -q "^deb .*${repository}" /etc/apt/sources.list; then
signingKey=$(jq -r ".signingKey" <<<"$1")
components=$(jq -r ".components" <<<"$1")
curl -fsSL $signingKey | sudo apt-key add -
source="deb [arch=$(dpkg --print-architecture)] ${repository} ${components}"
sudo add-apt-repository --yes "$source"
fi
}
# @arg $1 package list file to install
function install_file {
sudo apt-get install -qqf $(cat $1)
}