mirror of
https://github.com/tonydamage/nux-env.git
synced 2025-12-11 13:24:28 +01:00
50 lines
1.2 KiB
Bash
Executable file
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"
|
|
}
|
|
}
|