68 lines
1.5 KiB
Bash
Executable File
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)
|
|
}
|