summaryrefslogtreecommitdiff
path: root/bos-args.sh
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@broadbean.com>2023-07-26 14:01:38 +0100
committerGianni Ceccarelli <gianni.ceccarelli@broadbean.com>2023-07-26 14:01:38 +0100
commit11ee354df339d02a2940cfc91701836798bfe83a (patch)
tree72eedc8bce5a75e89781683b939286ca9f003e0a /bos-args.sh
parentvery rough parameter parser (diff)
downloadbash-object-system-11ee354df339d02a2940cfc91701836798bfe83a.tar.gz
bash-object-system-11ee354df339d02a2940cfc91701836798bfe83a.tar.bz2
bash-object-system-11ee354df339d02a2940cfc91701836798bfe83a.zip
simpler syntax for assoc assginments
Diffstat (limited to 'bos-args.sh')
-rw-r--r--bos-args.sh7
1 files changed, 4 insertions, 3 deletions
diff --git a/bos-args.sh b/bos-args.sh
index e0f0729..69c27d8 100644
--- a/bos-args.sh
+++ b/bos-args.sh
@@ -37,14 +37,15 @@ case \"\$1\" in
parser_result_var+="-${argname}) $argassign; shift 2 ;;
"
elif [[ "${argtype["$argname"]}" == assoc ]]; then
- argassign="${argassign//\$\{key/\$\{2}"
- argassign="${argassign//\$\{value/\$\{3}"
+ argassign="${argassign//\$\{key/\$\{__args_key}"
+ argassign="${argassign//\$\{value/\$\{__args_value}"
- parser_result_var+="-${argname}) $argassign; shift 3 ;;
+ parser_result_var+="-${argname}) IFS='=' read -s __args_key __args_value <<<\"\$2\"; $argassign; shift 2 ;;
"
fi
done
+ # ignore anything else!
parser_result_var+="*) shift ;;
esac
done