diff options
| author | Romain Gonçalves <me@rgoncalves.se> | 2024-05-18 21:38:23 +0200 | 
|---|---|---|
| committer | Romain Gonçalves <me@rgoncalves.se> | 2024-05-18 21:38:23 +0200 | 
| commit | cd9cb54c72966de0b6bde9f8e4e7e0f33540d739 (patch) | |
| tree | fca3124925a256dfe63d29625e94d0bcc48b9329 | |
| parent | c5ad7625aaaf32ba407729aa63b3d48edb5eb910 (diff) | |
| download | ssg-cd9cb54c72966de0b6bde9f8e4e7e0f33540d739.tar.gz | |
feat: override variables with environment variables
| -rw-r--r-- | functions.sh | 58 | ||||
| -rwxr-xr-x | rssg | 26 | ||||
| -rwxr-xr-x | ssg | 10 | 
3 files changed, 47 insertions, 47 deletions
| diff --git a/functions.sh b/functions.sh index 0468b29..163c0a2 100644 --- a/functions.sh +++ b/functions.sh @@ -1,24 +1,24 @@  #!/bin/sh -media_dir="media" -src_dir="src" -tmp_dir="tmp" -out_dir="out" - -tmp_file="${tmp_dir}/tmp" -rss_dir="${src_dir}/b" -rss_out_file="${out_dir}/rss.xml" - -website_domain="rgoncalves.se" -website_title="${website_domain}" -website_link="https://${website_domain}" -website_email="contact@${website_domain}" -website_generator="${website_domain}'s ssg" -website_description="devops and hacker D:" -website_language="en" - -date_default_hour="17:00:00" -date_default_timezone="+0200" +SSG_MEDIA_DIR="${SSG_MEDIA_DIR:-media}" +SSG_SRC_DIR="${SSG_SRC_DIR:-src}" +SSG_TMP_DIR="${SSG_TMP_DIR:-tmp}" +SSG_OUT_DIR="${SSG_OUT_DIR:-out}" + +SSG_TMP_FILE="${SSG_TMP_DIR}/tmp" +SSG_RSS_DIR="${SSG_SRC_DIR}/b" +SSG_RSS_OUT_FILE="${SSG_OUT_DIR}/rss.xml" + +SSG_WEBSITE_DOMAIN="${SSG_WEBSITE_DOMAIN:-example.org}" +SSG_WEBSITE_TITLE="${SSG_WEBSITE_TITLE:-Example}" +SSG_WEBSITE_LINK="${SSG_WEBSITE_LINK:-https://${SSG_WEBSITE_DOMAIN}}" +SSG_WEBSITE_EMAIL="${SSG_WEBSITE_EMAIL:-contact@${SSG_WEBSITE_DOMAIN}}" +SSG_WEBSITE_GENERATOR="${SSG_WEBSITE_GENERATOR:-${SSG_WEBSITE_DOMAIN} ssg}}" +SSG_WEBSITE_DESCRIPTION="${SSG_WEBSITE_DESCRIPTION:-example}" +SSG_WEBSITE_LANGUAGE="${SSG_WEBSITE_LANGUAGE:-en}" + +SSG_DATE_DEFAULT_HOUR="${SSG_DATE_DEFAULT_HOUR:-17:00:00}" +SSG_DATE_DEFAULT_TIMEZONE="${SSG_DATE_DEFAULT_TIMEZONE:-+0200}"  uname=$(uname) @@ -85,7 +85,7 @@ __get_value_date_publication() {  	local _date  	_date="$(__get_value_date ${1})" -	_date="${_date} ${date_default_hour} ${date_default_timezone}" +	_date="${_date} ${SSG_DATE_DEFAULT_HOUR} ${SSG_DATE_DEFAULT_TIMEZONE}"  	if [ "${uname}" = "Linux" ]; then  		date -d "${_date}" +"%a, %d %b %Y %H:%M:%S %z" @@ -107,7 +107,7 @@ __get_out_filename() {  	echo "${_filename}" |  		sed 's/.md$/.html/g' | -		sed "s/${src_dir}/${out_dir}/g" +		sed "s/${SSG_SRC_DIR}/${SSG_OUT_DIR}/g"  }  __get_final_filename() { @@ -129,7 +129,7 @@ __list_files_date() {  	local _tmp_file  	_files=$(__list_files "${1}") -	_tmp_file="${tmp_file}.list_files_date" +	_tmp_file="${SSG_TMP_FILE}.list_files_date"  	cp /dev/null "${_tmp_file}" @@ -188,7 +188,7 @@ __generate_index() {  	local _file  	local _index_dir -	_index_dir="${src_dir}/$(__get_value "${1}" index)" +	_index_dir="${SSG_SRC_DIR}/$(__get_value "${1}" index)"  	[ -f "${_index_dir}" ] && _index_dir=$(dirname "${_index_dir}")  	[ ! -d "${_index_dir}" ] && return @@ -229,18 +229,18 @@ __generate_metadata() {  __handle_md() {  	# 1: filename  	# Handle markdown files. -	__lowdown "${1}" > "${tmp_file}.body" +	__lowdown "${1}" > "${SSG_TMP_FILE}.body" -	__generate_metadata "${1}" > "${tmp_file}.metadata" +	__generate_metadata "${1}" > "${SSG_TMP_FILE}.metadata"  	if [ ! "$(__get_value "${1}" index)" = "" ]; then -		__generate_index "${1}" > "${tmp_file}.index" +		__generate_index "${1}" > "${SSG_TMP_FILE}.index"  	else -		[ -f "${tmp_file}.index" ] && rm "${tmp_file}.index" +		[ -f "${SSG_TMP_FILE}.index" ] && rm "${SSG_TMP_FILE}.index"  	fi -	__apply_template "$(__get_value "${1}" template)" > "${tmp_file}" -	__install "${tmp_file}" "$(__get_out_filename "${1}")" +	__apply_template "$(__get_value "${1}" template)" > "${SSG_TMP_FILE}" +	__install "${SSG_TMP_FILE}" "$(__get_out_filename "${1}")"  }  __handle() { @@ -6,32 +6,32 @@ set -e  current_date=$(date +"%a, %d %b %Y %H:%M:%S %z") -cat <<-EOF > "${rss_out_file}" +cat <<-EOF > "${SSG_RSS_OUT_FILE}"  <rss version="2.0">  <channel> -<title>${website_title}</title> -<description>${website_description}</description> -<link>${website_link}</link> -<copyright>$(date +"%Y") ${website_title} - All rights reserved</copyright> -<managingEditor>${website_email}</managingEditor> -<webMaster>${website_email}</webMaster> +<title>${SSG_WEBSITE_TITLE}</title> +<description>${SSG_WEBSITE_DESCRIPTION}</description> +<link>${SSG_WEBSITE_LINK}</link> +<copyright>$(date +"%Y") ${SSG_WEBSITE_TITLE} - All rights reserved</copyright> +<managingEditor>${SSG_WEBSITE_EMAIL}</managingEditor> +<webMaster>${SSG_WEBSITE_EMAIL}</webMaster>  <lastBuildDate>${current_date}</lastBuildDate>  <pubDate>${current_date}</pubDate> -<generator>${website_generator}</generator> -<language>${website_language}</language> +<generator>${SSG_WEBSITE_GENERATOR}</generator> +<language>${SSG_WEBSITE_LANGUAGE}</language>  <docs>https://validator.w3.org/feed/docs/rss2.html</docs>  <ttl>1800</ttl>  EOF -for file in $(__list_files_date "${rss_dir}"); do +for file in $(__list_files_date "${SSG_RSS_DIR}"); do  	__get_value "${file}" "draft" >/dev/null && continue  	title=$(__get_value_title "${file}")  	date=$(__get_value_date_publication "${file}") -	link="${website_link}/$(__get_final_filename "${file}")" +	link="${SSG_WEBSITE_LINK}/$(__get_final_filename "${file}")"  	guid="$(echo "${link}" | "${__sha256}" | cut -d ' ' -f 1)"  	description=$(__generate_rss_body "${file}") -	cat <<-EOF >> "${rss_out_file}" +	cat <<-EOF >> "${SSG_RSS_OUT_FILE}"  	<item>  	<title>${title}</title>  	<link>${link}</link> @@ -42,7 +42,7 @@ for file in $(__list_files_date "${rss_dir}"); do  	EOF  done -cat <<-EOF >> "${rss_out_file}" +cat <<-EOF >> "${SSG_RSS_OUT_FILE}"  </channel>  </rss>  EOF @@ -6,11 +6,11 @@  set -xe  media_branch="media" -src_files="$(__list_files ${src_dir})" -dirs="${media_dir} \ -	${src_dir} \ -	${tmp_dir} \ -	${out_dir}" +src_files="$(__list_files ${SSG_SRC_DIR})" +dirs="${SSG_MEDIA_DIR} \ +	${SSG_SRC_DIR} \ +	${SSG_TMP_DIR} \ +	${SSG_OUT_DIR}"  # Ensure directories exist.  for dir in ${dirs}; do |