1
1
Fork 0
mirror of https://github.com/tonydamage/nux-env.git synced 2025-12-11 13:24:28 +01:00
nux-env/inc/nux/meta.nuxsh.sh
root a7b55553ad Nuweb drop
Signed-off-by: root <root@tdm-cloud.(none)>
2019-03-09 12:32:11 +01:00

50 lines
1.2 KiB
Bash
Executable file

nux_meta_backends="func file"
@namespace nux.meta {
function :add-impl impl {
nux_meta_backends="$impl $nux_meta_backends"
}
function :get filename name default {
for backend in $nux_meta_backends; do
#nux.log debug "Invoking $backend nux.meta.impl.$backend.get $(declare -f nux.meta.impl.$backend.get)";
local value=$(nux.meta.impl.$backend.get "$filename" "$name");
if [ -n "$value" ] {
echo "$value"
return 0;
}
done
if [ -z "$default" ] {
return 1;
}
echo "$default"
}
}
@namespace nux.meta.impl.file {
function :get filename name {
if [ -e "$filename/.nux.meta" ] {
grep "^$name " "$filename/.nux.meta" | cut -d " " -f2-
}
}
function :add filename name value {
local meta="$filename/.nux.meta";
local metaline="$name $value";
if ! ( [ -e "$meta" ] && grep "^$metaline\$" "$meta" > /dev/null ) {
nux.log debug "Writing pin to $meta"
echo "$metaline" >> "$meta"
}
}
}
@namespace nux.meta.impl.func {
function :get filename name {
local funcspec="${name//:/.}"
nux.exec.optional "nux.meta.impl.func.$funcspec" "$filename"
}
}