refactor: harden diagnostics and consolidate runtime code
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
require_template_placeholder() {
|
||||
file="$1"
|
||||
placeholder="$2"
|
||||
if [ -z "$placeholder" ]; then
|
||||
echo "ERROR: template placeholder must not be empty" >&2
|
||||
return 1
|
||||
fi
|
||||
if ! BEE_TEMPLATE_PLACEHOLDER="$placeholder" awk '
|
||||
index($0, ENVIRON["BEE_TEMPLATE_PLACEHOLDER"]) { found=1 }
|
||||
END { exit found ? 0 : 1 }
|
||||
' "$file"; then
|
||||
echo "ERROR: required placeholder $placeholder is missing from $file" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
replace_literal_in_file() {
|
||||
file="$1"
|
||||
placeholder="$2"
|
||||
replacement="$3"
|
||||
require_template_placeholder "$file" "$placeholder" || return 1
|
||||
tmp="$(mktemp "${TMPDIR:-/tmp}/bee-template.XXXXXX")"
|
||||
|
||||
if BEE_TEMPLATE_PLACEHOLDER="$placeholder" \
|
||||
BEE_TEMPLATE_REPLACEMENT="$replacement" \
|
||||
awk '
|
||||
function replace_literal(text, needle, value, at) {
|
||||
while ((at = index(text, needle)) != 0) {
|
||||
text = substr(text, 1, at - 1) value substr(text, at + length(needle))
|
||||
}
|
||||
return text
|
||||
}
|
||||
{
|
||||
print replace_literal($0,
|
||||
ENVIRON["BEE_TEMPLATE_PLACEHOLDER"],
|
||||
ENVIRON["BEE_TEMPLATE_REPLACEMENT"])
|
||||
}
|
||||
' "$file" > "$tmp" && cat "$tmp" > "$file"; then
|
||||
status=0
|
||||
else
|
||||
status=$?
|
||||
fi
|
||||
rm -f "$tmp"
|
||||
return "$status"
|
||||
}
|
||||
|
||||
validate_project_version() {
|
||||
version="$1"
|
||||
case "$version" in
|
||||
""|[!A-Za-z0-9]*|*[!A-Za-z0-9]|*[!A-Za-z0-9.-]*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user