Add tests and refactor config
This commit is contained in:
172
lib/config.sh
172
lib/config.sh
@@ -62,106 +62,88 @@ DEFAULT_TMPL='<!doctype html>
|
||||
</body>
|
||||
</html>'
|
||||
|
||||
_parse_conf_val() {
|
||||
_pv_val="$1"
|
||||
case "$_pv_val" in
|
||||
\"*\")
|
||||
_pv_val=${_pv_val#\"}
|
||||
_pv_val=${_pv_val%\"}
|
||||
printf '%s' "$_pv_val" | sed 's/\\"/\"/g; s/\\\\/\\/g'
|
||||
;;
|
||||
\'*\')
|
||||
_pv_val=${_pv_val#\'}
|
||||
_pv_val=${_pv_val%\'}
|
||||
printf '%s' "$_pv_val" | sed "s/\\\\'/'/g; s/\\\\/\\/g"
|
||||
;;
|
||||
*)
|
||||
printf '%s' "$_pv_val"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_load_conf_line() {
|
||||
case "$1" in
|
||||
''|'#'*) return ;;
|
||||
*=*) ;;
|
||||
*) return ;;
|
||||
esac
|
||||
|
||||
_lc_key=${1%%=*}
|
||||
_lc_val=${1#*=}
|
||||
_lc_key=$(printf '%s' "$_lc_key" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
|
||||
_lc_val=$(_parse_conf_val "$(printf '%s' "$_lc_val" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')")
|
||||
|
||||
case "$_lc_key" in
|
||||
title) title="$_lc_val" ;;
|
||||
style) style="${_lc_val#/}" ;;
|
||||
dir_indexes) dir_indexes="$_lc_val" ;;
|
||||
single_file_index) single_file_index="$_lc_val" ;;
|
||||
flatten) flatten="$_lc_val" ;;
|
||||
order) order="$_lc_val" ;;
|
||||
home_name) home_name="$_lc_val" ;;
|
||||
show_home_in_nav) show_home_in_nav="$_lc_val" ;;
|
||||
nav_links) nav_links="$_lc_val" ;;
|
||||
nav_extra) nav_extra="$_lc_val" ;;
|
||||
footer) footer="$_lc_val" ;;
|
||||
logo) logo="${_lc_val#/}" ;;
|
||||
display_logo) display_logo="$_lc_val" ;;
|
||||
display_title) display_title="$_lc_val" ;;
|
||||
logo_as_favicon) logo_as_favicon="$_lc_val" ;;
|
||||
favicon) favicon="${_lc_val#/}" ;;
|
||||
generate_page_title) generate_page_title="$_lc_val" ;;
|
||||
error_page) error_page="${_lc_val#/}" ;;
|
||||
versioning) versioning="$_lc_val" ;;
|
||||
enable_header_links) enable_header_links="$_lc_val" ;;
|
||||
base_url) base_url="$_lc_val" ;;
|
||||
generate_feed) generate_feed="$_lc_val" ;;
|
||||
feed_file) feed_file="${_lc_val#/}" ;;
|
||||
posts_dir) posts_dir="${_lc_val#/}" ;;
|
||||
posts_per_page) posts_per_page="$_lc_val" ;;
|
||||
custom_admonitions) custom_admonitions="$_lc_val" ;;
|
||||
cw_hide_url) cw_hide_url="$_lc_val" ;;
|
||||
lang) lang="$_lc_val" ;;
|
||||
draft_by_default) draft_by_default="$_lc_val" ;;
|
||||
generate_tags) generate_tags="$_lc_val" ;;
|
||||
tags_dir) tags_dir="${_lc_val#/}" ;;
|
||||
generate_search) generate_search="$_lc_val" ;;
|
||||
search_in_footer) search_in_footer="$_lc_val" ;;
|
||||
search_in_header) search_in_header="$_lc_val" ;;
|
||||
include_cw_pages_in_search) include_cw_pages_in_search="$_lc_val" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
reset_config() {
|
||||
title="kewt"
|
||||
style="kewt"
|
||||
lang="en"
|
||||
draft_by_default="false"
|
||||
dir_indexes="true"
|
||||
single_file_index="true"
|
||||
flatten="false"
|
||||
order=""
|
||||
home_name="Home"
|
||||
show_home_in_nav="true"
|
||||
nav_links=""
|
||||
nav_extra=""
|
||||
footer="made with <a href=\"https://kewt.krzak.org\">kewt</a>"
|
||||
logo=""
|
||||
display_logo="false"
|
||||
display_title="true"
|
||||
logo_as_favicon="true"
|
||||
favicon=""
|
||||
generate_page_title="true"
|
||||
error_page="not_found.html"
|
||||
versioning="false"
|
||||
enable_header_links="true"
|
||||
base_url=""
|
||||
generate_feed="false"
|
||||
feed_file="rss.xml"
|
||||
posts_dir=""
|
||||
posts_per_page="12"
|
||||
custom_admonitions=""
|
||||
cw_hide_url="true"
|
||||
generate_tags="false"
|
||||
tags_dir="tags"
|
||||
generate_search="false"
|
||||
search_in_footer="false"
|
||||
search_in_header="false"
|
||||
include_cw_pages_in_search="false"
|
||||
while IFS= read -r _rc_line; do
|
||||
_load_conf_line "$_rc_line"
|
||||
done <<EOF
|
||||
$DEFAULT_CONF
|
||||
EOF
|
||||
}
|
||||
|
||||
load_config() {
|
||||
[ -f "$1" ] || return
|
||||
while IFS= read -r line || [ -n "$line" ]; do
|
||||
case "$line" in
|
||||
''|'#'*) continue ;;
|
||||
*=*) ;;
|
||||
*) continue ;;
|
||||
esac
|
||||
|
||||
key=${line%%=*}
|
||||
val=${line#*=}
|
||||
|
||||
key=$(printf '%s' "$key" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
|
||||
val=$(printf '%s' "$val" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
|
||||
case "$val" in
|
||||
\"*\")
|
||||
val=${val#\"}; val=${val%\"}
|
||||
val=$(printf '%s' "$val" | sed 's/\\"/\"/g; s/\\\\/\\/g')
|
||||
;;
|
||||
\'*\')
|
||||
val=${val#\'}; val=${val%\'}
|
||||
val=$(printf '%s' "$val" | sed "s/\\\\'/'/g; s/\\\\/\\/g")
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$key" in
|
||||
title) title="$val" ;;
|
||||
style) style="${val#/}" ;;
|
||||
dir_indexes) dir_indexes="$val" ;;
|
||||
single_file_index) single_file_index="$val" ;;
|
||||
flatten) flatten="$val" ;;
|
||||
order) order="$val" ;;
|
||||
home_name) home_name="$val" ;;
|
||||
show_home_in_nav) show_home_in_nav="$val" ;;
|
||||
nav_links) nav_links="$val" ;;
|
||||
nav_extra) nav_extra="$val" ;;
|
||||
footer) footer="$val" ;;
|
||||
logo) logo="${val#/}" ;;
|
||||
display_logo) display_logo="$val" ;;
|
||||
display_title) display_title="$val" ;;
|
||||
logo_as_favicon) logo_as_favicon="$val" ;;
|
||||
favicon) favicon="${val#/}" ;;
|
||||
generate_page_title) generate_page_title="$val" ;;
|
||||
error_page) error_page="${val#/}" ;;
|
||||
versioning) versioning="$val" ;;
|
||||
enable_header_links) enable_header_links="$val" ;;
|
||||
base_url) base_url="$val" ;;
|
||||
generate_feed) generate_feed="$val" ;;
|
||||
feed_file) feed_file="${val#/}" ;;
|
||||
posts_dir) posts_dir="${val#/}" ;;
|
||||
posts_per_page) posts_per_page="$val" ;;
|
||||
custom_admonitions) custom_admonitions="$val" ;;
|
||||
cw_hide_url) cw_hide_url="$val" ;;
|
||||
lang) lang="$val" ;;
|
||||
draft_by_default) draft_by_default="$val" ;;
|
||||
generate_tags) generate_tags="$val" ;;
|
||||
tags_dir) tags_dir="${val#/}" ;;
|
||||
generate_search) generate_search="$val" ;;
|
||||
search_in_footer) search_in_footer="$val" ;;
|
||||
search_in_header) search_in_header="$val" ;;
|
||||
include_cw_pages_in_search) include_cw_pages_in_search="$val" ;;
|
||||
esac
|
||||
while IFS= read -r _lc_line || [ -n "$_lc_line" ]; do
|
||||
_load_conf_line "$_lc_line"
|
||||
done < "$1"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user