Skip to content

RedBe-an/boj-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ boj-cli

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> ์ปค๋งจ๋“œ
  • src/templates/
    ์–ธ์–ด๋ณ„ ๊ธฐ๋ณธ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ
  • src/driver/
    Selenium WebDriver ๋ฐ”์ด๋„ˆ๋ฆฌ
  • src/utils/
    ๊ณตํ†ต ์œ ํ‹ธ ํ•จ์ˆ˜

๐Ÿ”ง ์ฃผ์š” ๊ธฐ๋Šฅ

  1. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” (boj init)
    • ~/.boj-cli/config.toml ์ƒ์„ฑ
    • ์–ธ์–ด๋ณ„ ํ…œํ”Œ๋ฆฟ ๋ณต์‚ฌ ๋ฐ ๊ธฐ๋ณธ ์„ค์ • ๋“ฑ๋ก
  2. ๋กœ๊ทธ์ธ (boj login)
    • Baekjoon ์‚ฌ์ดํŠธ ์ธ์ฆ ํ›„ ์„ธ์…˜ ์ฟ ํ‚ค ์ €์žฅ
  3. ๋ฌธ์ œ ์ถ”๊ฐ€ (boj add <๋ฌธ์ œID>)
    • ์›น์—์„œ ์ œ๋ชฉยท์„ค๋ช…ยท์ž…์ถœ๋ ฅ ์˜ˆ์ œ ํŒŒ์‹ฑ
    • problems/<ID> ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์„ค๋ช… ํŒŒ์ผ ์ž‘์„ฑ
  4. ๋ฌธ์ œ ์‹คํ–‰ (boj run <๋ฌธ์ œID>)
    • ์†Œ์Šค ํŒŒ์ผ ์ปดํŒŒ์ผ โ†’ ์‹คํ–‰ โ†’ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž๋™ ์ ์šฉ
    • ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค ์ œ์–ด(execute_command)

๐Ÿ“ฆ ์‚ฌ์šฉ ๊ธฐ์ˆ 

  • Rust
  • Async: tokio
  • CLI ํŒŒ์‹ฑ: clap
  • HTML ํŒŒ์‹ฑ: scraper
  • ํ…œํ”Œ๋ฆฟ ํฌํ•จ: include_dir

๐ŸŽ‰ ๋น ๋ฅธ ์‹œ์ž‘

boj init
boj login
boj add 1000
boj run 1000

์ฆ๊ฑฐ์šด ์ฝ”๋”ฉ ๋˜์„ธ์š”! ๐Ÿ˜Š

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published