From 25c1727b5f1eca2a18acfbfcfb74a3e0119e1ca3 Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Wed, 26 Aug 2020 01:31:50 +0900 Subject: [PATCH 1/3] Update `snowchains_core` to v0.5.0 --- CHANGELOG.md | 6 ++++++ Cargo.lock | 59 ++++++++++++++++++++++++++-------------------------- Cargo.toml | 4 ++-- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d67139..1daec32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/Cargo.lock b/Cargo.lock index 1085a79..01b0eed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "az" @@ -400,6 +400,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" +[[package]] +name = "crossbeam-channel" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ee0cc8804d5393478d743b035099520087a5186f3b93fa58cec08fa62407b6" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.7.3" @@ -426,17 +436,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "maybe-uninit", -] - [[package]] name = "crossbeam-utils" version = "0.7.2" @@ -625,9 +624,9 @@ dependencies = [ [[package]] name = "easy-ext" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a8eb435d3eadce855cb8dd4b36b0152c6758a3bda2a6696a9ce50129967ee8" +checksum = "73bb6373ab18cda357d060e1cc36ca2f3fc2783a81b033087a55ac2829cfa737" dependencies = [ "quote", "syn", @@ -653,9 +652,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171" +checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" dependencies = [ "cfg-if", ] @@ -1866,9 +1865,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f02856753d04e03e26929f820d0a0a337ebe71f849801eea335d464b349080" +checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" dependencies = [ "autocfg", "crossbeam-deque", @@ -1878,12 +1877,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92e15d89083484e11353891f1af602cc661426deb9564c298b270c726973280" +checksum = "91739a34c4355b5434ce54c9086c5895604a9c278586d1f1aa95e04f66b525a0" dependencies = [ + "crossbeam-channel", "crossbeam-deque", - "crossbeam-queue", "crossbeam-utils", "lazy_static", "num_cpus", @@ -2278,9 +2277,9 @@ checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" [[package]] name = "snowchains_core" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e395384ae58a3d64e278879a3e2c167412c3f58d24da188d448c3ac2cc5c484a" +checksum = "cd09c462bb1fc7f1153f94709b4990b9210eff686ead2559876a1710b8581074" dependencies = [ "anyhow", "chrono", @@ -2346,9 +2345,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "standback" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0437cfb83762844799a60e1e3b489d5ceb6a650fbacb86437badc1b6d87b246" +checksum = "33a71ea1ea5f8747d1af1979bfb7e65c3a025a70609f04ceb78425bc5adad8e6" dependencies = [ "version_check", ] @@ -2507,9 +2506,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e69abc24912995b3038597a7a593be5053eb0fb44f3cc5beec0deb421790c1f4" +checksum = "891d8d6567fe7c7f8835a3a98af4208f3846fba258c1bc3c31d6e506239f11f9" dependencies = [ "proc-macro2", "quote", @@ -2776,9 +2775,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db63662723c316b43ca36d833707cc93dff82a02ba3d7e354f342682cc8b3545" +checksum = "4f0e00789804e99b20f12bc7003ca416309d28a6f495d6af58d1e2c2842461b5" dependencies = [ "lazy_static", ] diff --git a/Cargo.toml b/Cargo.toml index 1b9eea3..2aa310d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" @@ -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" From ccec0a026458b7d741d0fd6107b775e4222c3070 Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Wed, 26 Aug 2020 02:28:36 +0900 Subject: [PATCH 2/3] Update an error message --- src/web/credentials.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/web/credentials.rs b/src/web/credentials.rs index 8a8215b..189cdc4 100644 --- a/src/web/credentials.rs +++ b/src/web/credentials.rs @@ -19,8 +19,21 @@ pub(crate) fn username_and_password<'a>( pub(crate) fn dropbox_access_token() -> anyhow::Result { 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": "" +}} +``` +The access token must have these permissions. +- `files.metadata.read` +- `sharing.read` +"#, + path.display() + ) + })?; return Ok(access_token); From aa017d7058a2e0ed87eb3e438bfe8fe614d988ba Mon Sep 17 00:00:00 2001 From: Ryo Yamashita Date: Wed, 26 Aug 2020 02:34:24 +0900 Subject: [PATCH 3/3] Update README-ja.md --- README-ja.md | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/README-ja.md b/README-ja.md index fed40ed..2ebc9ed 100644 --- a/README-ja.md +++ b/README-ja.md @@ -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`の挙動に近いです。 @@ -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ファイルを[{data local directory}](https://docs.rs/dirs/3/dirs/fn.data_local_dir.html)/cargo-compete/tokens/dropbox.jsonに保存してください。(この辺はなんとかしたいと考えてます) + +``` +{ + "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) @@ -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]`からどのテストケースを使うかを決定します。 @@ -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]`から提出先のサイトと問題を決定します。