Latest
This commit is contained in:
parent
393474c294
commit
e2ef02e334
7 changed files with 130 additions and 110 deletions
|
@ -24,6 +24,7 @@ brew "gsed"
|
||||||
brew "gum"
|
brew "gum"
|
||||||
brew "htmlq"
|
brew "htmlq"
|
||||||
brew "jq"
|
brew "jq"
|
||||||
|
brew "moreutils"
|
||||||
brew "node"
|
brew "node"
|
||||||
brew "progress"
|
brew "progress"
|
||||||
brew "python@3.11"
|
brew "python@3.11"
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"gnupg2"
|
"gnupg2"
|
||||||
"jq"
|
"jq"
|
||||||
"make"
|
"make"
|
||||||
|
"moreutils"
|
||||||
"re2c"
|
"re2c"
|
||||||
"util-linux"
|
"util-linux"
|
||||||
"wget"
|
"wget"
|
||||||
|
|
|
@ -129,26 +129,26 @@ ensureBasicDeps() {
|
||||||
if command -v apt-get > /dev/null; then
|
if command -v apt-get > /dev/null; then
|
||||||
### Debian / Ubuntu
|
### Debian / Ubuntu
|
||||||
logg info 'Running sudo apt-get update' && sudo apt-get update
|
logg info 'Running sudo apt-get update' && sudo apt-get update
|
||||||
logg info 'Running sudo apt-get install -y build-essential curl expect git rsync procps file' && sudo apt-get install -y build-essential curl expect git rsync procps file
|
logg info 'Running sudo apt-get install -y build-essential curl expect git moreutils rsync procps file' && sudo apt-get install -y build-essential curl expect git moreutils rsync procps file
|
||||||
elif command -v dnf > /dev/null; then
|
elif command -v dnf > /dev/null; then
|
||||||
### Fedora
|
### Fedora
|
||||||
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo dnf install -y curl expect git rsync procps-ng file' && sudo dnf install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo dnf install -y curl expect git moreutils rsync procps-ng file' && sudo dnf install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v yum > /dev/null; then
|
elif command -v yum > /dev/null; then
|
||||||
### CentOS
|
### CentOS
|
||||||
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo yum install -y curl expect git rsync procps-ng file' && sudo yum install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo yum install -y curl expect git moreutils rsync procps-ng file' && sudo yum install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v pacman > /dev/null; then
|
elif command -v pacman > /dev/null; then
|
||||||
### Archlinux
|
### Archlinux
|
||||||
logg info 'Running sudo pacman update' && sudo pacman update
|
logg info 'Running sudo pacman update' && sudo pacman update
|
||||||
logg info 'Running sudo pacman -Syu base-devel curl expect git rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git rsync procps-ng file
|
logg info 'Running sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v zypper > /dev/null; then
|
elif command -v zypper > /dev/null; then
|
||||||
### OpenSUSE
|
### OpenSUSE
|
||||||
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
||||||
logg info 'Running sudo zypper install -y curl expect git rsync procps file' && sudo zypper install -y curl expect git rsync procps file
|
logg info 'Running sudo zypper install -y curl expect git moreutils rsync procps file' && sudo zypper install -y curl expect git moreutils rsync procps file
|
||||||
elif command -v apk > /dev/null; then
|
elif command -v apk > /dev/null; then
|
||||||
### Alpine
|
### Alpine
|
||||||
logg info 'Running sudo apk add build-base curl expect git rsync ruby procps file' && sudo apk add build-base curl expect git rsync ruby procps file
|
logg info 'Running sudo apk add build-base curl expect git moreutils rsync ruby procps file' && sudo apk add build-base curl expect git moreutils rsync ruby procps file
|
||||||
elif [ -d /Applications ] && [ -d /Library ]; then
|
elif [ -d /Applications ] && [ -d /Library ]; then
|
||||||
### macOS
|
### macOS
|
||||||
logg info "Ensuring Xcode Command Line Tools are installed.."
|
logg info "Ensuring Xcode Command Line Tools are installed.."
|
||||||
|
@ -161,7 +161,7 @@ ensureBasicDeps() {
|
||||||
fi
|
fi
|
||||||
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
||||||
### Windows
|
### Windows
|
||||||
logg info 'Running choco install -y curl expect git rsync' && choco install -y curl expect git rsync
|
logg info 'Running choco install -y curl expect git moreutils rsync' && choco install -y curl expect git moreutils rsync
|
||||||
elif command -v nix-env > /dev/null; then
|
elif command -v nix-env > /dev/null; then
|
||||||
### NixOS
|
### NixOS
|
||||||
logg warn "TODO - Add support for NixOS"
|
logg warn "TODO - Add support for NixOS"
|
||||||
|
|
|
@ -98,26 +98,26 @@ ensureBasicDeps() {
|
||||||
if command -v apt-get > /dev/null; then
|
if command -v apt-get > /dev/null; then
|
||||||
### Debian / Ubuntu
|
### Debian / Ubuntu
|
||||||
logg info 'Running sudo apt-get update' && sudo apt-get update
|
logg info 'Running sudo apt-get update' && sudo apt-get update
|
||||||
logg info 'Running sudo apt-get install -y build-essential curl expect git rsync procps file' && sudo apt-get install -y build-essential curl expect git rsync procps file
|
logg info 'Running sudo apt-get install -y build-essential curl expect git moreutils rsync procps file' && sudo apt-get install -y build-essential curl expect git moreutils rsync procps file
|
||||||
elif command -v dnf > /dev/null; then
|
elif command -v dnf > /dev/null; then
|
||||||
### Fedora
|
### Fedora
|
||||||
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo dnf install -y curl expect git rsync procps-ng file' && sudo dnf install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo dnf install -y curl expect git moreutils rsync procps-ng file' && sudo dnf install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v yum > /dev/null; then
|
elif command -v yum > /dev/null; then
|
||||||
### CentOS
|
### CentOS
|
||||||
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo yum install -y curl expect git rsync procps-ng file' && sudo yum install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo yum install -y curl expect git moreutils rsync procps-ng file' && sudo yum install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v pacman > /dev/null; then
|
elif command -v pacman > /dev/null; then
|
||||||
### Archlinux
|
### Archlinux
|
||||||
logg info 'Running sudo pacman update' && sudo pacman update
|
logg info 'Running sudo pacman update' && sudo pacman update
|
||||||
logg info 'Running sudo pacman -Syu base-devel curl expect git rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git rsync procps-ng file
|
logg info 'Running sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v zypper > /dev/null; then
|
elif command -v zypper > /dev/null; then
|
||||||
### OpenSUSE
|
### OpenSUSE
|
||||||
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
||||||
logg info 'Running sudo zypper install -y curl expect git rsync procps file' && sudo zypper install -y curl expect git rsync procps file
|
logg info 'Running sudo zypper install -y curl expect git moreutils rsync procps file' && sudo zypper install -y curl expect git moreutils rsync procps file
|
||||||
elif command -v apk > /dev/null; then
|
elif command -v apk > /dev/null; then
|
||||||
### Alpine
|
### Alpine
|
||||||
logg info 'Running sudo apk add build-base curl expect git rsync ruby procps file' && sudo apk add build-base curl expect git rsync ruby procps file
|
logg info 'Running sudo apk add build-base curl expect git moreutils rsync ruby procps file' && sudo apk add build-base curl expect git moreutils rsync ruby procps file
|
||||||
elif [ -d /Applications ] && [ -d /Library ]; then
|
elif [ -d /Applications ] && [ -d /Library ]; then
|
||||||
### macOS
|
### macOS
|
||||||
logg info "Ensuring Xcode Command Line Tools are installed.."
|
logg info "Ensuring Xcode Command Line Tools are installed.."
|
||||||
|
@ -130,7 +130,7 @@ ensureBasicDeps() {
|
||||||
fi
|
fi
|
||||||
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
||||||
### Windows
|
### Windows
|
||||||
logg info 'Running choco install -y curl expect git rsync' && choco install -y curl expect git rsync
|
logg info 'Running choco install -y curl expect git moreutils rsync' && choco install -y curl expect git moreutils rsync
|
||||||
elif command -v nix-env > /dev/null; then
|
elif command -v nix-env > /dev/null; then
|
||||||
### NixOS
|
### NixOS
|
||||||
logg warn "TODO - Add support for NixOS"
|
logg warn "TODO - Add support for NixOS"
|
||||||
|
|
|
@ -8,26 +8,26 @@ ensureBasicDeps() {
|
||||||
if command -v apt-get > /dev/null; then
|
if command -v apt-get > /dev/null; then
|
||||||
### Debian / Ubuntu
|
### Debian / Ubuntu
|
||||||
logg info 'Running sudo apt-get update' && sudo apt-get update
|
logg info 'Running sudo apt-get update' && sudo apt-get update
|
||||||
logg info 'Running sudo apt-get install -y build-essential curl expect git rsync procps file' && sudo apt-get install -y build-essential curl expect git rsync procps file
|
logg info 'Running sudo apt-get install -y build-essential curl expect git moreutils rsync procps file' && sudo apt-get install -y build-essential curl expect git moreutils rsync procps file
|
||||||
elif command -v dnf > /dev/null; then
|
elif command -v dnf > /dev/null; then
|
||||||
### Fedora
|
### Fedora
|
||||||
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo dnf install -y curl expect git rsync procps-ng file' && sudo dnf install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo dnf install -y curl expect git moreutils rsync procps-ng file' && sudo dnf install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v yum > /dev/null; then
|
elif command -v yum > /dev/null; then
|
||||||
### CentOS
|
### CentOS
|
||||||
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo yum install -y curl expect git rsync procps-ng file' && sudo yum install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo yum install -y curl expect git moreutils rsync procps-ng file' && sudo yum install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v pacman > /dev/null; then
|
elif command -v pacman > /dev/null; then
|
||||||
### Archlinux
|
### Archlinux
|
||||||
logg info 'Running sudo pacman update' && sudo pacman update
|
logg info 'Running sudo pacman update' && sudo pacman update
|
||||||
logg info 'Running sudo pacman -Syu base-devel curl expect git rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git rsync procps-ng file
|
logg info 'Running sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v zypper > /dev/null; then
|
elif command -v zypper > /dev/null; then
|
||||||
### OpenSUSE
|
### OpenSUSE
|
||||||
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
||||||
logg info 'Running sudo zypper install -y curl expect git rsync procps file' && sudo zypper install -y curl expect git rsync procps file
|
logg info 'Running sudo zypper install -y curl expect git moreutils rsync procps file' && sudo zypper install -y curl expect git moreutils rsync procps file
|
||||||
elif command -v apk > /dev/null; then
|
elif command -v apk > /dev/null; then
|
||||||
### Alpine
|
### Alpine
|
||||||
logg info 'Running sudo apk add build-base curl expect git rsync ruby procps file' && sudo apk add build-base curl expect git rsync ruby procps file
|
logg info 'Running sudo apk add build-base curl expect git moreutils rsync ruby procps file' && sudo apk add build-base curl expect git moreutils rsync ruby procps file
|
||||||
elif [ -d /Applications ] && [ -d /Library ]; then
|
elif [ -d /Applications ] && [ -d /Library ]; then
|
||||||
### macOS
|
### macOS
|
||||||
logg info "Ensuring Xcode Command Line Tools are installed.."
|
logg info "Ensuring Xcode Command Line Tools are installed.."
|
||||||
|
@ -40,7 +40,7 @@ ensureBasicDeps() {
|
||||||
fi
|
fi
|
||||||
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
||||||
### Windows
|
### Windows
|
||||||
logg info 'Running choco install -y curl expect git rsync' && choco install -y curl expect git rsync
|
logg info 'Running choco install -y curl expect git moreutils rsync' && choco install -y curl expect git moreutils rsync
|
||||||
elif command -v nix-env > /dev/null; then
|
elif command -v nix-env > /dev/null; then
|
||||||
### NixOS
|
### NixOS
|
||||||
logg warn "TODO - Add support for NixOS"
|
logg warn "TODO - Add support for NixOS"
|
||||||
|
|
|
@ -163,26 +163,26 @@ ensureBasicDeps() {
|
||||||
if command -v apt-get > /dev/null; then
|
if command -v apt-get > /dev/null; then
|
||||||
### Debian / Ubuntu
|
### Debian / Ubuntu
|
||||||
logg info 'Running sudo apt-get update' && sudo apt-get update
|
logg info 'Running sudo apt-get update' && sudo apt-get update
|
||||||
logg info 'Running sudo apt-get install -y build-essential curl expect git rsync procps file' && sudo apt-get install -y build-essential curl expect git rsync procps file
|
logg info 'Running sudo apt-get install -y build-essential curl expect git moreutils rsync procps file' && sudo apt-get install -y build-essential curl expect git moreutils rsync procps file
|
||||||
elif command -v dnf > /dev/null; then
|
elif command -v dnf > /dev/null; then
|
||||||
### Fedora
|
### Fedora
|
||||||
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
logg info 'Running sudo dnf groupinstall -y "Development Tools"' && sudo dnf groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo dnf install -y curl expect git rsync procps-ng file' && sudo dnf install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo dnf install -y curl expect git moreutils rsync procps-ng file' && sudo dnf install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v yum > /dev/null; then
|
elif command -v yum > /dev/null; then
|
||||||
### CentOS
|
### CentOS
|
||||||
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
logg info 'Running sudo yum groupinstall -y "Development Tools"' && sudo yum groupinstall -y 'Development Tools'
|
||||||
logg info 'Running sudo yum install -y curl expect git rsync procps-ng file' && sudo yum install -y curl expect git rsync procps-ng file
|
logg info 'Running sudo yum install -y curl expect git moreutils rsync procps-ng file' && sudo yum install -y curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v pacman > /dev/null; then
|
elif command -v pacman > /dev/null; then
|
||||||
### Archlinux
|
### Archlinux
|
||||||
logg info 'Running sudo pacman update' && sudo pacman update
|
logg info 'Running sudo pacman update' && sudo pacman update
|
||||||
logg info 'Running sudo pacman -Syu base-devel curl expect git rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git rsync procps-ng file
|
logg info 'Running sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file' && sudo pacman -Syu base-devel curl expect git moreutils rsync procps-ng file
|
||||||
elif command -v zypper > /dev/null; then
|
elif command -v zypper > /dev/null; then
|
||||||
### OpenSUSE
|
### OpenSUSE
|
||||||
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
logg info 'Running sudo zypper install -yt pattern devel_basis' && sudo zypper install -yt pattern devel_basis
|
||||||
logg info 'Running sudo zypper install -y curl expect git rsync procps file' && sudo zypper install -y curl expect git rsync procps file
|
logg info 'Running sudo zypper install -y curl expect git moreutils rsync procps file' && sudo zypper install -y curl expect git moreutils rsync procps file
|
||||||
elif command -v apk > /dev/null; then
|
elif command -v apk > /dev/null; then
|
||||||
### Alpine
|
### Alpine
|
||||||
logg info 'Running sudo apk add build-base curl expect git rsync ruby procps file' && sudo apk add build-base curl expect git rsync ruby procps file
|
logg info 'Running sudo apk add build-base curl expect git moreutils rsync ruby procps file' && sudo apk add build-base curl expect git moreutils rsync ruby procps file
|
||||||
elif [ -d /Applications ] && [ -d /Library ]; then
|
elif [ -d /Applications ] && [ -d /Library ]; then
|
||||||
### macOS
|
### macOS
|
||||||
logg info "Ensuring Xcode Command Line Tools are installed.."
|
logg info "Ensuring Xcode Command Line Tools are installed.."
|
||||||
|
@ -195,7 +195,7 @@ ensureBasicDeps() {
|
||||||
fi
|
fi
|
||||||
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
elif [[ "$OSTYPE" == 'cygwin' ]] || [[ "$OSTYPE" == 'msys' ]] || [[ "$OSTYPE" == 'win32' ]]; then
|
||||||
### Windows
|
### Windows
|
||||||
logg info 'Running choco install -y curl expect git rsync' && choco install -y curl expect git rsync
|
logg info 'Running choco install -y curl expect git moreutils rsync' && choco install -y curl expect git moreutils rsync
|
||||||
elif command -v nix-env > /dev/null; then
|
elif command -v nix-env > /dev/null; then
|
||||||
### NixOS
|
### NixOS
|
||||||
logg warn "TODO - Add support for NixOS"
|
logg warn "TODO - Add support for NixOS"
|
||||||
|
@ -496,6 +496,9 @@ ensureHomebrewDeps() {
|
||||||
if ! command -v gtimeout > /dev/null; then
|
if ! command -v gtimeout > /dev/null; then
|
||||||
brew install --quiet coreutils
|
brew install --quiet coreutils
|
||||||
fi
|
fi
|
||||||
|
if ! command -v ts > /dev/null; then
|
||||||
|
brew install --quiet moreutils
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -546,58 +549,65 @@ initChezmoiAndPrompt() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# @description Run `chezmoi apply` and enable verbose mode if the `DEBUG_MODE` or `DEBUG` environment variable is set to true
|
# @description Save the log of the provision process to `$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log` and add the Chezmoi
|
||||||
configureDebugMode() {
|
# `--force` flag if the `HEADLESS_INSTALL` variable is set to `true`.
|
||||||
|
runChezmoi() {
|
||||||
|
### Set up logging
|
||||||
|
mkdir -p "$HOME/.local/var/log/install.doctor"
|
||||||
|
LOG_FILE="$HOME/.local/var/log/install.doctor/chezmoi-apply-$(date +%s).log"
|
||||||
|
|
||||||
|
### Apply command flags
|
||||||
|
FORCE_MODIFIER=""
|
||||||
|
if [ -n "$HEADLESS_INSTALL" ]; then
|
||||||
|
logg info 'Running chezmoi apply forcefully because HEADLESS_INSTALL is set'
|
||||||
|
FORCE_MODIFIER="--force"
|
||||||
|
fi
|
||||||
|
KEEP_GOING_MODIFIER=""
|
||||||
|
if [ -n "$KEEP_GOING" ]; then
|
||||||
|
logg info 'Instructing chezmoi to keep going in the case of errors because KEEP_GOING is set'
|
||||||
|
KEEP_GOING_MODIFIER="-k"
|
||||||
|
fi
|
||||||
|
DEBUG_MODIFIER=""
|
||||||
if [ -n "$DEBUG_MODE" ] || [ -n "$DEBUG" ]; then
|
if [ -n "$DEBUG_MODE" ] || [ -n "$DEBUG" ]; then
|
||||||
logg info "Either DEBUG_MODE or DEBUG environment variables were set so Chezmoi will be run in debug mode"
|
logg info "Either DEBUG_MODE or DEBUG environment variables were set so Chezmoi will be run in debug mode"
|
||||||
export DEBUG_MODIFIER="-vvvvv"
|
export DEBUG_MODIFIER="-vvvvv"
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
# @description Save the log of the provision process to `$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log` and add the Chezmoi
|
### Run chezmoi apply
|
||||||
# `--force` flag if the `HEADLESS_INSTALL` variable is set to `true`.
|
if command -v unbuffer > /dev/null; then
|
||||||
runChezmoi() {
|
if command -v caffeinate > /dev/null; then
|
||||||
mkdir -p "$HOME/.local/var/log/install.doctor"
|
logg info "Running: caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
LOG_FILE="$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log"
|
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
if [ "$HEADLESS_INSTALL" = 'true' ]; then
|
|
||||||
logg info 'Running chezmoi apply forcefully'
|
|
||||||
if command -v unbuffer > /dev/null; then
|
|
||||||
if command -v caffeinate > /dev/null; then
|
|
||||||
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
else
|
|
||||||
unbuffer -p chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if command -v caffeinate > /dev/null; then
|
logg info "Running: unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
caffeinate chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
else
|
|
||||||
chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
logg info "Unbuffering log file $LOG_FILE"
|
||||||
|
UNBUFFER_TMP="$(mktemp)"
|
||||||
|
unbuffer cat "$LOG_FILE" > "$UNBUFFER_TMP"
|
||||||
|
mv -f "$UNBUFFER_TMP" "$LOG_FILE"
|
||||||
else
|
else
|
||||||
logg info 'Running chezmoi apply'
|
if command -v caffeinate > /dev/null; then
|
||||||
if command -v unbuffer > /dev/null; then
|
logg info "Running: caffeinate chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
if command -v caffeinate > /dev/null; then
|
caffeinate chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
else
|
|
||||||
unbuffer -p chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if command -v caffeinate > /dev/null; then
|
logg info "Running: chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
caffeinate chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
else
|
|
||||||
chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
### Handle exit codes in log
|
||||||
|
if cat "$LOG_FILE" | grep 'chezmoi: exit status 140' > /dev/null; then
|
||||||
|
logg info "Chezmoi signalled that a reboot is necessary to apply a system update"
|
||||||
|
logg info "Running softwareupdate with the reboot flag"
|
||||||
|
sudo softwareupdate -i -a -R --agree-to-license && exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Handle actual process exit code
|
||||||
if [ -n "$CHEZMOI_EXIT_CODE" ]; then
|
if [ -n "$CHEZMOI_EXIT_CODE" ]; then
|
||||||
if [ "$CHEZMOI_EXIT_CODE" = "140" ]; then
|
logg error "Chezmoi encountered an error and exitted with an exit code of $CHEZMOI_EXIT_CODE"
|
||||||
logg info "Chezmoi signalled that a reboot is necessary to apply a system update"
|
else
|
||||||
logg info "Running softwareupdate with the reboot flag"
|
logg success 'Finished provisioning the system'
|
||||||
sudo softwareupdate -i -a -R --agree-to-license && exit
|
|
||||||
else
|
|
||||||
logg error "Chezmoi encountered an error and exitted with an exit code of $CHEZMOI_EXIT_CODE"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -634,7 +644,6 @@ provisionLogic() {
|
||||||
logg info "Handling Qubes dom0 logic (if applicable)" && handleQubesDom0
|
logg info "Handling Qubes dom0 logic (if applicable)" && handleQubesDom0
|
||||||
logg info "Cloning / updating source repository" && cloneChezmoiSourceRepo
|
logg info "Cloning / updating source repository" && cloneChezmoiSourceRepo
|
||||||
logg info "Handling pre-provision logic" && initChezmoiAndPrompt
|
logg info "Handling pre-provision logic" && initChezmoiAndPrompt
|
||||||
logg info "Handling debug mode if DEBUG or DEBUG_MODE are defined" && configureDebugMode
|
|
||||||
logg info "Running the Chezmoi provisioning" && runChezmoi
|
logg info "Running the Chezmoi provisioning" && runChezmoi
|
||||||
logg info "Ensuring temporary passwordless sudo is removed" && removePasswordlessSudo
|
logg info "Ensuring temporary passwordless sudo is removed" && removePasswordlessSudo
|
||||||
logg info "Handling post-provision logic" && postProvision
|
logg info "Handling post-provision logic" && postProvision
|
||||||
|
|
|
@ -259,6 +259,9 @@ ensureHomebrewDeps() {
|
||||||
if ! command -v gtimeout > /dev/null; then
|
if ! command -v gtimeout > /dev/null; then
|
||||||
brew install --quiet coreutils
|
brew install --quiet coreutils
|
||||||
fi
|
fi
|
||||||
|
if ! command -v ts > /dev/null; then
|
||||||
|
brew install --quiet moreutils
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,58 +312,65 @@ initChezmoiAndPrompt() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# @description Run `chezmoi apply` and enable verbose mode if the `DEBUG_MODE` or `DEBUG` environment variable is set to true
|
# @description Save the log of the provision process to `$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log` and add the Chezmoi
|
||||||
configureDebugMode() {
|
# `--force` flag if the `HEADLESS_INSTALL` variable is set to `true`.
|
||||||
|
runChezmoi() {
|
||||||
|
### Set up logging
|
||||||
|
mkdir -p "$HOME/.local/var/log/install.doctor"
|
||||||
|
LOG_FILE="$HOME/.local/var/log/install.doctor/chezmoi-apply-$(date +%s).log"
|
||||||
|
|
||||||
|
### Apply command flags
|
||||||
|
FORCE_MODIFIER=""
|
||||||
|
if [ -n "$HEADLESS_INSTALL" ]; then
|
||||||
|
logg info 'Running chezmoi apply forcefully because HEADLESS_INSTALL is set'
|
||||||
|
FORCE_MODIFIER="--force"
|
||||||
|
fi
|
||||||
|
KEEP_GOING_MODIFIER=""
|
||||||
|
if [ -n "$KEEP_GOING" ]; then
|
||||||
|
logg info 'Instructing chezmoi to keep going in the case of errors because KEEP_GOING is set'
|
||||||
|
KEEP_GOING_MODIFIER="-k"
|
||||||
|
fi
|
||||||
|
DEBUG_MODIFIER=""
|
||||||
if [ -n "$DEBUG_MODE" ] || [ -n "$DEBUG" ]; then
|
if [ -n "$DEBUG_MODE" ] || [ -n "$DEBUG" ]; then
|
||||||
logg info "Either DEBUG_MODE or DEBUG environment variables were set so Chezmoi will be run in debug mode"
|
logg info "Either DEBUG_MODE or DEBUG environment variables were set so Chezmoi will be run in debug mode"
|
||||||
export DEBUG_MODIFIER="-vvvvv"
|
export DEBUG_MODIFIER="-vvvvv"
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
# @description Save the log of the provision process to `$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log` and add the Chezmoi
|
### Run chezmoi apply
|
||||||
# `--force` flag if the `HEADLESS_INSTALL` variable is set to `true`.
|
if command -v unbuffer > /dev/null; then
|
||||||
runChezmoi() {
|
if command -v caffeinate > /dev/null; then
|
||||||
mkdir -p "$HOME/.local/var/log/install.doctor"
|
logg info "Running: caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
LOG_FILE="$HOME/.local/var/log/install.doctor/install.doctor.$(date +%s).log"
|
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
if [ "$HEADLESS_INSTALL" = 'true' ]; then
|
|
||||||
logg info 'Running chezmoi apply forcefully'
|
|
||||||
if command -v unbuffer > /dev/null; then
|
|
||||||
if command -v caffeinate > /dev/null; then
|
|
||||||
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
else
|
|
||||||
unbuffer -p chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if command -v caffeinate > /dev/null; then
|
logg info "Running: unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
caffeinate chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
unbuffer -p chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
else
|
|
||||||
chezmoi apply $DEBUG_MODIFIER -k --force 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
logg info "Unbuffering log file $LOG_FILE"
|
||||||
|
UNBUFFER_TMP="$(mktemp)"
|
||||||
|
unbuffer cat "$LOG_FILE" > "$UNBUFFER_TMP"
|
||||||
|
mv -f "$UNBUFFER_TMP" "$LOG_FILE"
|
||||||
else
|
else
|
||||||
logg info 'Running chezmoi apply'
|
if command -v caffeinate > /dev/null; then
|
||||||
if command -v unbuffer > /dev/null; then
|
logg info "Running: caffeinate chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
if command -v caffeinate > /dev/null; then
|
caffeinate chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
caffeinate unbuffer -p chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
else
|
|
||||||
unbuffer -p chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if command -v caffeinate > /dev/null; then
|
logg info "Running: chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER"
|
||||||
caffeinate chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
chezmoi apply $DEBUG_MODIFIER $KEEP_GOING_MODIFIER $FORCE_MODIFIER 2>&1 | tee /dev/tty | ts '[%Y-%m-%d %H:%M:%S]' > "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
||||||
else
|
|
||||||
chezmoi apply $DEBUG_MODIFIER -k 2>&1 | tee "$LOG_FILE" || CHEZMOI_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
### Handle exit codes in log
|
||||||
|
if cat "$LOG_FILE" | grep 'chezmoi: exit status 140' > /dev/null; then
|
||||||
|
logg info "Chezmoi signalled that a reboot is necessary to apply a system update"
|
||||||
|
logg info "Running softwareupdate with the reboot flag"
|
||||||
|
sudo softwareupdate -i -a -R --agree-to-license && exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
### Handle actual process exit code
|
||||||
if [ -n "$CHEZMOI_EXIT_CODE" ]; then
|
if [ -n "$CHEZMOI_EXIT_CODE" ]; then
|
||||||
if [ "$CHEZMOI_EXIT_CODE" = "140" ]; then
|
logg error "Chezmoi encountered an error and exitted with an exit code of $CHEZMOI_EXIT_CODE"
|
||||||
logg info "Chezmoi signalled that a reboot is necessary to apply a system update"
|
else
|
||||||
logg info "Running softwareupdate with the reboot flag"
|
logg success 'Finished provisioning the system'
|
||||||
sudo softwareupdate -i -a -R --agree-to-license && exit
|
|
||||||
else
|
|
||||||
logg error "Chezmoi encountered an error and exitted with an exit code of $CHEZMOI_EXIT_CODE"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +407,6 @@ provisionLogic() {
|
||||||
logg info "Handling Qubes dom0 logic (if applicable)" && handleQubesDom0
|
logg info "Handling Qubes dom0 logic (if applicable)" && handleQubesDom0
|
||||||
logg info "Cloning / updating source repository" && cloneChezmoiSourceRepo
|
logg info "Cloning / updating source repository" && cloneChezmoiSourceRepo
|
||||||
logg info "Handling pre-provision logic" && initChezmoiAndPrompt
|
logg info "Handling pre-provision logic" && initChezmoiAndPrompt
|
||||||
logg info "Handling debug mode if DEBUG or DEBUG_MODE are defined" && configureDebugMode
|
|
||||||
logg info "Running the Chezmoi provisioning" && runChezmoi
|
logg info "Running the Chezmoi provisioning" && runChezmoi
|
||||||
logg info "Ensuring temporary passwordless sudo is removed" && removePasswordlessSudo
|
logg info "Ensuring temporary passwordless sudo is removed" && removePasswordlessSudo
|
||||||
logg info "Handling post-provision logic" && postProvision
|
logg info "Handling post-provision logic" && postProvision
|
||||||
|
|
Loading…
Reference in a new issue