85 lines
1.9 KiB
Bash
Executable File
85 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Minimalistic script to interact with Codeforces
|
|
# Written by thematdev in 2023
|
|
|
|
|
|
load_rc() {
|
|
if [[ -e $1 ]]; then source $1; fi;
|
|
}
|
|
|
|
# Load .rc files
|
|
load_rc ~/.config/termforces/termforces.rc
|
|
load_rc ../termforces.rc
|
|
load_rc termforces.rc
|
|
|
|
login() {
|
|
if [[ $TF_PASS_CMD ]]
|
|
then
|
|
python3 -m termforces login "$1" --session-file "~/.config/termforces/termforces_cookies.json" --no-getpass <<< "$($TF_PASS_CMD)"
|
|
else
|
|
python3 -m termforces login "$1" --session-file "~/.config/termforces/termforces_cookies.json"
|
|
fi
|
|
}
|
|
|
|
whoami() {
|
|
python3 -m termforces whoami
|
|
}
|
|
|
|
submit() {
|
|
source_file=$1
|
|
# Calling from either parent or child directory
|
|
if [ $(dirname $1) = "." ]; then
|
|
p=$(pwd)
|
|
else
|
|
p=$(dirname $1)
|
|
fi
|
|
problem_index=${p:0-1}
|
|
python3 -m termforces submit --contest-id $contest_id $problem_index $source_file
|
|
}
|
|
|
|
results() {
|
|
python3 -m termforces results-my --contest-id $contest_id
|
|
}
|
|
|
|
strap() {
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
case $key in
|
|
-c|--contest-id)
|
|
contest_id="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-i|--indices)
|
|
indices="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
-t|--template)
|
|
template="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
*)
|
|
POSITIONAL+=("$1")
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
read -a indices_arr <<< $indices
|
|
if [[ ! -d $template ]]; then echo "Template directory not found or not specified, will create empty"; fi;
|
|
for index in "${indices_arr[@]}"
|
|
do
|
|
if [[ -d $template ]]
|
|
then
|
|
cp -r $template problem$index
|
|
else
|
|
mkdir problem$index
|
|
fi
|
|
done
|
|
echo "contest_id=$contest_id" >> termforces.rc
|
|
}
|
|
|
|
"$@"
|