about summary refs log tree commit diff stats
path: root/templates/latex/init
blob: 787b663be3a7529fbea87e195fcefa2f61ae3b67 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env sh

. "$(realpath "$(dirname "$0")")/shell_line_editor.sh"

replacement_file="$(mktemp)"

trap cleanup INT
trap "cleanup; remove" EXIT
cleanup() {
    rm "$replacement_file"
}
remove() {
    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() {
    pr_variable_upper="$(echo "$1" | sed 's/\([a-z]\)/\U\1/')"
    pr_description="$2"
    pr_suggested_answer="$3"

    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" ""

    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)" "$(basename "$PWD" | sed 's/\([a-z]\)/\u\1/')"
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" "codeberg.org"
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]"

# 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"
prompt APPLICATION_HOME_PAGE "The package's home page URL" "https://$REMOTE/$OWNER/$REPOSITORY"

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|"
done < "$replacement_file"
# vim: ft=sh