Closed qryxip closed 4 years ago
Done!
以下を除き既存の動作には影響がないはずです。
new
の--bins
を--problems
に改名Fixes #39. (readmeいじったときに修正してしまった。分離するのも面倒だしそのままで)
first commentに書かないとlinkされないらしい
readmeでは「プロジェクト」という単語をすべて「パッケージ」に置き換えました。 Rustでは"project"は"another name for a package"とされていて公式ドキュメントでも頻繁に使われていますが、今回の場合 workspaceと混同しないかなと思ったので。
提出も問題無く動きます。
あとpackage.metadata.cargo-atcoder
をこのようにすればAtCoder Problemsのvirtual contest機能で楽に使えるのでは?というアイディアが浮かんできました。
[package.metadata.cargo-atcoder.problems]
a = { bin = "abc126-a", screen-name = "abc126_a", contest = "abc126" }
b = { bin = "abc126-b", screen-name = "abc126_b", contest = "abc126" }
c = { bin = "abc126-c", screen-name = "abc126_c", contest = "abc126" }
d = { bin = "abc126-d", screen-name = "abc126_d", contest = "abc126" }
e = { bin = "abc126-e", screen-name = "abc126_e", contest = "abc126" }
f = { bin = "abc126-f", screen-name = "abc126_f", contest = "abc126" }
cargo atcoder new
時にCargo.tomlが
[workspace]
だと
[workspace]
members =["abc126"]
のように微妙な感じになるのを修正。
-*arr = toml_edit::Array::default();
+for i in (0..arr.len()).rev() {
+ arr.remove(i);
+}
cargo new
時のメッセージを一行追加。
Added "abc152" to `workspace.members` at /home/ryo/src/local/workspace/Cargo.toml
Created binary (application) `abc152` package
+ Removed the `main.rs` in `abc152`
Added 6 `bin`(s) to `abc152`
Modified `abc152` successfully
Skipping warming up
cargo atcoder migrate
コマンドを追加。 @likr さんのlikr/atcoderで動いた。 (ただし tenka1-2018-beginner.bak
というディレクトリを削除する必要がある-g '!/*.bak'
で除外できるようにした)
(edit) テストを追加
migrate
コマンドにripgrepの-g, --glob <GLOB>
オプションを追加。 workspace.exclude
は付け加えないように。このPR、closeしようと思います。私個人はcargo-competeを作って今はそれを使っていますし、この機能はcargo-atcoderにそぐわないんじゃないかなと思い始めたので。
大量のパッケージを一つのworkspaceに押し込めると流石に重くなるし、その時々でworkspace memberを絞るというのも面倒。
cargo-competeでは一つのパッケージに"focus"してその他を"deactivate"するオプションを入れているけど「切り替え」が面倒。
Rust、というよりCargoに慣れていない人でも容易に扱えるような良い方法が思いつかない。
[[bin]]
のリネームにより、プロジェクトの状態がわかりにくくなる。
[package.metadata.cargo-atcoder.problems]
a = { bin = "abc100-a" }
[[bin]]
name = "abc100-a"
path = "./src/bin/a.rs"
またcargo run --bin
も少しだけ面倒になる。
-$ cargo run --bin a
+$ cargo run --bin some-contest-a
「以前の動作」を可能なままにしてあるが、READMEを上手く書かないと二種類の動作をすることについて混乱をもたらしそう。
1., 2., 3.によりRust初学者が混乱する。初学者にとっては、些細なものだとしてもトラブルに遭遇する機会は無ければ無いほど良い。「使い方がわからない」より「使えるけどコンテストの度に数分ビルドが必要」のほうが圧倒的にまし。
Closes #35. Fixes #39. (readmeいじったときに修正してしまった。分離するのも面倒だしそのままで)