summaryrefslogtreecommitdiffstats
path: root/elchos/root-image/krebs/lib/core
diff options
context:
space:
mode:
Diffstat (limited to 'elchos/root-image/krebs/lib/core')
-rw-r--r--elchos/root-image/krebs/lib/core80
1 files changed, 80 insertions, 0 deletions
diff --git a/elchos/root-image/krebs/lib/core b/elchos/root-image/krebs/lib/core
new file mode 100644
index 00000000..0c321525
--- /dev/null
+++ b/elchos/root-image/krebs/lib/core
@@ -0,0 +1,80 @@
+# logging
+msg() { echo "$*" >&2; }
+info() { msg "** $*"; }
+error() { msg "!! $*"; }
+## usage: die [REASON...]
+die() {
+ test $# -gt 0 && error "$*"
+ error 'Bailing out.'
+ exit 1
+}
+exists(){
+ type "$1" >/dev/null 2>/dev/null;
+}
+
+is_root(){
+ test $(id -u) -eq 0
+}
+
+defer(){
+ #close enough
+ trapstr="$1;${trapstr:-exit}"
+ trap "$trapstr" INT TERM EXIT KILL
+}
+
+esudo(){
+ # weaksauce esudo (expect sudo)
+ if ! is_root; then
+ # for the record:
+ # exec sudo -E "$0" "$@"
+ error "You are not root enough for this script"
+ exit 23 # go to hell
+ fi
+}
+
+get_hostname(){
+ # finds the current hostname
+ # if ENV HOSTN is set echo $HOSTN
+ # We try the following:
+ # $HOSTN
+ # $HOSTNAME
+ # hostname
+ # uci system.hostname
+ # /etc/hostname
+ # if everything fails, it returns 1 and prints 'unknown'
+
+ if [ -n "${HOSTN:-}" ] ; then printf "${HOSTN:-}"
+ elif [ -n "${HOSTNAME:-}" ] ;then printf "$HOSTNAME"
+ elif exists hostname ; then printf "$(hostname)"
+ elif exists uci ; then printf "$(uci get system.@system[0].hostname)"
+ elif [ -e /etc/hostname ] ;then printf "$(cat /etc/hostname)"
+ else printf "unknown"; return 1
+ fi
+ return 0
+}
+
+line_to_dot(){
+ while read line; do printf .; done;
+}
+
+get_os(){
+ # TODO: find all the release files
+ #if grep -q 'Linux' /etc/*release 2>/dev/null || grep -qe 'Linux' /etc/issue 2>/dev/null; then
+ if grep -q 'Linux' /etc/lsb-release 2>/dev/null || grep -q 'Linux' /etc/issue 2>/dev/null; then
+ echo 'linux'
+ elif test -e /etc/preferred-apps/google.xml; then
+ echo 'android'
+ elif test -e /etc/openwrt_release; then
+ echo 'openwrt'
+ elif uname -s | grep -qi 'darwin'; then
+ echo 'osx'
+ else
+ warn "Cannot determine your operating system, falling back to Linux"
+ echo 'linux'
+ fi
+}
+
+# user management
+has_user(){
+ egrep "^$1:" /etc/passwd >/dev/null
+}