Skip to content

Commit

Permalink
Merge #54
Browse files Browse the repository at this point in the history
54: Update `snowchains_core` to v0.5.0 r=qryxip a=qryxip

bors r+


Co-authored-by: Ryo Yamashita <[email protected]>
  • Loading branch information
bors[bot] and qryxip authored Aug 25, 2020
2 parents 4505ed9 + aa017d7 commit c6fd18a
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 40 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## [Unreleased]

### Added

- [`retrieve testcases`] Enabled downloading all of the test cases on Dropbox. ([qryxip/snowchains#89](https://github.com/qryxip/snowchains/pull/89))

## [0.4.6] - 2020-08-23Z

### Fixed
Expand Down
59 changes: 29 additions & 30 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ base64 = "0.12.3"
cargo-member = "0.2.1"
derivative = "2.1.1"
dirs = "3.0.1"
easy-ext = "0.2.2"
easy-ext = "0.2.3"
fwdansi = "1.1.0"
heck = "0.3.1"
human-size = "0.4.1"
Expand All @@ -47,7 +47,7 @@ serde = { version = "1.0.115", features = ["derive"] }
serde_json = "1.0.57"
serde_yaml = "0.8.13"
shell-escape = "0.1.5"
snowchains_core = "0.4.2"
snowchains_core = "0.5.0"
structopt = "0.3.16"
strum = { version = "0.19.2", features = ["derive"] }
tempfile = "3.1.0"
Expand Down
30 changes: 24 additions & 6 deletions README-ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,11 @@ Gitリポジトリ下に、各サイトに対する[ワークスペース](https
[`compete.toml`](#設定)`new-workspace-member``"include"`の場合、他の既存のパッケージとビルドキャッシュを共有します。
クレートを使う場合も初回を除いて"warmup"は不要です。

パッケージが増えすぎたら`"include"`から`"focus"`に変更してください。
パッケージが増えすぎたら、というより2個以上になった時点で`"include"`から`"focus"`に変更してください。
`cargo compete new`時に既存のパッケージを`workspace.members`から外して[無効化](https://github.com/rust-lang/cargo/blob/7bce509826e29bd79566f7a33621fea7e7a657f9/src/cargo/core/workspace.rs#L797-L807)します。
ビルドキャッシュはそのまま使われます。
その場合`workspace.{member, exclude}`を操作するツールとして[cargo-member](https://github.com/qryxip/cargo-member)というのも作ってあるのでこれを使ってください。
また有効なパッケージを一つに絞る利点として、`test`, `submit`等の「パッケージを対象に取る」コマンドが"workspace root"から実行できるという点があります。

`"exclude"`の場合独立したワークスペースが作られます。
こちらは`cargo atcoder new`の挙動に近いです。
Expand All @@ -104,15 +105,32 @@ Windows上では一般ユーザーでシンボリックリンクを作れるよ

テストケースの再取得を行います。

**パッケージを対象に取ります。ワークスペースメンバーが2つ以上ある場合、そのうちの一つに`cd`するか`--manifest-path`または`-p`で指定して実行してください。**
**パッケージを対象に取ります。**

![Screenshot](https://user-images.githubusercontent.com/14125495/89116606-04ae3300-d4d1-11ea-9306-0c3fed6a2797.png)

プラットフォームが使っているテストケースを公開している場合、`--full`を指定することでそちらをダウンロードすることができます。

AtCoderの場合、[テストケースはDropboxにアップロードされている](https://atcoder.jp/posts/20)のでそちらからダウンロードします。ただし[Dropbox API](https://www.dropbox.com/developers/documentation/http/overview)を使用するため

- `files.metadata.read`
- `sharing.read`

の2つのパーミッションが有効なアクセストークンが必要です。何らかの方法でアクセストークンを取得し、以下の形式のJSONファイルを<code>[{data local directory}](https://docs.rs/dirs/3/dirs/fn.data_local_dir.html)/cargo-compete/tokens/dropbox.json</code>に保存してください。(この辺はなんとかしたいと考えてます)

```
{
"access_token": "<access token>"
}
```

![Record](https://user-images.githubusercontent.com/14125495/91205166-14234380-e740-11ea-91e4-52894ca44b36.gif)

### `cargo compete retrieve submission-summaries`

自分の提出の一覧を取得し、JSONで出力します。

**パッケージを対象に取ります。ワークスペースメンバーが2つ以上ある場合、そのうちの一つに`cd`するか`--manifest-path`または`-p`で指定して実行してください。**
**パッケージを対象に取ります。**

![Record](https://user-images.githubusercontent.com/14125495/89495297-f7f04e80-d7f2-11ea-9973-88763993e70a.gif)

Expand All @@ -127,13 +145,13 @@ $ xdg-open "$(cargo compete r ss | jq -r '.summaries[0].detail')"

`new``--open`と同様に問題のページをブラウザで、コードとテストファイルをエディタで開きます。

**パッケージを対象に取ります。ワークスペースメンバーが2つ以上ある場合、そのうちの一つに`cd`するか`--manifest-path`または`-p`で指定して実行してください。**
**パッケージを対象に取ります。**

### `cargo compete test`

テストを行います。

**パッケージを対象に取ります。ワークスペースメンバーが2つ以上ある場合、そのうちの一つに`cd`するか`--manifest-path`または`-p`で指定して実行してください。**
**パッケージを対象に取ります。**

`compete.toml`と対象パッケージの`[package.metadata]`からどのテストケースを使うかを決定します。

Expand All @@ -145,7 +163,7 @@ $ xdg-open "$(cargo compete r ss | jq -r '.summaries[0].detail')"

![Record](https://user-images.githubusercontent.com/14125495/90531691-546b4a80-e1b1-11ea-95c2-c205e5640f72.gif)

**パッケージを対象に取ります。ワークスペースメンバーが2つ以上ある場合、そのうちの一つに`cd`するか`--manifest-path`または`-p`で指定して実行してください。**
**パッケージを対象に取ります。**

対象パッケージの`[package.metadata]`から提出先のサイトと問題を決定します。

Expand Down
17 changes: 15 additions & 2 deletions src/web/credentials.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,21 @@ pub(crate) fn username_and_password<'a>(
pub(crate) fn dropbox_access_token() -> anyhow::Result<String> {
let path = token_path("dropbox.json")?;

let DropboxJson { access_token } = crate::fs::read_json(&path)
.with_context(|| format!("First, save the access token to `{}`", path.display()))?;
let DropboxJson { access_token } = crate::fs::read_json(&path).with_context(|| {
format!(
r#"first, save a JSON to `{}` in the following format.
```
{{
"access_token": "<Dropbox access token>"
}}
```
The access token must have these permissions.
- `files.metadata.read`
- `sharing.read`
"#,
path.display()
)
})?;

return Ok(access_token);

Expand Down

0 comments on commit c6fd18a

Please sign in to comment.