boj-cli๋ Baekjoon Online Judge๋ฅผ ํฐ๋ฏธ๋์์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ๋์์ฃผ๋ Rust ๊ธฐ๋ฐ ์ปค๋งจ๋๋ผ์ธ ์ธํฐํ์ด์ค์
๋๋ค.
- Cargo.toml
ํ๋ก์ ํธ ์์กด์ฑ ๋ฐ ๋ฉํ์ ๋ณด - src/main.rs
์ํธ๋ฆฌ ํฌ์ธํธ (Cli/Commands์ ์) - src/api/problem.rs
๋ฌธ์ ๋ฉํ๋ฐ์ดํฐ ๋ฐ HTML ํ์ฑ (Problem::fetch) - src/commands/
- init.rs:
boj init์ปค๋งจ๋ - login.rs:
boj login์ปค๋งจ๋ - run.rs:
boj run <๋ฌธ์ ID>์ปค๋งจ๋ - add.rs:
boj add <๋ฌธ์ ID>์ปค๋งจ๋
- init.rs:
- src/templates/
์ธ์ด๋ณ ๊ธฐ๋ณธ ์ฝ๋ ํ ํ๋ฆฟ - src/driver/
Selenium WebDriver ๋ฐ์ด๋๋ฆฌ - src/utils/
๊ณตํต ์ ํธ ํจ์
- ํ๋ก์ ํธ ์ด๊ธฐํ (
boj init)~/.boj-cli/config.toml์์ฑ- ์ธ์ด๋ณ ํ ํ๋ฆฟ ๋ณต์ฌ ๋ฐ ๊ธฐ๋ณธ ์ค์ ๋ฑ๋ก
- ๋ก๊ทธ์ธ (
boj login)- Baekjoon ์ฌ์ดํธ ์ธ์ฆ ํ ์ธ์ ์ฟ ํค ์ ์ฅ
- ๋ฌธ์ ์ถ๊ฐ (
boj add <๋ฌธ์ ID>)- ์น์์ ์ ๋ชฉยท์ค๋ช ยท์ ์ถ๋ ฅ ์์ ํ์ฑ
problems/<ID>๋๋ ํ ๋ฆฌ ์์ฑ ๋ฐ ์ค๋ช ํ์ผ ์์ฑ
- ๋ฌธ์ ์คํ (
boj run <๋ฌธ์ ID>)- ์์ค ํ์ผ ์ปดํ์ผ โ ์คํ โ ํ ์คํธ ์ผ์ด์ค ์๋ ์ ์ฉ
- ์ธ๋ถ ํ๋ก์ธ์ค ์ ์ด(
execute_command)
- Rust
- Async:
tokio - CLI ํ์ฑ:
clap - HTML ํ์ฑ:
scraper - ํ
ํ๋ฆฟ ํฌํจ:
include_dir
boj init
boj login
boj add 1000
boj run 1000์ฆ๊ฑฐ์ด ์ฝ๋ฉ ๋์ธ์! ๐