about summary refs log tree commit diff stats
path: root/templates/c/init
diff options
context:
space:
mode:
Diffstat (limited to 'templates/c/init')
-rwxr-xr-xtemplates/c/init53
1 files changed, 39 insertions, 14 deletions
diff --git a/templates/c/init b/templates/c/init
index 787b663..df0b4c5 100755
--- a/templates/c/init
+++ b/templates/c/init
@@ -5,34 +5,41 @@
 replacement_file="$(mktemp)"
 
 trap cleanup INT
-trap "cleanup; remove" EXIT
+trap "cleanup; remove_self" EXIT
 cleanup() {
     rm "$replacement_file"
 }
-remove() {
+remove_self() {
     rm "$(realpath "$0")"
     rm "$(realpath "$(dirname "$0")")/shell_line_editor.sh"
-    git add .
 }
 
-# Prompt the user for a specific variable. The variable is the first
-# input, the second is an optional description.
-# The third argument can be a suggested answer, already pre populated.
+# 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"
 
-    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"
+    if [ -n "$pr_ask" ]; then
+        REPLY="$pr_suggested_answer";
     else
-        printf ":\n"
+        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
 
-    # LE "> " 0 " " "$pr_suggested_answer" "yes_please_produce_debug_output"
-    LE "> " 0 " " "$pr_suggested_answer" ""
-
     pr_new_variable="$(printf '%s="%s"' "$pr_variable_upper" "$REPLY")"
 
     eval "$pr_new_variable"
@@ -43,7 +50,10 @@ 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)" "$(basename "$PWD" | sed 's/\([a-z]\)/\u\1/')"
+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)"
 
@@ -54,6 +64,8 @@ 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')"
 
 # LICENSE.spdx data (source: https://github.com/david-a-wheeler/spdx-tutorial)
 prompt APPLICATION_ORIGINATOR "The person or organization from whom the package originally came" "$AUTHOR_NAME"
@@ -67,5 +79,18 @@ while read -r var; do
     var_value="${var_value%\"}"
 
     fd . --hidden --type file --exec sed --in-place "s|%\bINIT_$var_name\b|$var_value|"
+
+    # 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|")";
+        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