Skip to content

Commit 439f8c5

Browse files
authored
Merge pull request #69 from WhiteHyun/feature/generate-env
[FEAT] .env 파일 처리 개선 및 언어 선택 기능 추가
2 parents 69ffb4c + 141d3c1 commit 439f8c5

File tree

1 file changed

+54
-17
lines changed

1 file changed

+54
-17
lines changed

scripts/common.bash

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,64 @@
22

33
source scripts/languages.bash
44

5+
# Set up .env file if it doesn't exist
6+
function setup_env_file() {
7+
echo ".env file not found. Let's create one!"
8+
9+
# Prompt user for NICKNAME
10+
read -r -p "Enter your nickname (default: Unknown): " nickname
11+
nickname=${nickname:-Unknown}
12+
13+
# Prompt user for LANGUAGE
14+
echo "Select your preferred language:"
15+
languages=("cpp" "java" "python" "python3" "c" "csharp" "javascript" "typescript" "php" "swift" "kotlin" "dart" "go" "ruby" "scala" "rust" "racket" "erlang" "elixir")
16+
for i in "${!languages[@]}"; do
17+
echo "$((i + 1))) ${languages[$i]}"
18+
done
19+
20+
while true; do
21+
read -r -p "Enter the number (default: 4): " language_index
22+
language_index=${language_index:-4}
23+
24+
if [[ $language_index -ge 1 && $language_index -le ${#languages[@]} ]]; then
25+
language=${languages[$((language_index - 1))]}
26+
break
27+
else
28+
echo "Invalid input. Please enter a number between 1 and ${#languages[@]}."
29+
fi
30+
done
31+
32+
# Create .env file with user input or default values
33+
echo "NICKNAME=$nickname" >.env
34+
echo "LANGUAGE=$language" >>.env
35+
36+
echo ".env file created with the following values:"
37+
echo "NICKNAME: $nickname"
38+
echo "LANGUAGE: $language"
39+
}
40+
541
# Load environment variables from .env file
642
function load_env_vars() {
7-
if [ -f .env ]; then
8-
# shellcheck disable=SC2046
9-
export echo $(sed <.env 's/#.*//g' | xargs | envsubst)
10-
11-
# Check if required variables are set and not equal to default values
12-
if [ "$NICKNAME" = "your_nickname" ] || [ "$LANGUAGE" = "choose_your_language" ]; then
13-
echo "Error: Required environment variables are set to default values."
14-
echo "Please update NICKNAME and LANGUAGE in the .env file with appropriate values."
15-
exit 1
16-
fi
43+
if [ ! -f .env ]; then
44+
setup_env_file
45+
fi
1746

18-
# Check if the specified language is valid
47+
# shellcheck disable=SC2046
48+
export $(sed <.env 's/#.*//g' | xargs | envsubst)
1949

20-
if [[ ! "${!language_extensions[@]}" =~ $LANGUAGE ]]; then
21-
echo "Error: Invalid language specified in the .env file."
22-
echo "Please set LANGUAGE to one of the following valid languages:"
23-
echo "${!language_extensions[@]}"
24-
exit 1
25-
fi
50+
# Check if NICKNAME and LANGUAGE variables are set
51+
if [ -z "$NICKNAME" ] || [ -z "$LANGUAGE" ]; then
52+
echo "Error: Required environment variables NICKNAME and/or LANGUAGE are not set."
53+
echo "Please set NICKNAME and LANGUAGE in the .env file with appropriate values."
54+
exit 1
55+
fi
56+
57+
# Check if the specified language is valid
58+
if [[ ! "${!language_extensions[@]}" =~ $LANGUAGE ]]; then
59+
echo "Error: Invalid language specified in the .env file."
60+
echo "Please set LANGUAGE to one of the following valid languages:"
61+
echo "${!language_extensions[@]}"
62+
exit 1
2663
fi
2764
}
2865

0 commit comments

Comments
 (0)