-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patham
More file actions
executable file
·162 lines (151 loc) · 2.5 KB
/
Copy patham
File metadata and controls
executable file
·162 lines (151 loc) · 2.5 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#! /bin/bash
# AtCoder frontend utility for (formaly) Make
#set -x
# Set default CONTEST_DIR if not set
: ${CONTEST_DIR:=$HOME/contest}
CMD="$1"
case ${CMD} in
-h|--help)
cat<<'EOF'
Usage: am <command> <params>
command:
new <contest_id> create task directory
open-first <contest_id>
open first problem file in VS Code
t <extension> test code by oj
tf <extension> test code by oj (with float tolerance)
test <extension> execute code and display results
s <filename> copy code to clipboard and open submit page
dl download test cases
o open task web page by browser
EOF
;;
new|setup)
CONTEST="$2"
(cd ${CONTEST_DIR}; acc new ${CONTEST} --no-tests)
;;
open-first)
CONTEST="$2"
# Get default language
# Priority: 1. ~/.atcoder-default-lang, 2. Environment variable, 3. Default (java)
if [ -f ~/.atcoder-default-lang ]; then
LANG=$(cat ~/.atcoder-default-lang | tr -d '[:space:]')
elif [ -n "${ATCODER_DEFAULT_LANG}" ]; then
LANG="${ATCODER_DEFAULT_LANG}"
else
LANG="java"
fi
# Map language to filename
case ${LANG} in
java)
FILE="Main.java"
;;
python|py)
FILE="Main.py"
;;
cpp|c++)
FILE="Main.cpp"
;;
ruby|rb)
FILE="Main.rb"
;;
elixir|ex)
FILE="Main.ex"
;;
erlang|erl)
FILE="Main.erl"
;;
javascript|js)
FILE="Main.js"
;;
php)
FILE="Main.php"
;;
rust|rs)
FILE="main.rs"
;;
*)
echo "Unknown language: ${LANG}"
echo "Supported: java, python, cpp, ruby, elixir, erlang, javascript, php, rust"
exit 1
;;
esac
# Open the file in VS Code (reuse window)
code -r "${CONTEST_DIR}/${CONTEST}/a/${FILE}"
;;
s)
SRC_FILE="$2"
EXT=".${SRC_FILE##*.}"
case ${EXT} in
\.java)
PROG=java
;;
\.py)
PROG=python
;;
\.cpp|\.c++)
PROG=c++
;;
\.rb)
PROG=ruby
;;
\.erl)
PROG=erlang
;;
\.ex)
PROG=elixir
;;
\.js)
PROG=javascript
;;
\.php)
PROG=php
;;
\.rs)
PROG=rust
;;
*)
PROG=UNKNOWN
;;
esac
export PROG
make s SRC_FILE="${SRC_FILE}"
;;
*)
EXT="$2"
case ${EXT} in
\.java)
PROG=java
;;
\.py)
PROG=python
;;
\.cpp|\.c++)
PROG=c++
;;
\.rb)
PROG=ruby
;;
\.erl)
PROG=erlang
;;
\.ex)
PROG=elixir
;;
\.js)
PROG=javascript
;;
\.php)
PROG=php
;;
\.rs)
PROG=rust
;;
*)
PROG=UNKNOWN
;;
esac
export PROG
make ${CMD}
;;
esac