remove dependency on my bashrc
[iankelling.org] / setup.sh
index 59f3009bd8a45c327c05d8c5909d0e85e0a1805f..aafb0723e9c8fd466f1e4ed3570ab2be39674268 100755 (executable)
--- a/setup.sh
+++ b/setup.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -l
+#!/bin/bash
 # Copyright (C) 2016 Ian Kelling
 
 # This program is free software: you can redistribute it and/or modify
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
-script_dir=$(readlink -f "${BASH_SOURCE%/*}")
-cd "$script_dir"
+usage() {
+    cat <<EOF
+Usage: ${0##*/} [-h|--help] [DOMAIN_NAME]
+Setup dependencies, apache, and gitweb. Then call build.rb.
+
+Default DOMAIN_NAME is iankelling.org. Domain is expected to resolve
+so we can get a let's encrypt cert.
+
+-h|--help    Print help and exit.
+
+Note: Uses GNU getopt options parsing style
+EOF
+    exit $1
+}
+
+##### begin command line parsing ########
+
+temp=$(getopt -l help, h "$@") || usage 1
+eval set -- "$temp"
+while true; do
+    case $1 in
+        -h|--help) usage ;;
+        --) shift; break ;;
+        *) echo "$0: Internal error! unexpected args: $*" ; exit 1 ;;
+    esac
+done
+
+##### end command line parsing ########
+
+x="$(readlink -f "$BASH_SOURCE")"
+script_dir=${x%/*}
+cd $script_dir
 
 domain=${1:-iankelling.org} # use argument for testing site
 gitroot=/a/bin/githtml
 
+if [[ $EUID != 0 ]]; then
+    s=sudo
+fi
+
+deb8=false
+if grep -xFq 'VERSION_ID="8"' /etc/os-release; then
+    deb8=true
+fi
+
 shopt -s extglob
 
-type -P a2enmod &>/dev/null || pi apache2
-type -P sqlite3 &>/dev/null || pi sqlite3
+type -P a2enmod &>/dev/null || $s apt-get -y install apache2
+type -P sqlite3 &>/dev/null || $s apt-get -y install sqlite3
+
 
 acme-tiny-wrapper $domain
 
@@ -41,14 +81,14 @@ pkgs=(
     # gitweb pkgs
     gitweb highlight
 )
-if isdebian-stable; then
+if $deb8; then
     pkgs+=(build-essential ruby-dev)
 else
     pkgs+=(ruby-redcarpet)
 fi
 
-pi ${pkgs[@]}
-if isdebian-stable; then
+$s apt-get -y install ${pkgs[@]}
+if $deb8; then
     sudo gem install redcarpet
 fi
 chmod og+x _site/on2vote/vote.py
@@ -60,11 +100,11 @@ chmod og+x _site/on2vote/vote.py
 # It's example apache config seems to say we can use cgi or cgid,
 # and googling cgid it seems a newer faster alternative. I also
 # depend on this in my o(n^2) python script.
-sudo a2enmod cgid
+$s a2enmod cgid
 
 
 # additional settings from browsing https://git-scm.com/docs/gitweb.conf
-s dd of=/etc/gitweb.conf <<EOF
+$s dd of=/etc/gitweb.conf <<EOF
 \$feature{'highlight'}{'default'} = [1];
 # highlighting doesn't work on files without extension.
 # I noticed in terminal "highlight file" won't do it (unknown file type)
@@ -159,4 +199,5 @@ EOF
 $script_dir/gitweb-descriptions $gitroot
 
 $script_dir/build.rb
-s lnf -T $script_dir/_site /var/www/$domain/html
+$s rm -rf /var/www/$domain/html
+$s ln -sT $script_dir/_site /var/www/$domain/html