commit 54d8cb2b6f4dbf70c4c50f6d18bd0435c704124b
parent 1b0ea743288135ec7aa0273a0c1775de8f36bb79
Author: Mark Feller <mfeller@recurly.com>
Date: Wed, 15 Jan 2020 14:35:40 -0700
setup debug mode
Signed-off-by: Mark Feller <mfeller@recurly.com>
Diffstat:
M | install | | | 63 | +++++++++++++-------------------------------------------------- |
1 file changed, 13 insertions(+), 50 deletions(-)
diff --git a/install b/install
@@ -16,7 +16,7 @@ log() {
# '$((${#1}%5+1))': Color the package name based on its length.
# '${2:+[m}': If the 2nd argument exists, reset text formatting.
printf '\033[1;33m%s \033[m%s\033[m %s\n' \
- "${3:-->}" "${2:+[1;36m}$1${2:+[m}" "$2" | tee "$logfile"
+ "${3:-->}" "${2:+[1;36m}$1${2:+[m}" "$2"
}
die() {
@@ -30,16 +30,6 @@ try() {
"$@" || die "Fatal: $*"
}
-prompt() {
- # Ask the user for some input.
- log "$1"
-
- # POSIX 'read' has none of the "nice" options like '-n', '-p'
- # etc etc. This is the most basic usage of 'read'.
- # '_' is used as 'dash' errors when no variable is given to 'read'.
- read -r "$2"
-}
-
trim_string() {
# Usage: trim_string " example string "
trim=${1#${1%%[![:space:]]*}}
@@ -47,45 +37,22 @@ trim_string() {
printf '%s\n' "$trim"
}
-getuserandpass() {
- # Prompts user for new username an password.
- prompt "Username?" name
- while ! echo "$name" | grep "^[a-z_][a-z0-9_-]*$" >/dev/null 2>&1; do
- prompt "Username?" name
- done
- prompt "Enter a password for that user." pass1
- prompt "Retype password." pass2
- while ! [ "$pass1" = "$pass2" ]; do
- unset pass2
- log "Passwords do not match." "" "!>"
- prompt "Enter password again." pass2
- done
-}
-
-adduserandpass() {
- # Adds user `$name` with password $pass1.
- useradd -m -g wheel -s /bin/zsh "$name" >/dev/null 2>&1 ||
- usermod -a -G wheel "$name" && mkdir -p /home/"$name" && chown "$name":wheel /home/"$name"
- echo "$name:$pass1" | chpasswd
- unset pass1 pass2
-}
-
pre_install() {
# Run any preinstall setup necessary
log "Enabling RPM Fustion..."
try dnf install -y \
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-"$(rpm -E %fedora)".noarch.rpm \
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-"$(rpm -E %fedora)".noarch.rpm \
- >> "$logfile"
+ > "$debug"
log "Enabling Fedora community repos..."
- try dnf install dnf-plugins-core >> "$logfile"
+ try dnf install dnf-plugins-core > "$debug"
log "Enabling i3-gaps community repo..."
- try dnf copr enable -y gregw/i3desktop >> "$logfile"
+ try dnf copr enable -y gregw/i3desktop > "$debug"
log "Enabling alacritty community repo..."
- try dnf copr enable -y pschyska/alacritty >> "$logfile"
+ try dnf copr enable -y pschyska/alacritty > "$debug"
}
install_package() {
@@ -93,11 +60,11 @@ install_package() {
case $2 in
G)
log "Installing go package $1..."
- try go get -u "$1" >> "$logfile"
+ try go get -u "$1" > "$debug"
;;
*)
log "Installing $1..."
- try dnf install -y "$1" >> "$logfile"
+ try dnf install -y "$1" > "$debug"
;;
esac
}
@@ -121,7 +88,7 @@ install_dots() {
# Clone and install dot files
log "Fetching dot files"
su $name
- git clone "$dotrepo" ~/.config/rice >> "$logfile" || log "Dots have already been cloned"
+ git clone "$dotrepo" ~/.config/rice > "$debug" || log "Dots have already been cloned"
(cd ~/.config/rice && stow --target="$HOME" --ignore='gitignore' dots)
exit
}
@@ -134,21 +101,17 @@ cleanup() {
main() {
# Set the git repo location for downloading dotfiles. This can be overridden
# to install custom dotfiles.
- dotrepo=${dotrepo:-"https://gitlab.com/mark.feller/rice.git"}
+ dotrepo=${RICE_REPO:-"https://gitlab.com/mark.feller/rice.git"}
# Set the package list file that contains all packages to be installed.
- pkgfile=${pkgfile:-"https://gitlab.com/mark.feller/rice/raw/master/packages"}
+ pkgfile=${RICE_PKG:-"https://gitlab.com/mark.feller/rice/raw/master/packages"}
- # Set the log output file
- logfile=${logfile:-"/var/log/rice.log"}
+ # Setup debug mode
+ debug="/dev/null"
+ [ "$RICE_DEBUG" != 1 ] || debug="/dev/stdout"
trap cleanup INT
- # Setup user
- try getuserandpass
- try adduserandpass
-
- # Install packages
pre_install
install_packages
install_dots