Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/qryxip/snowchains

Tools for online programming contests.
https://github.com/qryxip/snowchains

Last synced: about 2 months ago
JSON representation

Tools for online programming contests.

Awesome Lists containing this project

README

        

# Snowchains

[![CI](https://github.com/qryxip/snowchains/workflows/CI/badge.svg)](https://github.com/qryxip/snowchains/actions?workflow=CI)
[![Crates.io](https://img.shields.io/crates/v/snowchains.svg)](https://crates.io/crates/snowchains)
[![Crates.io](https://img.shields.io/crates/l/snowchains.svg)](https://crates.io/crates/snowchains)

Tools for online programming contests.

## Features

- Scrapes sample cases as YAML
- Tests a source file with downloaded sample cases
- Submits a source file
- Downloads source file you have submitted

| | Register to a contest | Get sample test cases | Get system test cases | Submit | Get submissions | Watch submissions |
| :--------: | :-------------------: | :-------------------: | :-------------------: | :----------------: | :-------------: | :----------------: |
| AtCoder | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: |
| Codeforces | :x: | :heavy_check_mark: | N/A | :heavy_check_mark: | :x: | :x: |
| yukicoder | N/A | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: |

## Instrallation

### GitHub Releases

### `cargo install` (Crates.io)

```console
$ cargo install snowchains
```

### `cargo install` (GitHub)

```console
$ cargo install --git https://github.com/qryxip/snowchains
```

## Usage

```console
$ snowchains -h
snowchains 0.5.2
Ryo Yamashita
Tools for online programming contests

USAGE:
snowchains

FLAGS:
-h, --help Prints help information
-V, --version Prints version information

SUBCOMMANDS:
init Create a new config file [aliases: i]
login Logges in to a service [aliases: l]
participate Participates in a contest
retrieve Retrieves data [aliases: r]
download Alias for `retrieve testcases` [aliases: d]
watch Watches data [aliases: w]
judge Tests code [aliases: j, test, t]
submit Submits code [aliases: s]
xtask Runs a custom subcommand written in the config file [aliases: x]
help Prints this message or the help of the given subcommand(s)
$ snowchains r -h
snowchains-retrieve 0.5.2
Ryo Yamashita
Retrieves data

USAGE:
snowchains retrieve

FLAGS:
-h, --help Prints help information
-V, --version Prints version information

SUBCOMMANDS:
languages Retrieves list of languages [aliases: l]
testcases Retrieves test cases [aliases: t]
submission-summaries Retrieves submission summaries [aliases: ss]
help Prints this message or the help of the given subcommand(s)
$ snowchains w -h
snowchains-watch 0.5.2
Ryo Yamashita
Watches data

USAGE:
snowchains watch

FLAGS:
-h, --help Prints help information
-V, --version Prints version information

SUBCOMMANDS:
submissions Watches your submissions [aliases: s]
help Prints this message or the help of the given subcommand(s)
```

```console
$ snowchains i .
Wrote `/home/ryo/src/local/a/snowchains.dhall`
$ snowchains x setup -h
usage: snowchains xtask setup [-h] [-p [PROBLEM [PROBLEM ...]]] service contest {cpp,rs} {code,vim,emacs}

positional arguments:
service
contest
{cpp,rs}
{code,vim,emacs}

optional arguments:
-h, --help show this help message and exit
-p [PROBLEM [PROBLEM ...]], --problems [PROBLEM [PROBLEM ...]]
$ echo "$ATCODER_USERNAME\n$ATCODER_PASSWORD" | snowchains x setup atcoder practice cpp code
GET https://atcoder.jp/contests/practice/tasks ... 404 Not Found
GET https://atcoder.jp/contests/practice ... 200 OK
Username: Password: GET https://atcoder.jp/login ... 200 OK
POST https://atcoder.jp/login ... 302 Found
GET https://atcoder.jp/settings ... 200 OK
GET https://atcoder.jp/contests/practice ... 200 OK
GET https://atcoder.jp/contests/practice/tasks ... 200 OK
GET https://atcoder.jp/contests/practice/tasks_print ... 200 OK
A: Saved to /home/ryo/src/local/a/.snowchains/tests/atcoder/practice/a.yml (2 test cases)
B: Saved to /home/ryo/src/local/a/.snowchains/tests/atcoder/practice/b.yml (interactive problem)
Opening https://atcoder.jp/contests/practice/tasks/practice_1 ...
Opening https://atcoder.jp/contests/practice/tasks/practice_2 ...
```

![Screenshot](https://user-images.githubusercontent.com/14125495/88492107-56435300-cfe3-11ea-92fe-4ce950ebf1bc.png)

![Record](https://user-images.githubusercontent.com/14125495/88492159-b0dcaf00-cfe3-11ea-8daa-c1eb56d293d6.gif)

## License

Dual-licensed under [MIT](https://opensource.org/licenses/MIT) or [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0).