Last active
November 8, 2022 18:04
-
-
Save jessenich/7fc97570ddd91b5e88aa4c4f1298691e to your computer and use it in GitHub Desktop.
Linux Installs with Debian, Ubuntu, and Alpine Support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
if [ ! -f /etc/os-release ]; then | |
echo "Unable to determine ditribution" >&2 | |
exit 1; | |
fi | |
. /etc/os-release | |
export NAME VERSION ID PRETTY_NAME | |
COMMON_PACKAGES="bash zsh curl man-db jq wget sudo moreutils" | |
COMMON_DOC_PACKAGES="bash-doc zsh-doc" | |
case "$ID" in | |
debian || ubuntu) | |
apt-get update && apt-get upgrade -y; | |
apt-get install -y "$COMMON_PACKAGES" "$COMMON_DOC_PACKAGES"; | |
;; | |
alpine) | |
apk update && apk upgrade; | |
apk add "$COMMON_PACKAGES" shadow "$COMMON_DOC_PACKAGES" man-db-doc curl-doc jq-doc wget-doc sudo-doc moreutils-doc; | |
;; | |
*) | |
echo "Distributions not supported yet" >&2; | |
exit 1; | |
;; | |
esac | |
SUDO="$(command -v sudo || echo '')" | |
function __install_gh_cli() { | |
if command -v gh > /dev/null; then | |
echo "gh is already installed. Skipping..." | |
return 0 | |
fi | |
case "$ID" in | |
debian || ubuntu) | |
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | "$SUDO" sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ | |
&& "$SUDO" chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ | |
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | "$SUDO" tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ | |
&& "$SUDO" apt-get update \ | |
&& "$SUDO" apt-get install gh -y | |
;; | |
alpine) | |
apk update && apk add github-cli; | |
;; | |
*) | |
echo "Distributions not supported yet" >&2; | |
return 1; | |
;; | |
esac | |
} | |
function __install_docker() { | |
if command -v docker > /dev/null; then | |
echo "docker is already installed. Skipping..." | |
return 0 | |
fi | |
echo "Installing docker..." | |
curl -sSL https://get.docker.com | "$SUDO" sh | |
} | |
function __install-docker-bash-completion() { | |
if [[ -f /etc/bash_completion.d/docker ]]; then | |
echo "docker completions already installed. Skipping..." | |
return 0 | |
fi | |
echo "Installing docker-bash-completion..." | |
"$SUDO" curl -fsSL \ | |
https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker \ | |
-o /etc/bash_completion.d/docker | |
} | |
function __install-docker-zsh-completion() { | |
if [[ -f /usr/share/zsh/vendor-completions/_docker ]]; then | |
echo "docker completions already installed. Skipping..." | |
return 0 | |
fi | |
echo "Installing docker-zsh-completion..." | |
"$SUDO" curl -fsSL \ | |
https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/zsh/_docker \ | |
-o /usr/share/zsh/vendor-completions/_docker | |
} | |
function __alias-docker-compose() { | |
if ! command -v docker-compose >/dev/null && docker compose >/dev/null 2>&1; then | |
ALIAS_CMD='alias docker-compose="docker compose"'; | |
eval "$ALIAS_CMD" && \ | |
echo "$ALIAS_CMD" | \ | |
tee -a ~/.bashrc | \ | |
tee -a ~/.zshrc >/dev/null; | |
fi | |
} | |
function __install-docker-compose() { | |
__alias-docker-compose | |
if command -v docker-compose >/dev/null; then | |
echo "docker-compose is already installed. Skipping..." | |
return 0 | |
fi | |
echo "Installing docker-compose..." | |
COMPOSE_VERSION="$(curl -fsSL \ | |
-H "Accept: application/vnd.github+json" \ | |
https://api.github.com/repos/docker/compose/releases/latest | \ | |
jq .tag_name || echo -1)" | |
if [ "$COMPOSE_VERSION" = "-1" ]; then | |
echo "Failed to find latest docker compose version" >&2; | |
return -1; | |
fi | |
"$SUDO" curl -fsSL \ | |
"https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" \ | |
-o /usr/local/bin/docker-compose | |
"$SUDO" chmod +x /usr/local/bin/docker-compose | |
} | |
function __install-docker-compose-bash-completions() { | |
__alias-docker-compose | |
if command -v bash >/dev/null; then | |
echo "Setting up bash completions for docker CLI..." | |
"$SUDO" mkdir -p /etc/bash_completion.d | |
"$SUDO" curl -fsSL \ | |
https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose \ | |
-o /etc/bash_completion.d/docker-compose | |
fi | |
} | |
function __install-docker-compose-zsh-completions-no-plugins() { | |
__alias-docker-compose | |
if command -v zsh >/dev/null && command -v docker-compose; then | |
"$SUDO" curl -fsSL \ | |
https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/zsh/_docker-compose \ | |
-o /usr/share/zsh/vendor-completions/_docker-compose | |
fi | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment