aboutsummaryrefslogtreecommitdiffstats
path: root/build/awk/init
diff options
context:
space:
mode:
Diffstat (limited to 'build/awk/init')
-rw-r--r--build/awk/init139
1 files changed, 139 insertions, 0 deletions
diff --git a/build/awk/init b/build/awk/init
new file mode 100644
index 0000000..f416b34
--- /dev/null
+++ b/build/awk/init
@@ -0,0 +1,139 @@
+#!/usr/bin/env sh
+
+# shellcheck source=/dev/null
+. "$(realpath "$(dirname "$0")")/shell_line_editor.sh"
+
+replacement_file="$(mktemp)"
+
+trap cleanup INT
+trap "cleanup; remove_self" EXIT
+cleanup() {
+ rm "$replacement_file"
+}
+remove_self() {
+ rm "$(realpath "$0")"
+ rm "$(realpath "$(dirname "$0")")/shell_line_editor.sh"
+}
+
+# Prompt the user for a specific variable.
+# ## Args:
+# [1]: Name of the variable to populate the answer to
+# [2]: An optional description
+# [3]: An optionally suggested answer
+# [4]: If this is set, the user is not even asked.
+prompt() {
+ pr_variable_upper="$(echo "$1" | sed 's/\([a-z]\)/\U\1/')"
+ pr_description="$2"
+ pr_suggested_answer="$3"
+ pr_ask="$4"
+
+ if [ -n "$pr_ask" ]; then
+ REPLY="$pr_suggested_answer"
+ else
+ printf "\033[94;1mEnter %s\033[0m" "$pr_variable_upper"
+ if [ -n "$pr_description" ]; then
+ printf " (\033[93;1m%s\033[0m):\n" "$pr_description"
+ else
+ printf ":\n"
+ fi
+
+ # LE "> " 0 " " "$pr_suggested_answer" "yes_please_produce_debug_output"
+ LE "> " 0 " " "$pr_suggested_answer" ""
+ fi
+
+ pr_new_variable="$(printf '%s="%s"' "$pr_variable_upper" "$REPLY")"
+
+ eval "$pr_new_variable"
+ printf "%s\n" "$pr_new_variable" >>"$replacement_file"
+}
+
+git init
+
+# necessary meta data
+prompt APPLICATION_NAME "The name of the application" "$(basename "$PWD")"
+prompt APPLICATION_NAME_STYLIZED "The stylized name of the application (for documentation)" "$(echo "$APPLICATION_NAME" | sed 's/\([a-z]*\)/\u\1/')"
+prompt APPLICATION_NAME_CAPITALIZED_MAN_PART "The capitalized name of the application (for documentation also with a man section part)" "$(echo "$APPLICATION_NAME" | sed 's/\([a-z]*\)/\U\1(1)/')" "dont_ask"
+prompt APPLICATION_VERSION "The version of this program, without the prefix" "0.1.0"
+
+prompt AUTHOR_NAME "The name of the author (or authors)" "$(git config --get user.name)"
+prompt AUTHOR_EMAIL "The email of the author (or authors)" "$(git config --get user.email)"
+
+# cog change-log variables
+prompt REMOTE "The remote, this project will be pushed to" "git.vhack.eu"
+prompt REPOSITORY "The name of the repository in the remote" "$APPLICATION_NAME"
+prompt OWNER "The name of owner of the repository" "$AUTHOR_NAME"
+
+# nice meta data
+prompt DESCRIPTION "The description of this project" "[can be empty]"
+prompt CURRENT_DATE "The stylized version of the current date" "$(date +'%b %Y')"
+prompt YEAR "The year the work on this has begun (for copyright reasons)" "$(date +'%Y')"
+prompt APPLICATION_SOURCE_CODE_REPOSITORY "The package's source code repository URL" "https://$REMOTE/$OWNER/$REPOSITORY"
+
+# LICENSE.spdx data (source: https://github.com/david-a-wheeler/spdx-tutorial)
+if [ -e ./lpm.toml ]; then
+ # Use a different default license in latex projects.
+ init_default_license="CC-BY-SA-4.0"
+else
+ init_default_license="GPL-3.0-or-later"
+fi
+prompt SPDX_LICENSE_IDENTIFIER "THE SPDX identifer of your choosen license" "$init_default_license"
+prompt APPLICATION_ORIGINATOR "The person or organization from whom the package originally came" "$AUTHOR_NAME"
+prompt APPLICATION_HOME_PAGE "The package's home page URL" "https://$REMOTE/$OWNER/$REPOSITORY"
+
+echo "Downloading license .."
+case "$SPDX_LICENSE_IDENTIFIER" in
+"AGPL-3.0-or-later")
+ default_license_url="https://www.gnu.org/licenses/agpl-3.0.txt"
+ curl "$default_license_url" >COPYING
+ ;;
+"GPL-3.0-or-later")
+ default_license_url="https://www.gnu.org/licenses/gpl-3.0.txt"
+ curl "$default_license_url" >COPYING
+ ;;
+"LGPL-3.0-or-later")
+ default_license_url="https://www.gnu.org/licenses/lgpl+gpl-3.0.txt"
+ curl "https://www.gnu.org/licenses/gpl-3.0.txt" >COPYING
+ curl "https://www.gnu.org/licenses/lgpl-3.0-standalone.html" >COPYING.LESSER
+ ;;
+
+"Apache-2.0")
+ default_license_url="https://www.apache.org/licenses/LICENSE-2.0.txt"
+ curl "$default_license_url" >LICENSE
+ ;;
+
+"CC-BY-SA-4.0")
+ default_license_url="https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt"
+ curl "$default_license_url" >LICENSE
+ ;;
+
+*)
+ default_license_url="file:///dev/null"
+ echo " -> No license found for your identifier: '$SPDX_LICENSE_IDENTIFIER'"
+ ;;
+esac
+
+prompt LICENSE_URL "The url of the license" "$default_license_url" "dont_ask"
+
+echo "$DESCRIPTION" >.git/description
+
+while read -r var; do
+ var_name="${var%=*}"
+ var_value="${var#*=\"}"
+ var_value="${var_value%\"}"
+
+ fd . --hidden --type file --exec sed --in-place "s|%\bINIT_$var_name\b|$var_value|g"
+
+ # Replace the variable in file paths
+ fd "%INIT_$var_name" . --hidden | while read -r file_path; do
+ new_file_path="$(echo "$file_path" | sed "s|%INIT_$var_name|$var_value|g")"
+ mv "$file_path" "$new_file_path"
+ done
+done <"$replacement_file"
+
+# HACK: Re-add the executable permissions to files, which the nix template has somehow
+# removed <2024-04-02>
+chmod +x scripts/*
+chmod +x update.sh
+[ -f ./build.sh ] && chmod +x build.sh
+
+# vim: ft=sh