summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2019-05-27 18:19:24 +0200
committerSimon Rettberg2019-05-27 18:19:24 +0200
commita92edd5f723d56a377905c91bb6321790d0d3a98 (patch)
tree583fd732c5cb9763b743b4206b9e722c6427e5d2
parentAdd download and download_retry (diff)
downloadslx-tools-a92edd5f723d56a377905c91bb6321790d0d3a98.tar.gz
slx-tools-a92edd5f723d56a377905c91bb6321790d0d3a98.tar.xz
slx-tools-a92edd5f723d56a377905c91bb6321790d0d3a98.zip
Add String and XML helpers
-rwxr-xr-xmake.sh5
-rw-r--r--modules/str.inc26
-rw-r--r--modules/xml.inc6
3 files changed, 37 insertions, 0 deletions
diff --git a/make.sh b/make.sh
index a8a4760..5f32249 100755
--- a/make.sh
+++ b/make.sh
@@ -19,6 +19,11 @@ for file in modules/**/*.inc; do
name="${name%.inc}"
[[ "$name" =~ ^[a-z0-9_]+$ ]] || continue
echo " * Handling $file"
+ if ! bash -n "$file"; then
+ echo "FILE CONTAINS ERRORS; ABORTING"
+ rm -f -- slx-tools
+ exit 1
+ fi
for var in $( grep -oP '^[a-z0-9_]+\s*\(\)' "$file" | grep -oE '^[a-z0-9_]+' ); do
echo "Found $var"
DEFS+="$var() { . \$BASE/$file; $var "'"$@"; }\n'
diff --git a/modules/str.inc b/modules/str.inc
new file mode 100644
index 0000000..6179033
--- /dev/null
+++ b/modules/str.inc
@@ -0,0 +1,26 @@
+#!/bin/ash
+
+str_trim() {
+ if [ $# = 0 ]; then
+ tr '\n' '\r' | sed -r 's/^[[:space:]]+//;s/[[:space:]]+$//' | tr '\r' '\n'
+ else
+ printf "%s" "$*" | tr '\n' '\r' | sed -r 's/^[[:space:]]+//;s/[[:space:]]+$//' | tr '\r' '\n'
+ fi
+}
+
+str_upper() {
+ if [ $# = 0 ]; then
+ tr 'a-z' 'A-Z'
+ else
+ printf "%s" "$*" | tr 'a-z' 'A-Z'
+ fi
+}
+
+str_lower() {
+ if [ $# = 0 ]; then
+ tr 'A-Z' 'a-z'
+ else
+ printf "%s" "$*" | tr 'A-Z' 'a-z'
+ fi
+}
+
diff --git a/modules/xml.inc b/modules/xml.inc
new file mode 100644
index 0000000..4fa4b84
--- /dev/null
+++ b/modules/xml.inc
@@ -0,0 +1,6 @@
+#!/bin/ash
+
+xml_get() {
+ xmlstarlet sel --text --encode utf-8 --template --value-of "$1" "$2"
+}
+