Add linux installer script
[fw/altos] / altosui / linux-install.sh
diff --git a/altosui/linux-install.sh b/altosui/linux-install.sh
new file mode 100644 (file)
index 0000000..c5101eb
--- /dev/null
@@ -0,0 +1,190 @@
+#!/bin/sh
+
+can_ask=y
+
+finish()
+{
+    if [ "$can_ask" = "y" ]; then
+       echo ""
+       echo -n "Press enter to continue..."
+       read foo
+    fi
+    exit $1
+}
+
+#
+# Make sure we have a terminal to talk to
+#
+
+if tty -s; then
+    :
+else
+    case "$DISPLAY" in
+       "")
+       echo 'No user input available'
+       can_ask=n
+       ;;
+       *)
+       GUESS_XTERMS="x-terminal-emulator xterm rxvt roxterm gnome-terminal dtterm eterm Eterm kvt konsole aterm"
+        for a in $GUESS_XTERMS; do
+            if type $a >/dev/null 2>&1; then
+                XTERM=$a
+                break
+            fi
+        done
+       case "$XTERM" in
+           "")
+           echo 'No terminal emulator available'
+           can_ask=n
+           ;;
+           *)
+           exec "$XTERM" -e "sh '$0'"
+           ;;
+       esac
+       ;;
+    esac
+fi
+
+#
+# Make sure we can run java
+#
+
+echo -n "Checking for java..."
+
+if java -version > /dev/null 2>&1; then
+    echo " found it."
+else
+    echo " java isn't working."
+    echo ""
+    echo "You'll need to install a java runtime system"
+    echo "on this computer before AltOS will work properly."
+    finish 1
+fi
+    
+#
+# Pick an installation target
+# 
+
+if [ '(' -d /opt -a -w /opt ')' -o '(' -d /opt/AltOS -a -w /opt/AltOS ')' ]; then
+    target_default=/opt
+else
+    target_default="$HOME"
+fi
+
+case "$#" in
+0)
+    echo -n "Installation location [default: $target_default] "
+    if [ "$can_ask" = "y" ]; then
+       read target
+    else
+       echo ""
+       target=""
+    fi
+    case "$target" in
+       "")
+       target="$target_default"
+       ;;
+    esac
+    ;;
+*)
+    target="$1"
+    ;;
+esac
+
+target_altos="$target"/AltOS
+
+echo -n "Installing to $target..."
+
+#
+# Make sure the target exists
+#
+mkdir -p "$target_altos"
+
+if [ ! -d "$target_altos" ]; then
+    echo "$target_altos does not exist and cannot be created"
+    finish 1
+fi
+
+if [ ! -w "$target_altos" ]; then
+    echo "$target_altos cannot be written"
+    finish 1
+fi
+
+#
+# Unpack the tar archive appended to the end of this script
+#
+archive_line=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0"`
+
+tail -n+$archive_line "$0" | tar xjf - -C "$target"
+
+case $? in
+0)
+    echo " done."
+    ;;
+*)
+    echo "Install failed."
+    finish 1
+    ;;
+esac
+
+#
+# Create the .desktop file by editing the paths
+#
+case "$target" in
+/*)
+    target_abs="$target"
+    ;;
+*)
+    target_abs=`pwd`/$target
+    ;;
+esac
+
+BIN="$target_abs"/AltOS
+
+desktop="$target"/AltOS/altos.desktop
+
+rm -f "$desktop"
+sed "s;%BIN%;$BIN;" "$target"/AltOS/altos.desktop.in > "$desktop"
+
+#
+# Figure out where to install the .desktop file. If we can, write it
+# to the public /usr/share/applications, otherwise, write it to the
+# per-user ~/.local/share/applications
+#
+
+public=/usr/share/applications
+private=$HOME/.local/share/applications
+apps=""
+
+if [ -d "$public" -a -w "$public" ]; then
+    apps="$public"
+else
+    mkdir -p "$private" >/dev/null 2>&1 
+    if [ -d "$private" -a -w "$private" ]; then
+       apps="$private"
+    fi
+fi
+       
+case "$apps" in
+"")
+    echo "Cannot install application icon"
+    finish 1
+    ;;
+esac
+
+echo -n "Installing .desktop file to $apps..."
+
+cp "$desktop" "$apps"
+
+case "$?" in
+0)
+    echo " done."
+    ;;
+*)
+    echo " failed."
+    ;;
+esac
+
+finish 0
+
+__ARCHIVE_BELOW__