summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/colors.h (renamed from src/colors.h)0
-rw-r--r--src/lib/colors.list (renamed from src/colors.list)0
-rw-r--r--src/lib/colors.sh (renamed from src/colors.sh)0
-rw-r--r--src/lib/generate_colors.sh (renamed from src/generate_colors.sh)0
-rw-r--r--src/lib/glyphs.sh (renamed from src/glyphs.sh)0
-rw-r--r--src/lib/xilib.sh (renamed from src/xilib.sh)0
-rw-r--r--src/lib/xitui.sh (renamed from src/xitui.sh)0
-rwxr-xr-xsrc/tools/default-jvm.sh (renamed from src/default-jvm.sh)3
-rw-r--r--src/tools/xichroot.sh (renamed from src/xichroot.sh)0
-rw-r--r--src/util/hbar.c (renamed from src/hbar.c)0
-rw-r--r--src/util/parseconf.sh (renamed from src/parseconf.sh)0
-rwxr-xr-xsrc/util/shmk.sh200
-rw-r--r--src/util/shtests.sh (renamed from src/shtests.sh)3
13 files changed, 204 insertions, 2 deletions
diff --git a/src/colors.h b/src/lib/colors.h
index e7bc26d..e7bc26d 100644
--- a/src/colors.h
+++ b/src/lib/colors.h
diff --git a/src/colors.list b/src/lib/colors.list
index 0829a63..0829a63 100644
--- a/src/colors.list
+++ b/src/lib/colors.list
diff --git a/src/colors.sh b/src/lib/colors.sh
index 8e5de11..8e5de11 100644
--- a/src/colors.sh
+++ b/src/lib/colors.sh
diff --git a/src/generate_colors.sh b/src/lib/generate_colors.sh
index 6e01d58..6e01d58 100644
--- a/src/generate_colors.sh
+++ b/src/lib/generate_colors.sh
diff --git a/src/glyphs.sh b/src/lib/glyphs.sh
index b4ecccd..b4ecccd 100644
--- a/src/glyphs.sh
+++ b/src/lib/glyphs.sh
diff --git a/src/xilib.sh b/src/lib/xilib.sh
index 57dd10c..57dd10c 100644
--- a/src/xilib.sh
+++ b/src/lib/xilib.sh
diff --git a/src/xitui.sh b/src/lib/xitui.sh
index dcfaf02..dcfaf02 100644
--- a/src/xitui.sh
+++ b/src/lib/xitui.sh
diff --git a/src/default-jvm.sh b/src/tools/default-jvm.sh
index 96f4f68..56c427c 100755
--- a/src/default-jvm.sh
+++ b/src/tools/default-jvm.sh
@@ -39,6 +39,9 @@ link () {
"-l"|"--list")
ls -1 $JVM_DIR
;;
+ "-h"|"--help")
+ usage
+ ;;
*)
link $1 \
|| link $JVM_DIR/$1 \
diff --git a/src/xichroot.sh b/src/tools/xichroot.sh
index 7136e25..7136e25 100644
--- a/src/xichroot.sh
+++ b/src/tools/xichroot.sh
diff --git a/src/hbar.c b/src/util/hbar.c
index 59cf888..59cf888 100644
--- a/src/hbar.c
+++ b/src/util/hbar.c
diff --git a/src/parseconf.sh b/src/util/parseconf.sh
index d215a99..d215a99 100644
--- a/src/parseconf.sh
+++ b/src/util/parseconf.sh
diff --git a/src/util/shmk.sh b/src/util/shmk.sh
new file mode 100755
index 0000000..0174857
--- /dev/null
+++ b/src/util/shmk.sh
@@ -0,0 +1,200 @@
+#!/bin/sh
+#
+# A tool to build a single executable from a collection of shell scripts
+
+#include colors
+
+usage () {
+ cat << EOF
+${BLUE}Available Options:
+
+EOF
+}
+
+find_file () {
+ for p in $search_path; do
+ for f in $p/$1.sh $p/$1; do
+ $verbose \
+ && printf "${LIGHT_BLACK}checking: $f\n" 1>&2
+
+ [ -f "$f" ] && {
+ echo "$f"
+ return 0
+ }
+ done
+ done
+ return 1
+}
+
+parse_lines () {
+ while IFS= read -r line; do
+ case "$line" in
+ "#include "*)
+ cat $(find_file ${line#\#include}) | parse_lines
+ ;;
+ "#>"*)
+ eval ${line#'#>'}
+ ;;
+ "#!"*)
+ printf "%s\n" "$line"
+ ;;
+ "#"*);;
+ *)
+ printf "%s\n" "$line"
+ ;;
+ esac
+ done
+}
+
+build_shmk () {
+ [ -f "$1" ] || return 1
+ [ ! -z "$2" ] && output="$2"
+ [ -z "$output" ] && output=$(basename $1)
+ output=${output%.*}
+
+ $clean && {
+ rm -f $output
+ exit
+ }
+
+ $verbose && echo "building $1 to $output"
+
+ [ ! -d "${output%/*}" ] && mkdir -p "${output%/*}"
+
+ cat $1 \
+ | parse_lines > ${output} &&
+ [ ! -z ${entry_function} ] && echo "$entry_function" >> ${output}
+ chmod +x ${output}
+}
+
+interpret_shmk () {
+ . $1
+ local cmdlist=""
+
+ DIST="./dist"
+ PROGS="$PROGS $(sed -rn "s/^prog_(.*)\s*\(\)\s*\{/\1/p" $1)"
+ LIBS="$LIBS $(sed -rn "s/^lib_(.*)\s*\(\)\s*\{/\1/p" $1)"
+ CHECKS="$CHECKS $(sed -rn "s/^check_(.*)\s*\(\)\s*\{/\1/p" $1)"
+
+ shift
+ [ -z "$1" ] && set -- clean build check install
+ while [ ! -z "$1" ]; do
+ case "$1" in
+ install)
+ for prog in $PROGS; do
+ prog=$(basename $prog)
+ prog="${prog%.*}"
+ cmdlist="$cmdlist
+ install -Dm755 $DIST/$prog ${DESTDIR}/${PREFIX}/bin/$prog #Install program $prog"
+ done
+ for lib in $LIBS; do
+ lib=$(basename $lib)
+ lib="${lib%.*}"
+ cmdlist="$cmdlist
+ install -Dm755 $DIST/$lib ${DESTDIR}/${PREFIX}/lib/$lib #Install library $lib"
+ done
+ ;;
+ clean)
+ [ -d "$DIST" ] && cmdlist="$cmdlist
+ rm -r $DIST #Clean"
+ ;;
+ check)
+ for check in $CHECKS; do
+ command -v check_$check > /dev/null 2>&1 && cmdlist="$cmdlist
+ check_$check #Check $check"
+ done
+ ;;
+ *) # build all programs
+ search_path="$DIST $search_path"
+
+ for lib in $LIBS; do
+ name=$(basename $lib)
+ build_cmd=lib_$lib
+ command -v $build_cmd > /dev/null 2>&1 || {
+ build_cmd="build_shmk $lib $DIST/$name"
+ }
+ cmdlist="$cmdlist
+ $build_cmd #Build library $name"
+ done
+
+ for prog in $PROGS; do
+ name=$(basename $prog)
+ build_cmd=prog_$prog
+ command -v $build_cmd > /dev/null 2>&1 || {
+ build_cmd="build_shmk $prog $DIST/$name"
+ }
+ cmdlist="$cmdlist
+ $build_cmd #Build program $name"
+ done
+
+ # build all libs
+ ;;
+ esac
+ shift
+ done
+
+ local out len i
+ $verbose && out=/dev/stdout || out=/dev/null
+ len=$(($(echo "$cmdlist" | wc -l)-1))
+ i=-1
+ echo "$cmdlist" | while read -r cmd; do
+ i=$((i+1))
+ printf "${LIGHT_BLACK}[${LIGHT_BLUE}%s${LIGHT_BLACK}/${LIGHT_BLUE}%s${LIGHT_BLACK}] ${LIGHT_WHITE}%s${RESET}\n" "$i" "$len" "${cmd#*#}"
+ ${cmd%#*} 2>&1 > $out || {
+ printf "${RED}Error $?\n"
+ exit 1
+ }
+ done
+}
+
+search_path=".
+/usr/lib
+/usr/local/lib
+/usr/share/shmk
+"
+
+verbose=false
+clean=false
+
+while getopts ":e:I:o:chv" opt; do
+ case "${opt}" in
+ e)
+ entry_function="$OPTARG"
+ ;;
+ o)
+ output="$OPTARG"
+ ;;
+ c)
+ clean=true
+ ;;
+ I)
+ search_path="$search_path
+ $OPTARG"
+ ;;
+ v)
+ verbose=true
+ ;;
+ h)
+ usage && exit 0
+ ;;
+ esac
+done
+
+shift $((OPTIND-1))
+
+[ -z $1 ] && {
+ exit 1
+}
+
+echo "$0 $*"
+[ -f "$1" ] && shebang="$(head -1 $1)"
+case "$shebang" in
+ "#!"*"shmk"*)
+ interpret_shmk $@
+ ;;
+ *)
+ build_shmk $@
+ ;;
+esac
+
+
diff --git a/src/shtests.sh b/src/util/shtests.sh
index a899f3c..69da232 100644
--- a/src/shtests.sh
+++ b/src/util/shtests.sh
@@ -9,8 +9,7 @@
# shtests [FILE]
#
-[ -f /usr/lib/colors.sh ] && . /usr/lib/colors.sh
-[ -f colors.sh ] && . colors.sh
+#include colors
PASS="${BLUE}[ ${GREEN}PASS${BLUE} ]${RESET}"
FAIL="${BLUE}[ ${RED}FAIL${BLUE} ]${RESET}"