Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Tatamo/atcoder-cli
AtCoder command line tools
https://github.com/Tatamo/atcoder-cli
atcoder cli competitive-programming unofficial
Last synced: 2 days ago
JSON representation
AtCoder command line tools
- Host: GitHub
- URL: https://github.com/Tatamo/atcoder-cli
- Owner: Tatamo
- License: bsd-3-clause
- Created: 2018-10-14T10:43:30.000Z (about 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-03-02T10:40:22.000Z (over 1 year ago)
- Last Synced: 2024-10-14T04:46:15.019Z (about 1 month ago)
- Topics: atcoder, cli, competitive-programming, unofficial
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/atcoder-cli
- Size: 2.42 MB
- Stars: 557
- Watchers: 5
- Forks: 22
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# atcoder-cli
[AtCoder](https://atcoder.jp/) command line tools
- get contest information
- create a project directory for contests
- auto provisioning with custom templates
- linkage with [online-judge-tools](https://github.com/kmyk/online-judge-tools)
- submit your code without specified URL
- auto downloading of sample inputs/outputs[解説記事(日本語)](http://tatamo.81.la/blog/2018/12/07/atcoder-cli/)
## Requirements
node.js
[online-judge-tools](https://github.com/kmyk/online-judge-tools) (optional, but recommended)## Install
```sh
$ npm install -g atcoder-cli
```## Usage
```sh
$ 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-tools
```To get detailed information, use
```sh
$ acc [COMMAND] -h
```## Config
```sh
$ acc config -h
$ acc config # show all global options
$ acc config # set option
$ cd `acc config-dir`
$ cat config.json # global config file
```
## Provisioning Templates
With 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 commandshow available templates:
```sh
$ acc templates
```use the template:
```sh
$ acc new|add --template
```Or you can set default template:
```sh
$ acc config default-template
```### Create a new template
```sh
$ cd `acc config-dir`
$ mkdir
$ cd
$ vim template.json # write your template settings
```### Options in template.json
```json
{
"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!"
}
}
```#### `"task"` (required)
executed for each tasks.##### `"program"` (required)
```ts
"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"` (required)
```ts
"submit": string
```The file name to submit.
It enables to omit the filename argument to submit file, so you can run `acc submit` instead of `acc submit `.Format strings are supported.
##### `"static"` (optional)
```ts
"static": (string | [string, string])[]
```Static assets.
The difference between `"program"` and `"static"` is:
- `"program"` files won't be overwrited when using `acc add --force`.
- `"static"` files will be overwrited when using `acc add --force`.##### `"testdir"` (optional)
```ts
"testdir": string
```The 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"` (optional)
```ts
"cmd": string
```
After 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`#### `contest` (optional)
executed only once when `acc new` command runs.##### `"static"` (optional)
Same as `tasks.static`.##### `"cmd"` (optional)
Same as `tasks.cmd`, but `$TASK_*` variables do not exist.