1413 lines
35 KiB
YAML
1413 lines
35 KiB
YAML
|
---
|
||
|
version: '3'
|
||
|
|
||
|
tasks:
|
||
|
act:
|
||
|
summary: |
|
||
|
## Simulate GitHub Actions Locally
|
||
|
|
||
|
[Act]((https://github.com/nektos/act) gives you the capability to test
|
||
|
GitHub Actions locally. The program allows you to programmatically run
|
||
|
steps defined in your `.github/workflows/` folder. Just like GitHub,
|
||
|
it runs the actions in Docker containers. You can then simulate
|
||
|
your GitHub Actions with a CLI:
|
||
|
|
||
|
**Example triggering pull_request flow:**
|
||
|
`act pull_request`
|
||
|
|
||
|
**Example running a specific job:**
|
||
|
`act -j test`
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: act
|
||
|
status:
|
||
|
- type act > /dev/null
|
||
|
|
||
|
allure:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: allure
|
||
|
status:
|
||
|
- type allure > /dev/null
|
||
|
|
||
|
ansifilter:
|
||
|
run: once
|
||
|
tags:
|
||
|
- update
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: ansifilter
|
||
|
status:
|
||
|
- type ansifilter > /dev/null
|
||
|
|
||
|
axel:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: axel
|
||
|
status:
|
||
|
- type axel > /dev/null
|
||
|
|
||
|
bfg:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: bfg
|
||
|
status:
|
||
|
- type bfg > /dev/null
|
||
|
|
||
|
brew:
|
||
|
run: once
|
||
|
log:
|
||
|
error: Failed to install or load Homebrew
|
||
|
start: Ensuring Homebrew is installed and available
|
||
|
success: Successfully ensured Homebrew is installed
|
||
|
cmds:
|
||
|
- task: common
|
||
|
- task: brew:{{OS}}
|
||
|
status:
|
||
|
- type brew > /dev/null || [ -n "$NO_INSTALL_HOMEBREW" ]
|
||
|
|
||
|
brew:cask:
|
||
|
run: when_changed
|
||
|
log:
|
||
|
error: Failed to install `{{.CASK}}`
|
||
|
start: Ensuring the `{{.CASK}}` Homebrew cask is installed
|
||
|
success: Successfully installed `{{.CASK}}`
|
||
|
cmds:
|
||
|
- task: brew
|
||
|
- |
|
||
|
if [ -n "$CI" ]; then echo "*************** brew cask --> {{.CASK}}"; fi
|
||
|
- brew install --cask {{.CASK}}
|
||
|
status:
|
||
|
- type {{.CASK}} &> /dev/null
|
||
|
|
||
|
brew:darwin:
|
||
|
cmds:
|
||
|
- |
|
||
|
if ! type brew &> /dev/null; then
|
||
|
if type sudo &> /dev/null && sudo -n true; then
|
||
|
echo | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
else
|
||
|
.config/log info 'Attempting to install Homebrew - you may be prompted for your `sudo` password'
|
||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
fi
|
||
|
task install:software:exit:notice:reload
|
||
|
fi
|
||
|
- task: brew:utils
|
||
|
status:
|
||
|
- type brew &> /dev/null
|
||
|
|
||
|
brew:formulae:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: '{{.BIN_NAME}}'
|
||
|
PACKAGE: '{{.PACKAGE}}'
|
||
|
|
||
|
brew:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- |
|
||
|
function ensureSource() {
|
||
|
if ! (grep "/bin/brew shellenv" < "$1" &> /dev/null); then
|
||
|
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> "$1"
|
||
|
fi
|
||
|
}
|
||
|
if ! type brew &> /dev/null; then
|
||
|
if type sudo &> /dev/null && sudo -n bash; then
|
||
|
echo | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
else
|
||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
fi
|
||
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
||
|
ensureSource "$HOME/.profile"
|
||
|
task install:software:exit:notice:reload
|
||
|
fi
|
||
|
status:
|
||
|
- type brew &> /dev/null
|
||
|
|
||
|
brew:utils:
|
||
|
run: once
|
||
|
log:
|
||
|
error: Failed to setup GNU-compatibility tools
|
||
|
start: Installing GNU-compatibility tools for macOS via Homebrew
|
||
|
success: Successfully installed GNU-compatibility tools
|
||
|
cmds:
|
||
|
- task: compatibility:coreutils
|
||
|
- task: compatibility:findutils
|
||
|
- task: compatibility:gnu-sed
|
||
|
- task: compatibility:grep
|
||
|
- task: compatibility:gnu-tar
|
||
|
- task: compatibility:gawk
|
||
|
status:
|
||
|
- '[ "{{OS}}" != "darwin" ]'
|
||
|
|
||
|
brew:windows:
|
||
|
cmds:
|
||
|
- task: common:windows
|
||
|
|
||
|
bundle:
|
||
|
deps:
|
||
|
- brew
|
||
|
cmds:
|
||
|
- brew tap Homebrew/bundle
|
||
|
|
||
|
codeclimate:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
INSTALL_TASK: '{{.TASK}}'
|
||
|
PACKAGE: codeclimate/formulae/codeclimate
|
||
|
status:
|
||
|
- type codeclimate > /dev/null
|
||
|
|
||
|
common:
|
||
|
run: once
|
||
|
log:
|
||
|
error: There was an error ensuring common system tools are present
|
||
|
start: Ensuring common system tools are present
|
||
|
success: Ensured common system tools are present
|
||
|
cmds:
|
||
|
- task: common:{{OS}}
|
||
|
|
||
|
common:darwin:
|
||
|
cmds:
|
||
|
- task: common:darwin:xcode
|
||
|
|
||
|
common:darwin:xcode:
|
||
|
vars:
|
||
|
CLT_STATUS:
|
||
|
sh: brew config | grep CLT
|
||
|
log:
|
||
|
error: Failed to run `sudo xcode-select --install`
|
||
|
start: Running `sudo xcode-select --install` to install macOS developer tools
|
||
|
success: Successfully ran `sudo xcode-select --install`
|
||
|
cmds:
|
||
|
- sudo xcode-select --install
|
||
|
status:
|
||
|
- '[ "{{.CLT_STATUS}}" != "CLT: N/A" ]'
|
||
|
|
||
|
common:linux:
|
||
|
vars:
|
||
|
LINUX_FAMILY:
|
||
|
sh: |
|
||
|
if [ -f "/etc/debian_version" ]; then
|
||
|
echo 'debian'
|
||
|
elif [ -f "/etc/redhat-release" ]; then
|
||
|
echo 'redhat'
|
||
|
elif [ -f "/etc/arch-release" ]; then
|
||
|
echo 'archlinux'
|
||
|
elif [ -f "/etc/alpine-release" ]; then
|
||
|
echo 'alpine'
|
||
|
elif type apk &> /dev/null; then
|
||
|
echo 'alpine'
|
||
|
elif type apt-get &> /dev/null; then
|
||
|
echo 'debian'
|
||
|
elif type dnf &> /dev/null || type yum &> /dev/null; then
|
||
|
echo 'redhat'
|
||
|
elif type pacman &> /dev/null; then
|
||
|
echo 'archlinux'
|
||
|
elif type yum &> /dev/null; then
|
||
|
echo 'redhat'
|
||
|
else
|
||
|
echo 'unknown'
|
||
|
fi
|
||
|
log:
|
||
|
error: Failed to ensure basic system dependencies are installed
|
||
|
start: Ensuring basic system dependencies are installed
|
||
|
success: Basic system dependencies are installed!
|
||
|
cmds:
|
||
|
- task: common:linux:{{.LINUX_FAMILY}}
|
||
|
|
||
|
common:linux:alpine:
|
||
|
vars:
|
||
|
APK_INFO:
|
||
|
sh: apk info
|
||
|
PACKAGES: bash coreutils curl file g++ grep git libc6-compat make ruby ruby-bigdecimal ruby-etc ruby-irb ruby-json ruby-test-unit sudo
|
||
|
log:
|
||
|
error: Failed to run `apk --no-cache add {{.PACKAGES}}`
|
||
|
start: Installing common dependencies by running `apk --no-cache add {{.PACKAGES}}`
|
||
|
success: Successfully installed common dependencies
|
||
|
cmds:
|
||
|
- |
|
||
|
if type sudo &> /dev/null; then
|
||
|
sudo apk --no-cache add {{.PACKAGES}}
|
||
|
else
|
||
|
apk --no-cache add {{.PACKAGES}}
|
||
|
fi
|
||
|
status:
|
||
|
- type bash &> /dev/null
|
||
|
- type curl &> /dev/null
|
||
|
- type git &> /dev/null
|
||
|
- type grep &> /dev/null
|
||
|
- type gzip &> /dev/null
|
||
|
- type make &> /dev/null
|
||
|
- type ruby &> /dev/null
|
||
|
- type sudo &> /dev/null
|
||
|
- '{{.APK_INFO}} | grep coreutils'
|
||
|
- '{{.APK_INFO}} | grep g++'
|
||
|
- '{{.APK_INFO}} | grep libc6-compat'
|
||
|
- '{{.APK_INFO}} | grep ruby-bigdecimal'
|
||
|
- '{{.APK_INFO}} | grep ruby-etc'
|
||
|
- '{{.APK_INFO}} | grep ruby-irb'
|
||
|
- '{{.APK_INFO}} | grep ruby-json'
|
||
|
- '{{.APK_INFO}} | grep ruby-test-unit'
|
||
|
|
||
|
common:linux:archlinux:
|
||
|
interactive: true
|
||
|
vars:
|
||
|
PACKAGES: base-devel bash curl file gcc git grep gzip make procps-ng ruby sudo
|
||
|
log:
|
||
|
error: Failed to run `pacman -S {{.PACKAGES}}`
|
||
|
start: Installing common software by running `pacman -S {{.PACKAGES}}`
|
||
|
success: Successfully installed common software dependencies
|
||
|
cmds:
|
||
|
- .config/log warn "Archlinux support for Homebrew is not very well documented.. if this does not work and you can get it working, please open a PR :)"
|
||
|
- |
|
||
|
if type sudo &> /dev/null; then
|
||
|
sudo pacman update
|
||
|
sudo pacman -S {{.PACKAGES}}
|
||
|
else
|
||
|
pacman update
|
||
|
pacman -S base-devel {{.PACKAGES}}
|
||
|
fi
|
||
|
status:
|
||
|
- type bash &> /dev/null
|
||
|
- type curl &> /dev/null
|
||
|
- type git &> /dev/null
|
||
|
- type grep &> /dev/null
|
||
|
- type gzip &> /dev/null
|
||
|
- type make &> /dev/null
|
||
|
- type ruby &> /dev/null
|
||
|
- type sudo &> /dev/null
|
||
|
- ldconfig -p | grep base-devel
|
||
|
- ldconfig -p | grep file
|
||
|
- ldconfig -p | grep procps-ng
|
||
|
|
||
|
common:linux:debian:
|
||
|
interactive: true
|
||
|
vars:
|
||
|
PACKAGES: bash build-essential curl file gcc git grep gzip make procps ruby sudo
|
||
|
log:
|
||
|
error: Failed to install common software with `apt-get install -y {{.PACKAGES}}`
|
||
|
start: Installing common software by running `apt-get install -y {{.PACKAGES}}`
|
||
|
success: Successfully installed common software dependencies
|
||
|
cmds:
|
||
|
- |
|
||
|
if type sudo &> /dev/null; then
|
||
|
sudo apt-get update
|
||
|
sudo apt-get install -y {{.PACKAGES}}
|
||
|
else
|
||
|
apt-get update
|
||
|
apt-get install -y {{.PACKAGES}}
|
||
|
fi
|
||
|
status:
|
||
|
- type bash &> /dev/null
|
||
|
- type curl &> /dev/null
|
||
|
- type git &> /dev/null
|
||
|
- type grep &> /dev/null
|
||
|
- type gzip &> /dev/null
|
||
|
- type make &> /dev/null
|
||
|
- type ruby &> /dev/null
|
||
|
- type sudo &> /dev/null
|
||
|
- dpkg-query -l build-essential &> /dev/null
|
||
|
- dpkg-query -l file &> /dev/null
|
||
|
- dpkg-query -l procps &> /dev/null
|
||
|
|
||
|
common:linux:redhat:
|
||
|
interactive: true
|
||
|
cmds:
|
||
|
- task: common:linux:redhat:packages
|
||
|
- task: common:linux:redhat:devtools
|
||
|
- task: common:linux:redhat:fedora
|
||
|
|
||
|
common:linux:redhat:devtools:
|
||
|
vars:
|
||
|
PACKAGE_MANAGER:
|
||
|
sh: if type dnf &> /dev/null; then echo 'dnf'; else echo 'yum'; fi
|
||
|
log:
|
||
|
error: Failed to install the "Development Tools" group with {{.PACKAGE_MANAGER}}
|
||
|
start: Installing the "Development Tools" group
|
||
|
success: Successfully installed the "Development Tools" group
|
||
|
cmds:
|
||
|
- mkdir -p "$HOME/.config/bodega"
|
||
|
- |
|
||
|
if [ ! -f "$HOME/.config/bodega/yum-devtools-check-ran" ]; then
|
||
|
if type dnf &> /dev/null; then
|
||
|
dnf groupinfo 'Development Tools' &> "$HOME/.config/bodega/dnf-devtools-check-ran"
|
||
|
else
|
||
|
yum grouplist 'Development Tools' &> "$HOME/.config/bodega/yum-devtools-check-ran"
|
||
|
fi
|
||
|
DEV_TOOLS_NOT_INSTALLED="$(grep 'No groups match' < "$HOME/.config/bodega/yum-devtools-check-ran" > /dev/null)"
|
||
|
if [[ "$DEV_TOOLS_NOT_INSTALLED" == '0' ]]; then
|
||
|
if type sudo &> /dev/null; then
|
||
|
if type dnf &> /dev/null; then
|
||
|
sudo dnf groupinfo 'Development Tools'
|
||
|
else
|
||
|
sudo yum groupinstall -y 'Development Tools'
|
||
|
fi
|
||
|
else
|
||
|
if type dnf &> /dev/null; then
|
||
|
dnf group install -y 'Development Tools'
|
||
|
else
|
||
|
yum groupinstall -y 'Development Tools'
|
||
|
fi
|
||
|
fi
|
||
|
fi
|
||
|
touch "$HOME/.config/bodega/yum-devtools-check-ran"
|
||
|
fi
|
||
|
|
||
|
common:linux:redhat:fedora:
|
||
|
vars:
|
||
|
PACKAGES: libxcrypt-compat
|
||
|
PACKAGE_MANAGER:
|
||
|
sh: if type dnf &> /dev/null; then echo 'dnf'; else echo 'yum'; fi
|
||
|
log:
|
||
|
error: Failed to install Fedora-specific common software with `{{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}`
|
||
|
start: Installing Fedora-specific common software by running `{{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}`
|
||
|
success: Successfully installed Fedora-specific common software dependencies
|
||
|
cmds:
|
||
|
- |
|
||
|
if ! rpm --quiet --query {{.PACKAGES}}; then
|
||
|
if type sudo &> /dev/null; then
|
||
|
sudo {{.PACKAGE_MANAGER}} -y install {{.PACKAGES}}
|
||
|
else
|
||
|
{{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}
|
||
|
fi
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -f /etc/os-release ] && source /etc/os-release && [[ "$ID" == "fedora" ]] && [ "$VERSION_ID" -gt "29" ]'
|
||
|
|
||
|
common:linux:redhat:packages:
|
||
|
vars:
|
||
|
PACKAGES: bash curl file git grep gzip make procps-ng ruby sudo
|
||
|
PACKAGE_MANAGER:
|
||
|
sh: if type dnf &> /dev/null; then echo 'dnf'; else echo 'yum'; fi
|
||
|
log:
|
||
|
error: Failed to install common software with `{{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}`
|
||
|
start: Installing common software by running `{{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}`
|
||
|
success: Successfully installed common software dependencies
|
||
|
cmds:
|
||
|
- |
|
||
|
if type sudo &> /dev/null; then
|
||
|
sudo {{.PACKAGE_MANAGER}} install -y {{.PACKAGES}}
|
||
|
else
|
||
|
yum install -y {{.PACKAGES}}
|
||
|
fi
|
||
|
status:
|
||
|
- type bash &> /dev/null
|
||
|
- type curl &> /dev/null
|
||
|
- type git &> /dev/null
|
||
|
- type grep &> /dev/null
|
||
|
- type gzip &> /dev/null
|
||
|
- type make &> /dev/null
|
||
|
- type ruby &> /dev/null
|
||
|
- type sudo &> /dev/null
|
||
|
- rpm -q | grep file
|
||
|
- rpm -q | grep procps-ng
|
||
|
|
||
|
common:linux:unknown:
|
||
|
log:
|
||
|
start: You are using an operating system that we do not directly support. Please make sure
|
||
|
the equivalent of `build-essential`, `curl`, `file`, `git`, and `procps` are installed.
|
||
|
cmds:
|
||
|
- .config/log warn "*** Unknown OS -> $OSTYPE ***"
|
||
|
|
||
|
common:windows:
|
||
|
log:
|
||
|
error: Windows is not supported. Try using a Windows WSL environment.
|
||
|
cmds:
|
||
|
- exit 1
|
||
|
|
||
|
compatibility:findutils:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: findutils
|
||
|
status:
|
||
|
- type gfind > /dev/null
|
||
|
|
||
|
compatibility:gawk:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gawk
|
||
|
status:
|
||
|
- type gawk > /dev/null
|
||
|
|
||
|
compatibility:gnu-sed:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gnu-sed
|
||
|
status:
|
||
|
- type gsed > /dev/null
|
||
|
|
||
|
compatibility:gnu-tar:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gnu-tar
|
||
|
status:
|
||
|
- type gtar > /dev/null
|
||
|
|
||
|
compatibility:grep:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: grep
|
||
|
status:
|
||
|
- type ggrep > /dev/null
|
||
|
|
||
|
container-structure-test:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: container-structure-test
|
||
|
status:
|
||
|
- type container-structure-test > /dev/null
|
||
|
|
||
|
coreutils:
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: coreutils
|
||
|
status:
|
||
|
- type gcp > /dev/null || [ "{{OS}}" != "darwin" ]
|
||
|
|
||
|
dasel:
|
||
|
tags:
|
||
|
- update
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: dasel
|
||
|
status:
|
||
|
- type dasel > /dev/null
|
||
|
|
||
|
deno:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: deno
|
||
|
status:
|
||
|
- type deno > /dev/null
|
||
|
|
||
|
docker:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: docker:{{OS}}
|
||
|
- task: :docker:ensure:running
|
||
|
status:
|
||
|
- type docker > /dev/null
|
||
|
|
||
|
docker-slim:
|
||
|
run: once
|
||
|
tags:
|
||
|
- docker-build
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: docker-slim
|
||
|
status:
|
||
|
- type docker-slim > /dev/null
|
||
|
|
||
|
docker:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: docker
|
||
|
- task: exit:notice:restart
|
||
|
status:
|
||
|
- type docker > /dev/null
|
||
|
|
||
|
docker:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: docker
|
||
|
- task: exit:notice:restart
|
||
|
status:
|
||
|
- type docker > /dev/null
|
||
|
|
||
|
docker:windows:
|
||
|
cmds:
|
||
|
- task: common:windows
|
||
|
|
||
|
dockle:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: dockle
|
||
|
PACKAGE: goodwithtech/r/dockle
|
||
|
status:
|
||
|
- type dockle > /dev/null
|
||
|
|
||
|
exiftool:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: exiftool
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: exiftool
|
||
|
status:
|
||
|
- type exiftool > /dev/null
|
||
|
|
||
|
exit:notice:reload:
|
||
|
cmds:
|
||
|
- .config/log warn 'Software was installed that requires a terminal session reload'
|
||
|
- .config/log warn 'Please close and re-open the terminal. Then, re-run the same command to continue if you face any issues.'
|
||
|
status:
|
||
|
- '[ -f /.dockerenv ]'
|
||
|
|
||
|
exit:notice:restart:
|
||
|
cmds:
|
||
|
- .config/log warn 'Software was installed that requires a system reboot'
|
||
|
- .config/log info 'Please reboot the system and re-run the same command after rebooting'
|
||
|
- exit 1
|
||
|
status:
|
||
|
- '[ -f /.dockerenv ]'
|
||
|
|
||
|
expect:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: expect
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: expect
|
||
|
status:
|
||
|
- type expect > /dev/null
|
||
|
|
||
|
fury:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: fury
|
||
|
PACKAGE: gemfury/tap/gemfury
|
||
|
status:
|
||
|
- type fury > /dev/null
|
||
|
|
||
|
gcc:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: gcc
|
||
|
status:
|
||
|
- type gcc > /dev/null
|
||
|
|
||
|
gcloud:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: gcloud:{{OS}}
|
||
|
status:
|
||
|
- type gcloud > /dev/null
|
||
|
|
||
|
gcloud:darwin:
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: google-cloud-sdk
|
||
|
status:
|
||
|
- type gcloud > /dev/null
|
||
|
|
||
|
gcloud:linux:
|
||
|
cmds:
|
||
|
- curl -sSL https://sdk.cloud.google.com | bash
|
||
|
|
||
|
gcloud:windows:
|
||
|
cmds:
|
||
|
- task: common:windows
|
||
|
|
||
|
gh:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gh
|
||
|
status:
|
||
|
- type gh &> /dev/null
|
||
|
|
||
|
git:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: git
|
||
|
- task: common
|
||
|
status:
|
||
|
- type git > /dev/null
|
||
|
|
||
|
git-bug:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: git-bug
|
||
|
status:
|
||
|
- type git-bug > /dev/null
|
||
|
|
||
|
git-issue:admin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- git clone https://github.com/dspinellis/git-issue.git .git-issue
|
||
|
- |
|
||
|
cd .git-issue
|
||
|
sudo make install
|
||
|
- rm -rf .git-issue
|
||
|
|
||
|
gitlab-runner:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gitlab-runner
|
||
|
status:
|
||
|
- type gitlab-runner > /dev/null
|
||
|
|
||
|
gitleaks:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gitleaks
|
||
|
status:
|
||
|
- type gitleaks > /dev/null
|
||
|
|
||
|
glab:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: glab
|
||
|
status:
|
||
|
- type glab > /dev/null
|
||
|
|
||
|
glow:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: glow
|
||
|
status:
|
||
|
- type glow > /dev/null
|
||
|
|
||
|
go:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: go:gopath
|
||
|
- task: go:goroot
|
||
|
- task: :install:profile:add
|
||
|
vars:
|
||
|
PROFILE_STRING: export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
|
||
|
- task: go:install
|
||
|
|
||
|
go:gopath:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:profile:add
|
||
|
vars:
|
||
|
PROFILE_STRING: export GOPATH="${HOME}/.local/go"
|
||
|
status:
|
||
|
- '[ -n "$GOPATH" ]'
|
||
|
|
||
|
go:goroot:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:profile:add
|
||
|
vars:
|
||
|
PROFILE_STRING: export GOROOT="$(brew --prefix golang)/libexec"
|
||
|
status:
|
||
|
- '[ -n "$GOROOT" ]'
|
||
|
|
||
|
go:install:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: go
|
||
|
|
||
|
golangci-lint:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: golangci-lint
|
||
|
|
||
|
grype:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: anchore/grype/grype
|
||
|
|
||
|
gum:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:go:gum
|
||
|
|
||
|
gzip:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: gzip
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: gzip
|
||
|
status:
|
||
|
- type gzip > /dev/null
|
||
|
|
||
|
heroku:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: heroku/brew/heroku
|
||
|
|
||
|
hey:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: hey
|
||
|
|
||
|
install:software:
|
||
|
vars:
|
||
|
BIN: '{{if .BIN_NAME}}{{.BIN_NAME}}{{else}}{{last (splitList "/" .PACKAGE)}}{{end}}'
|
||
|
run: when_changed
|
||
|
log:
|
||
|
error: Failed to install `{{.PACKAGE}}`
|
||
|
start: Ensuring the `{{.PACKAGE}}` Homebrew formulae is installed
|
||
|
success: Successfully installed `{{.PACKAGE}}`
|
||
|
cmds:
|
||
|
- task: brew
|
||
|
- |
|
||
|
if [ -n "$CI" ]; then echo "*************** brew formulae --> {{.PACKAGE}}"; fi
|
||
|
- brew install {{.PACKAGE}}
|
||
|
status:
|
||
|
- type {{.BIN}} &> /dev/null || [ -n "$NO_INSTALL_HOMEBREW" ]
|
||
|
|
||
|
jq:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: jq
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: jq
|
||
|
status:
|
||
|
- type jq > /dev/null
|
||
|
|
||
|
kvm:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:install-doctor
|
||
|
vars:
|
||
|
SOFTWARE: kvm
|
||
|
- task: exit:notice:restart
|
||
|
status:
|
||
|
- type qemu-system-x86_64 > /dev/null
|
||
|
|
||
|
node:
|
||
|
deps:
|
||
|
- common
|
||
|
- volta
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: node:install
|
||
|
status:
|
||
|
- type node &> /dev/null
|
||
|
|
||
|
node:install:
|
||
|
cmds:
|
||
|
- |
|
||
|
. "$HOME/.profile" &> /dev/null || true
|
||
|
volta install node
|
||
|
|
||
|
openssl:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: openssl
|
||
|
|
||
|
p7zip:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: 7z
|
||
|
PACKAGE: p7zip
|
||
|
|
||
|
packer:
|
||
|
run: once
|
||
|
tags:
|
||
|
- semantic-packer
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: packer
|
||
|
|
||
|
parallels:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: parallels
|
||
|
status:
|
||
|
- '[ "{{OS}}" != "darwin" ] || ! mdfind -name "Parallels Desktop.app" &> /dev/null'
|
||
|
|
||
|
pinentry:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: pinentry-mac
|
||
|
status:
|
||
|
- '[ "{{OS}}" != "darwin" ] || [ -f /usr/local/bin/pinentry-mac ]'
|
||
|
|
||
|
pipx:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
log:
|
||
|
error: Failed to ensure `pipx` is installed
|
||
|
start: Ensuring `pipx` is installed
|
||
|
success: Successfully ensured `pipx` is installed
|
||
|
cmds:
|
||
|
- task: python
|
||
|
- task: pipx:{{OS}}
|
||
|
status:
|
||
|
- type pipx > /dev/null
|
||
|
|
||
|
pipx:darwin:
|
||
|
cmds:
|
||
|
- task: brew
|
||
|
- brew install pipx
|
||
|
- pipx ensurepath
|
||
|
|
||
|
pipx:linux:
|
||
|
deps:
|
||
|
- pipx:linux:brew
|
||
|
- pipx:linux:system
|
||
|
|
||
|
pipx:linux:brew:
|
||
|
cmds:
|
||
|
- brew install pipx
|
||
|
- pipx ensurepath
|
||
|
status:
|
||
|
- '! type brew > /dev/null'
|
||
|
|
||
|
pipx:linux:system:
|
||
|
deps:
|
||
|
- python
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: python3-pip
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: python3-venv
|
||
|
- |
|
||
|
if ! type pip3; then
|
||
|
python3 -m ensurepip > /dev/null
|
||
|
fi
|
||
|
- python3 -m pip install --user pipx
|
||
|
- python3 -m pipx ensurepath
|
||
|
status:
|
||
|
- type brew > /dev/null
|
||
|
|
||
|
pipx:windows:
|
||
|
log:
|
||
|
error: These scripts are not currently compatible with Windows. Try using WSL.
|
||
|
cmds:
|
||
|
- exit 1
|
||
|
|
||
|
poetry:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: poetry:{{OS}}
|
||
|
- task: exit:notice:reload
|
||
|
status:
|
||
|
- type poetry > /dev/null || [ -n "$NO_INSTALL_POETRY" ]
|
||
|
|
||
|
poetry:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: poetry
|
||
|
|
||
|
poetry:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: poetry
|
||
|
|
||
|
poetry:windows:
|
||
|
log:
|
||
|
error: These scripts are not currently compatible with Windows. Try using WSL.
|
||
|
cmds:
|
||
|
- exit 1
|
||
|
|
||
|
python:
|
||
|
deps:
|
||
|
- common
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew
|
||
|
- task: python:{{OS}}
|
||
|
status:
|
||
|
- type python3 > /dev/null
|
||
|
|
||
|
python:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: python@3.10
|
||
|
status:
|
||
|
- type python3 > /dev/null
|
||
|
|
||
|
python:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: python@3.10
|
||
|
status:
|
||
|
- type python3 > /dev/null
|
||
|
|
||
|
python:pip:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- |
|
||
|
PIP_LOCATION="$(which pip)"
|
||
|
PIP3_LOCATION="$(which pip3)"
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
if type pip &> /dev/null && type pip3 &> /dev/null; then
|
||
|
rm "$PIP_LOCATION"
|
||
|
ln -s "$PIP3_LOCATION" "$PIP_LOCATION"
|
||
|
elif type pip3 &> /dev/null; then
|
||
|
ln -s "$PIP3_LOCATION" /usr/bin/pip
|
||
|
elif type pip &> /dev/null; then
|
||
|
ln -s "$PIP_LOCATION" /usr/bin/pip3
|
||
|
else
|
||
|
.config/log warn 'Both `pip` and `pip3` appear to be missing'
|
||
|
fi
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
if type pip &> /dev/null && type pip3 &> /dev/null; then
|
||
|
sudo rm "$PIP_LOCATION"
|
||
|
sudo ln -s "$PIP3_LOCATION" "$PIP_LOCATION"
|
||
|
elif type pip3 &> /dev/null; then
|
||
|
sudo ln -s "$PIP3_LOCATION" /usr/bin/pip
|
||
|
elif type pip &> /dev/null; then
|
||
|
sudo ln -s "$PIP_LOCATION" /usr/bin/pip3
|
||
|
else
|
||
|
.config/log warn 'Both `pip` and `pip3` appear to be missing'
|
||
|
fi
|
||
|
elif type sudo &> /dev/null; then
|
||
|
if type pip &> /dev/null && type pip3 &> /dev/null; then
|
||
|
.config/log info 'Running `sudo rm $(which pip)`'
|
||
|
sudo rm "$PIP_LOCATION"
|
||
|
sudo ln -s "$PIP3_LOCATION" "$PIP_LOCATION"
|
||
|
elif type pip3 &> /dev/null; then
|
||
|
.config/log info 'Running `sudo ln -s $(which pip3) /usr/bin/pip`'
|
||
|
sudo ln -s "$PIP3_LOCATION" /usr/bin/pip
|
||
|
elif type pip &> /dev/null; then
|
||
|
.config/log info 'Running `sudo ln -s $(which pip) /usr/bin/pip3`'
|
||
|
sudo ln -s "$PIP_LOCATION" /usr/bin/pip3
|
||
|
else
|
||
|
.config/log warn 'Both `pip` and `pip3` appear to be missing'
|
||
|
fi
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- which pip > /dev/null
|
||
|
- which pip3 > /dev/null
|
||
|
- '[ "$(which pip)" == "$(which pip3)" ]'
|
||
|
|
||
|
python:windows:
|
||
|
log:
|
||
|
error: These scripts are not currently compatible with Windows. Try using WSL.
|
||
|
cmds:
|
||
|
- exit 1
|
||
|
|
||
|
rsync:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: rsync
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: rsync
|
||
|
status:
|
||
|
- type rsync > /dev/null
|
||
|
|
||
|
rust:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: cargo
|
||
|
PACKAGE: rust
|
||
|
|
||
|
s5cmd:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: s5cmd
|
||
|
PACKAGE: peak/tap/s5cmd
|
||
|
|
||
|
sentry:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: sentry-cli
|
||
|
PACKAGE: getsentry/tools/sentry-cli
|
||
|
|
||
|
snapcraft:
|
||
|
run: once
|
||
|
tags:
|
||
|
- semantic
|
||
|
cmds:
|
||
|
- task: snapcraft:snap
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: snapcraft
|
||
|
status:
|
||
|
- type snapcraft > /dev/null
|
||
|
|
||
|
snapcraft:snap:
|
||
|
log:
|
||
|
error: Failed to run `sudo snap install snapcraft --classic`
|
||
|
start: Running `sudo snap install snapcraft --classic`
|
||
|
success: Successfully installed `snapcraft`
|
||
|
cmds:
|
||
|
- sudo snap install snapcraft --classic
|
||
|
status:
|
||
|
- '! type snap > /dev/null'
|
||
|
|
||
|
sshfs:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: system
|
||
|
vars:
|
||
|
PACKAGE: sshfs
|
||
|
|
||
|
sshpass:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: hudochenkov/sshpass/sshpass
|
||
|
|
||
|
subrepo:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: git-subrepo
|
||
|
status:
|
||
|
- git subrepo --version > /dev/null || [[ "${container:=}" == "docker" ]]
|
||
|
|
||
|
system:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .PACKAGE}}{{.PACKAGE}}{{else}}{{.CLI_ARGS}}{{end}}'
|
||
|
cmds:
|
||
|
- .config/log start 'Attempting to install `{{.PACKAGE}}` using the system package manager'
|
||
|
- |
|
||
|
if [ -f "/etc/redhat-release" ]; then
|
||
|
if type dnf &> /dev/null; then
|
||
|
task install:software:system:dnf -- '{{.PACKAGE}}'
|
||
|
else
|
||
|
task install:software:system:yum -- '{{.PACKAGE}}'
|
||
|
fi
|
||
|
elif [ -f "/etc/debian_version" ]; then
|
||
|
task install:software:system:apt-get -- '{{.PACKAGE}}'
|
||
|
elif [ -f "/etc/arch-release" ]; then
|
||
|
task install:software:system:pacman -- '{{.PACKAGE}}'
|
||
|
elif [ -f "/etc/alpine-release" ]; then
|
||
|
task install:software:system:apk -- '{{.PACKAGE}}'
|
||
|
elif type dnf &> /dev/null; then
|
||
|
task install:software:system:dnf -- '{{.PACKAGE}}'
|
||
|
elif type yum &> /dev/null; then
|
||
|
task install:software:system:yum -- '{{.PACKAGE}}'
|
||
|
elif type apt-get &> /dev/null; then
|
||
|
task install:software:system:apt-get -- '{{.PACKAGE}}'
|
||
|
elif type pacman &> /dev/null; then
|
||
|
task install:software:system:pacman -- '{{.PACKAGE}}'
|
||
|
elif type apk &> /dev/null; then
|
||
|
task install:software:system:apk -- '{{.PACKAGE}}'
|
||
|
else
|
||
|
if [ '{{OS}}' == 'darwin' ]; then
|
||
|
task install:software:system:macos -- '{{.PACKAGE}}'
|
||
|
else
|
||
|
.config/log error 'No matching system. Cannot continue with installation.' && exit 1
|
||
|
fi
|
||
|
fi
|
||
|
status:
|
||
|
- type {{.PACKAGE}} > /dev/null || [ '{{.PACKAGE}}' == 'null' ]
|
||
|
|
||
|
system:apk:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- |
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
apk --no-cache add {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
sudo apk --no-cache add {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null; then
|
||
|
.config/log info 'Running `sudo apk --no-cache add {{.PACKAGE}}`'
|
||
|
sudo apk --no-cache add {{.PACKAGE}}
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -z "$(which apk)" ]'
|
||
|
|
||
|
system:apt-get:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- |
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
apt-get update
|
||
|
apt-get install -y {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
sudo apt-get update
|
||
|
sudo apt-get install -y {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null; then
|
||
|
.config/log info 'Running `sudo apt-get update`'
|
||
|
sudo apt-get update
|
||
|
.config/log info 'Running `sudo apt-get install -y {{.PACKAGE}}`'
|
||
|
sudo apt-get install -y {{.PACKAGE}}
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -z "$(which apt-get)" ]'
|
||
|
|
||
|
system:dnf:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- |
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
dnf install {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
sudo dnf install {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null; then
|
||
|
.config/log info 'Running `sudo dnf install {{.PACKAGE}}`'
|
||
|
sudo dnf install {{.PACKAGE}}
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -z "$(which dnf)" ]'
|
||
|
|
||
|
system:macos:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- brew install {{.PACKAGE}}
|
||
|
status:
|
||
|
- '[ "{{OS}}" != "darwin" ]'
|
||
|
|
||
|
system:pacman:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- |
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
pacman -S {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
sudo pacman -S {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null; then
|
||
|
.config/log info 'Running `sudo pacman -S {{.PACKAGE}}`'
|
||
|
sudo pacman -S {{.PACKAGE}}
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -z "$(which pacman)" ]'
|
||
|
|
||
|
system:yum:
|
||
|
vars:
|
||
|
PACKAGE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}{{.PACKAGE}}{{end}}'
|
||
|
cmds:
|
||
|
- |
|
||
|
if [ "$USER" == "root" ]; then
|
||
|
yum install -y {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null && sudo -n true; then
|
||
|
sudo yum install -y {{.PACKAGE}}
|
||
|
elif type sudo &> /dev/null; then
|
||
|
.config/log info 'Running `sudo yum install -y {{.PACKAGE}}`'
|
||
|
sudo yum install -y {{.PACKAGE}}
|
||
|
else
|
||
|
.config/log warn '`sudo` unavailable and user has no permissions'
|
||
|
fi
|
||
|
status:
|
||
|
- '[ -z "$(which yum)" ]'
|
||
|
|
||
|
task:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- |
|
||
|
if [[ "$(which task)" == *'.local/bin/task' ]] && command -v brew > /dev/null && ! brew list go-task/tap/go-task; then
|
||
|
brew install go-task/tap/go-task
|
||
|
fi
|
||
|
|
||
|
tokei:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: tokei
|
||
|
|
||
|
trivy:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: aquasecurity/trivy/trivy
|
||
|
|
||
|
unbuffer:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
BIN_NAME: unbuffer
|
||
|
PACKAGE: expect
|
||
|
|
||
|
vagrant:
|
||
|
cmds:
|
||
|
- task: vagrant:{{OS}}
|
||
|
status:
|
||
|
- type vagrant > /dev/null
|
||
|
|
||
|
vagrant:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: vagrant
|
||
|
|
||
|
vagrant:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:install-doctor
|
||
|
vars:
|
||
|
SOFTWARE: vagrant
|
||
|
|
||
|
virtualbox:
|
||
|
cmds:
|
||
|
- task: virtualbox:{{OS}}
|
||
|
- task: exit:notice:restart
|
||
|
status:
|
||
|
- type vboxmanage > /dev/null
|
||
|
|
||
|
virtualbox:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: virtualbox
|
||
|
|
||
|
virtualbox:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:install-doctor
|
||
|
vars:
|
||
|
SOFTWARE: virtualbox
|
||
|
|
||
|
vmware:
|
||
|
cmds:
|
||
|
- task: vmware:{{OS}}
|
||
|
- task: exit:notice:restart
|
||
|
status:
|
||
|
- type vmrun > /dev/null
|
||
|
|
||
|
vmware:darwin:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: brew:cask
|
||
|
vars:
|
||
|
CASK: vmware-fusion
|
||
|
|
||
|
vmware:linux:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: :install:install-doctor
|
||
|
vars:
|
||
|
SOFTWARE: vmware
|
||
|
|
||
|
volta:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- .config/log info 'Installing Volta'
|
||
|
- curl https://get.volta.sh | bash
|
||
|
- |
|
||
|
. "$HOME/.profile" &> /dev/null || true
|
||
|
volta setup
|
||
|
- .config/log success 'Successfully setup Volta'
|
||
|
status:
|
||
|
- type volta > /dev/null
|
||
|
|
||
|
yarn:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: yarn
|
||
|
|
||
|
yq:
|
||
|
tags:
|
||
|
- update
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: yq
|
||
|
|
||
|
yubikey-agent:
|
||
|
run: once
|
||
|
cmds:
|
||
|
- task: install:software
|
||
|
vars:
|
||
|
PACKAGE: yubikey-agent
|