summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid T. Sadler <davidtsadler@googlemail.com>2020-06-12 11:43:18 +0100
committerDavid T. Sadler <davidtsadler@googlemail.com>2020-06-12 11:43:18 +0100
commit06c1c66cb043eff7cd59941e66f07408eecb976c (patch)
tree2a28e0f4fe1ac631792e55cf6f0accc857c47a17
parente52c152b4f1830c659e59d79788f32727a360655 (diff)
Simplify installing software from GitHub
Github repositories are public so don't need to prompt for private SSH keys when creating a user. Besides it would be difficult to manualy enter these keys via the dialog.
-rw-r--r--gohan.sh62
-rw-r--r--packages.csv21
2 files changed, 26 insertions, 57 deletions
diff --git a/gohan.sh b/gohan.sh
index 388fc72..317db10 100644
--- a/gohan.sh
+++ b/gohan.sh
@@ -15,7 +15,7 @@ esac done
### FUNCTIONS ###
-install_package() {
+install_from_pacman() {
pacman --noconfirm --needed -S "$1" >/dev/null 2>&1
}
@@ -57,63 +57,34 @@ add_user() {
# Adds user `$name` with password $pass1.
dialog --infobox "Adding user \"$name\"..." 4 50
useradd -m -s /bin/bash "$name" >/dev/null 2>&1 || mkdir -p /home/"$name" && chown "$name":"$name" /home/"$name"
+ [ ! -d "/home/$name/.local/src" ] && mkdir -p "/home/$name/.local/src" && chown -R "$name":"$name" /home/"$name/.local"
echo "$name:$pass1" | chpasswd
unset pass1 pass2
}
-get_github_ssh_keys() {
- # Prompts user for private and public ssh keys for connecting to GitHub.
- touch /tmp/emptyfile
- dialog --title "SSH" --msgbox "You will be prompted to enter the private SSH key used to connect to GitHub" 10 60
- githubPrivateKey=$(dialog --editbox /tmp/emptyfile 60 60 3>&1 1>&2 2>&3 3>&1) || exit
- dialog --title "SSH" --msgbox "You will know be prompted to enter the public SSH key used to connect to GitHub" 10 60
- githubPublicKey=$(dialog --editbox /tmp/emptyfile 10 60 3>&1 1>&2 2>&3 3>&1)
- rm /tmp/emptyfile
-}
-
-save_github_ssh_keys() {
- [ ! -d "/home/$name/.ssh" ] && mkdir -p "/home/$name/.ssh/github.com"
- echo "$githubPrivateKey" > "/home/$name/.ssh/github.com/id_rsa"
- echo "$githubPublicKey" > "/home/$name/.ssh/github.com/id_rsa.pub"
- cat << EOF > "/home/$name/.ssh/config"
-Host github.com
- IdentityFile /home/${name}/.ssh/github.com/id_rsa
-EOF
- chown -R "$name":"$name" "/home/$name/.ssh"
- chmod 700 "/home/$name/.ssh"
- chmod 644 "/home/$name/.ssh/config"
- chmod 700 "/home/$name/.ssh/github.com"
- chmod 600 "/home/$name/.ssh/github.com/id_rsa"
- chmod 644 "/home/$name/.ssh/github.com/id_rsa.pub"
-}
-
-maininstall() {
- dialog --title "GOHAN Installation" --infobox "Installing \`$1\` ($n of $total). $1 $2" 5 70
- install_package "$1"
-}
-
-install_packages() {
+install_software() {
([ -f "$packages" ] && cp "$packages" /tmp/packages.csv) || curl -Ls "$packages" > /tmp/packages.csv
total=$(wc -l < /tmp/packages.csv)
- while IFS=, read -r program comment; do
+ while IFS=, read -r tag program comment; do
n=$((n+1))
echo "$comment" | grep "^\".*\"$" >/dev/null 2>&1 && comment="$(echo "$comment" | sed "s/\(^\"\|\"$\)//g")"
- maininstall "$program" "$comment"
+ case "$tag" in
+ "G") install_from_github "$program" "$comment" ;;
+ *) install_package "$program" "$comment" ;;
+ esac
done < /tmp/packages.csv
}
-install_github_repositories() {
- [ ! -d "/home/$name/.local/src" ] && mkdir -p "/home/$name/.local/src" && chown -R "$name":"$name" /home/"$name/.local"
- install_from_github git@github.com:davidtsadler/st.git
- install_from_github git@github.com:davidtsadler/dwm.git
- install_from_github git@github.com:davidtsadler/dmenu.git
+install_package() {
+ dialog --title "GOHAN Installation" --infobox "Installing \`$1\` ($n of $total). $1 $2" 5 70
+ install_from_pacman "$1"
}
install_from_github() {
progname="$(basename "$1" .git)"
repodir="/home/$name/.local/src"
dir="$repodir/$progname"
- dialog --title "GOHAN Installation" --infobox "Installing \`$progname\` via \`git\` and \`make\`." 5 70
+ dialog --title "GOHAN Installation" --infobox "Installing \`$progname\` ($n of $total) via \`git\` and \`make\`. $(basename "$1") $2" 5 70
sudo -u "$name" git clone --depth 1 "$1" "$dir" >/dev/null 2>&1
cd "$dir" || exit
sudo -u "$name" make clean install >/dev/null 2>&1
@@ -121,7 +92,7 @@ install_from_github() {
### THE ACTUAL SCRIPT ###
-install_package dialog || error "Are you sure you're running this as the root user and have an internet connection?"
+install_from_pacman dialog || error "Are you sure you're running this as the root user and have an internet connection?"
welcome_msg || error "User exited."
@@ -133,11 +104,6 @@ preinstall_msg || error "User exited."
add_user || error "Error adding username and/or password."
-get_github_ssh_keys || error "Error getting the GitHub SSH keys."
-save_github_ssh_keys || error "Error saving the GitHub SSH keys."
-
-install_packages
-
-install_github_repositories
+install_software
clear
diff --git a/packages.csv b/packages.csv
index 1c25966..806617c 100644
--- a/packages.csv
+++ b/packages.csv
@@ -1,9 +1,12 @@
-#Name, Description
-base-devel,is needed to compile software
-git,is needed to install software from git repositories
-libx11,is required to compile some software
-libxft,is required to compile some software
-sudo,allows root to install software as a different user
-terminus-font,is a monospace font that can be used in st.
-xorg-server,is the display server
-xorg-xinit,will allow us to start the display server
+#Tag, Name, Description
+,base-devel,is needed to compile software
+,git,is needed to install software from git repositories
+,libx11,is required to compile some software
+,libxft,is required to compile some software
+,sudo,allows root to install software as a different user
+,terminus-font,is a monospace font that can be used in st.
+,xorg-server,is the display server
+,xorg-xinit,will allow us to start the display server
+G,https://github.com:davidtsadler/dmenu.git,is a dynamic menu
+G,https://github.com:davidtsadler/dwm.git,is a dynamic window manager
+G,https://github.com:davidtsadler/st.git,is a simple terminal