feat/whatever: cleanup
This commit is contained in:
131
lib/runtime.sh
Normal file
131
lib/runtime.sh
Normal file
@@ -0,0 +1,131 @@
|
||||
trim_whitespace() {
|
||||
printf '%s' "$1" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//'
|
||||
}
|
||||
|
||||
append_find_rule() {
|
||||
_expr="$1"
|
||||
_rule="$2"
|
||||
|
||||
if [ -n "$_expr" ]; then
|
||||
printf '%s -o %s\n' "$_expr" "$_rule"
|
||||
else
|
||||
printf '%s\n' "$_rule"
|
||||
fi
|
||||
}
|
||||
|
||||
append_pattern_rules_from_file() {
|
||||
_expr="$1"
|
||||
_root="$2"
|
||||
_file="$3"
|
||||
|
||||
while IFS= read -r line || [ -n "$line" ]; do
|
||||
case "$line" in
|
||||
''|'#'*) continue ;;
|
||||
esac
|
||||
|
||||
pattern=$(trim_whitespace "$line")
|
||||
[ -z "$pattern" ] && continue
|
||||
|
||||
pattern_clean="${pattern#/}"
|
||||
pattern_clean="${pattern_clean%/}"
|
||||
|
||||
if echo "$pattern" | grep -q "/"; then
|
||||
_expr=$(append_find_rule "$_expr" "-path '$_root/$pattern_clean'")
|
||||
_expr=$(append_find_rule "$_expr" "-path '$_root/$pattern_clean/*'")
|
||||
else
|
||||
_expr=$(append_find_rule "$_expr" "-name '$pattern_clean'")
|
||||
fi
|
||||
done < "$_file"
|
||||
|
||||
printf '%s\n' "$_expr"
|
||||
}
|
||||
|
||||
append_nested_marker_rules() {
|
||||
_expr="$1"
|
||||
_root="$2"
|
||||
_marker="$3"
|
||||
_tmp_file="$KEWT_TMPDIR/${_marker#*.}_paths"
|
||||
|
||||
find "$_root" -name "$_marker" > "$_tmp_file"
|
||||
while IFS= read -r marker_path; do
|
||||
marker_dir="${marker_path%/$marker}"
|
||||
if [ "$marker_dir" != "$_root" ] && [ "$marker_dir" != "." ]; then
|
||||
_expr=$(append_find_rule "$_expr" "-path '$marker_dir'")
|
||||
_expr=$(append_find_rule "$_expr" "-path '$marker_dir/*'")
|
||||
fi
|
||||
done < "$_tmp_file"
|
||||
rm -f "$_tmp_file"
|
||||
|
||||
printf '%s\n' "$_expr"
|
||||
}
|
||||
|
||||
build_rule_args() {
|
||||
_root="$1"
|
||||
_marker="$2"
|
||||
_base_expr="$3"
|
||||
|
||||
_expr="$_base_expr"
|
||||
if [ -f "$_root/$_marker" ]; then
|
||||
_expr=$(append_pattern_rules_from_file "$_expr" "$_root" "$_root/$_marker")
|
||||
fi
|
||||
_expr=$(append_nested_marker_rules "$_expr" "$_root" "$_marker")
|
||||
printf '%s\n' "$_expr"
|
||||
}
|
||||
|
||||
resolve_template_path() {
|
||||
template="$src/template.html"
|
||||
[ -f "$template" ] || template="./template.html"
|
||||
if [ ! -f "$template" ]; then
|
||||
template="$KEWT_TMPDIR/default_template.html"
|
||||
printf '%s\n' "$DEFAULT_TMPL" > "$template"
|
||||
fi
|
||||
}
|
||||
|
||||
build_full_nav() {
|
||||
nav=$(generate_nav "$src")
|
||||
extra_links=$(nav_links_html)
|
||||
if [ -n "$extra_links" ]; then
|
||||
nav="$nav
|
||||
$extra_links"
|
||||
fi
|
||||
if [ -n "$nav_extra" ]; then
|
||||
nav="$nav
|
||||
$nav_extra"
|
||||
fi
|
||||
}
|
||||
|
||||
refresh_build_context() {
|
||||
reset_config
|
||||
load_config "./site.conf"
|
||||
load_config "$src/site.conf"
|
||||
|
||||
HIDE_ARGS="$BASE_HIDE_ARGS"
|
||||
if [ -n "$posts_dir" ]; then
|
||||
HIDE_ARGS=$(append_find_rule "$HIDE_ARGS" "-path '$src/$posts_dir/*'")
|
||||
fi
|
||||
|
||||
asset_version=""
|
||||
if [ "$versioning" = "true" ]; then
|
||||
asset_version="?v=$(date +%s)"
|
||||
fi
|
||||
|
||||
resolve_template_path
|
||||
build_full_nav
|
||||
}
|
||||
|
||||
watch_for_changes() {
|
||||
_mark_file="$1"
|
||||
|
||||
changed="$(find "$src" -type f -newer "$_mark_file" 2>/dev/null | head -n 1)"
|
||||
[ -z "$changed" ] && [ -f "site.conf" ] && [ "site.conf" -nt "$_mark_file" ] && changed="site.conf"
|
||||
[ -z "$changed" ] && [ -f "$src/site.conf" ] && [ "$src/site.conf" -nt "$_mark_file" ] && changed="$src/site.conf"
|
||||
[ -z "$changed" ] && [ -f "$template" ] && [ "$template" -nt "$_mark_file" ] && changed="$template"
|
||||
[ -z "$changed" ] && [ -d "$script_dir/styles" ] && changed="$(find "$script_dir/styles" -type f -newer "$_mark_file" 2>/dev/null | head -n 1)"
|
||||
|
||||
printf '%s\n' "$changed"
|
||||
}
|
||||
|
||||
is_posts_directory_rel() {
|
||||
_rel_dir="$1"
|
||||
[ -n "$posts_dir" ] && { [ "$_rel_dir" = "$posts_dir" ] || [ "./$_rel_dir" = "$posts_dir" ]; }
|
||||
}
|
||||
Reference in New Issue
Block a user