diff options
Diffstat (limited to 'templates/rust/init')
-rwxr-xr-x | templates/rust/init | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/templates/rust/init b/templates/rust/init index 787b663..df0b4c5 100755 --- a/templates/rust/init +++ b/templates/rust/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 |