-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrt.sh
More file actions
executable file
·118 lines (104 loc) · 3.23 KB
/
crt.sh
File metadata and controls
executable file
·118 lines (104 loc) · 3.23 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/bash
create_files(){
local current_dir=$(pwd)
local contest_dir="$1"
local end_char="$2"
local template_file="$3"
local template_name="$4"
local full_path="${current_dir}/${contest_dir}"
if [ -d "$full_path" ]; then
echo "Warning: Directory '$full_path' already exists."
else
mkdir -p "$full_path"
fi
for char in a b c d e f g h i j k l m n o p; do
if [[ "$char" > "$end_char" ]]; then
break
fi
local exerc_path="$full_path/$char.cpp"
if [ -f "$exerc_path" ]; then
echo "Warning: Directory '$exerc_path' already exists. Skipping to the next exerc..."
else
cp "$template_file" "$exerc_path"
echo "Created $exerc_path using $template_name"
fi
done
cp "$template_file" "$full_path/base.cpp"
echo "Created $full_path/base.cpp using $template_name"
}
create_single_file() {
local current_dir=$(pwd)
local contest_dir="$1"
local exercise_name="$2"
local template_file="$3"
local template_name="$4"
local full_path="${current_dir}/${contest_dir}"
if [ -d "$full_path" ]; then
echo "Warning: Directory '$full_path' already exists."
else
mkdir -p "$full_path"
fi
local exerc_path="$full_path/$exercise_name.cpp"
if [ -f "$exerc_path" ]; then
echo "Error: Directory '$exerc_path' already exists."
else
cp "$template_file" "$exerc_path"
echo "Created $exerc_path using $template_name"
fi
}
while [[ $# -gt 0 ]]; do
case "$1" in
--cf) # CodeForces
echo "###############################"
echo "###########CODEFORCES##########"
echo "###############################"
TEMPLATE_FILE="./templates/cf_base.cpp"
TEMPLATE_NAME="cf_base.cpp"
shift
;;
--atcoder) # AtCoder
echo "###############################"
echo "#############ATCODER###########"
echo "###############################"
TEMPLATE_FILE="./templates/atcoder_base.cpp"
TEMPLATE_NAME="atcoder_base.cpp"
shift
;;
--cses) # CSES
echo "###############################"
echo "#############CSES##############"
echo "###############################"
exercise_name="$3"
TEMPLATE_FILE="./templates/cses_base.cpp"
TEMPLATE_NAME="cses_base.cpp"
create_single_file "$2" "$exercise_name" "$TEMPLATE_FILE" "$TEMPLATE_NAME"
exit 0
;;
--usaco) # USACO
echo "###############################"
echo "#############USACO#############"
echo "###############################"
exercise_name="$3"
TEMPLATE_FILE="./templates/usaco_base.cpp"
TEMPLATE_NAME="usaco_base.cpp"
create_single_file "$2" "$exercise_name" "$TEMPLATE_FILE" "$TEMPLATE_NAME"
exit 0
;;
-* | --*) # Error if there is not anything
echo "Error: Unknown option '$1'"
echo "Usage: $0 [--cf|--atcoder|--cses|--usaco] <base_dir> <contest_dir> <last_question_in_char (optional)> or <exercise_name>"
exit 1
;;
*)
break # Stop parsing options
;;
esac
done
if [ $# -lt 2 ] ; then
echo "Usage: $0 [--cf|--atcoder] <base_dir> <contest_dir> <last_question_in_char (optional)>"
exit 1
fi
contest_dir="$1"
end_char="${2:-d}"
# Call create_files with the extracted template and params
create_files "$contest_dir" "$end_char" "$TEMPLATE_FILE" "$TEMPLATE_NAME"