#!/usr/bin/env bash # @file Software Installation # @brief Installs the list of software that correlates to the software group that was chosen. # @description # This script initializes the installation process that handles the bulk of the software package installations. {{ includeTemplate "universal/profile" }} {{ includeTemplate "universal/logg" }} {{- $softwareGroup := nospace (cat "_" .host.softwareGroup) }} {{- $softwareList := list (index .softwareGroups $softwareGroup | toString | replace "[" "" | replace "]" "") | uniq | join " " }} if command -v install-program > /dev/null; then if command -v zx > /dev/null; then logg info 'Installing packages defined in .chezmoidata.yaml under the .softwareGroups key' logg info 'Installing: {{ $softwareList }}' # Ask for the administrator password upfront logg info 'A sudo password may be required for some of the installations' sudo echo "Sudo access granted." export DEBIAN_FRONTEND=noninteractive export HOMEBREW_NO_ENV_HINTS=true export HOMEBREW_NO_ANALYTICS=1 if ! command -v gcc-11; then if command -v gcc; then logg info 'gcc-11 command missing. Symlinking to gcc' sudo ln -s "$(which gcc)" /usr/local/bin/gcc-11 else logg warn 'gcc either needs to be added to the PATH or it is missing' fi fi if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" else logg warn 'No ~/.bashrc file to import before running install-program' fi export LC_ALL="en_US.UTF-8" logg info 'Printing environment variables for GO' env | grep GO logg info 'Printing environment variables for Java' env | grep JAVA env | grep SDKMAN if ! command -v unbuffer > /dev/null; then if command -v brew > /dev/null; then logg info 'Ensuring expect is installed for the unbuffer command' && brew install --quiet expect fi fi if command -v unbuffer > /dev/null; then logg info 'Running unbuffer install-program' unbuffer install-program {{ $softwareList }} else logg info 'Running install-program without unbuffer' install-program {{ $softwareList }} fi # TODO - Figure out how to configure no logs to print to ~/.ansible.log -- should be printing to the value specified in the ansible.cfg rm -rf "$HOME/.ansible.log" else logg error 'zx is not available' fi else logg error 'install-program is not in the PATH. It should be located in ~/.local/bin.' fi