AtCoder command line tools
- get contest information
- create a project directory for contests
- auto provisioning with custom templates
- linkage with online-judge-tools
- submit your code without specified URL
- auto downloading of sample inputs/outputs
node.js
online-judge-tools (optional, but recommended)
$ npm install -g atcoder-cli$ acc login # login your atcoder account $ acc session # check login status $ # your login session will be saved to a local file, but your password won't be saved $ # to delete the session file, use `acc logout` $ acc new abc001 # "abc001/" directory will be created $ cd abc001/ $ acc contest # show the contest information $ acc tasks # show task list $ acc add $ cd a/ $ vim main.cpp # write your solution $ acc submit main.cpp # to use submit function, you have to install online-judge-toolsTo get detailed information, use
$ acc [COMMAND] -h$ acc config -h $ acc config # show all global options $ acc config <key> <value> # set option $ cd `acc config-dir` $ cat config.json # global config fileWith using custom templates, you can automatically prepare your template program code or build environment.
When you create new task directories, atcoder-cli can do:
- place the scaffold program file
- copy static files
- exec shell command
show available templates:
$ acc templatesuse the template:
$ acc new|add --template <your-template-name>Or you can set default template:
$ acc config default-template <your-template-name>$ cd `acc config-dir` $ mkdir <your-template-name> $ cd <your-template-name> $ vim template.json # write your template settings{ "task": { "program": ["main.cpp", ["foo.cpp", "{TaskID}.cpp"]], "submit": "main.cpp", "static": ["foo", ["bar","bar_{TaskLabel}"]], "testdir": "tests_{TaskID}", "cmd": "echo Hi!" }, "contest": { "static": [["gitignore", ".gitignore"]], "cmd": "echo Ho!" } }executed for each tasks.
"program": (string | [string, string])[]Your main program(s). Place main.cpp in the same directory of template.json, and write
"program": ["main.cpp"] then the program file will be copied to the task directory.
You can rename the file with format strings:
"program": [["main.cpp", "{TaskId}.cpp"]] The file name of the program file will be "A.cpp" if the task is problem A.
To get detailed information about format strings, use acc format -h.
"submit": stringThe file name to submit. It enables to omit the filename argument to submit file, so you can run acc submit instead of acc submit <filename>.
Format strings are supported.
"static": (string | [string, string])[]Static assets. The difference between "program" and "static" is:
"program"files won't be overwrited when usingacc add --force."static"files will be overwrited when usingacc add --force.
"testdir": stringThe name of the directory that sample cases will be downloaded. Without this, the directory name will be the value of acc config default-test-dirname-format.
Format strings are supported.
"cmd": stringAfter copying files and downloading sample cases, the specified command will be executed.
The working directory is the task directory.
Parameters are given as enviromental variables:
$TEMPLATE_DIR, $TASK_DIR, $TASK_ID, $TASK_INDEX, $CONTEST_DIR and $CONTEST_ID
executed only once when acc new command runs.
Same as tasks.static.
Same as tasks.cmd, but $TASK_* variables do not exist.