docs: bootstrap vault, roadmap and research
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
---
|
||||
type: sprint
|
||||
number: 1
|
||||
status: planned
|
||||
started:
|
||||
finished:
|
||||
hours-planned: 20
|
||||
hours-logged: 0
|
||||
tags: [sprint, rust-basics]
|
||||
---
|
||||
|
||||
# Sprint 1 — Rust core via `vls`
|
||||
|
||||
## Theme
|
||||
Learn 80% of everyday Rust syntax by writing a real tool: `viexp ls`, a better `ls`.
|
||||
|
||||
## App deliverable
|
||||
`viexp ls [PATH]` with: colored entries by type (dir/symlink/exec/image/archive), human sizes
|
||||
(`1.4 K`, `2.1 M`), `--sort name|size|mtime`, `--hidden` toggle, `--long` (perms, dates),
|
||||
`--json` (for tests), ≥10 unit tests, clippy clean.
|
||||
|
||||
## Rust focus — the vital 20%
|
||||
Variables & shadowing, scalar types, functions, `if let`/`match`, loops & labels, `Vec`,
|
||||
`String` vs `&str`, structs + methods, enums + `match` exhaustiveness, `Option`/`Result`,
|
||||
the `?` operator, modules & `use`, `#[cfg(test)]` + `#[test]`.
|
||||
Resources: Rust Book ch. 1–6, 7 (modules), 9 (errors) — **in English only**; rustlings
|
||||
exercises `intro…functions…if…quiz1…enums…options…errors1-3`.
|
||||
|
||||
## Practice drills (20–30 min each — target ≈2 per day in week 1, features in week 2+)
|
||||
- [ ] D1 — `read_dir` → print bare names; handle the `Result` with `?` and `anyhow` at `main`.
|
||||
- [ ] D2 — `FileEntry` struct: name, is_dir, is_symlink, size, mtime; build with `metadata()`.
|
||||
- [ ] D3 — Human size formatting fn + unit tests (B→K→M→G boundary values).
|
||||
- [ ] D4 — Sorting: implement 3 comparators, `--sort` flag parsing (no clap yet — `std::env`).
|
||||
- [ ] D5 — Colors: ANSI escape codes by hand (no crate) — learn what crates hide from you.
|
||||
- [ ] D6 — `--hidden` filter (dotfiles) + tests.
|
||||
- [ ] D7 — `--long` view: permissions string (`rwxr-x---`), date formatting.
|
||||
- [ ] D8 — Refactor into `src/entry.rs`, `src/render.rs`, `src/cli.rs` — modules & `pub`.
|
||||
- [ ] D9 — `--json` output via serde; golden-file test.
|
||||
- [ ] D10 — Adopt `clap` for flags (derive API) — your first "big" crate.
|
||||
- [ ] D11 — rustlings: enums + options + errors tracks.
|
||||
- [ ] D12 — Review week: read your own code, note 3 things clippy taught you.
|
||||
|
||||
## English focus
|
||||
README usage section; draft article "Why build a file manager in Rust" (150–200 words is enough).
|
||||
|
||||
## Session rhythm (45 min)
|
||||
5 min review → 30 min drill → 10 min DevLog + ErrorJournal.
|
||||
|
||||
## Definition of done
|
||||
- [ ] `viexp ls ~/` is nicer than `ls` for your own eyes
|
||||
- [ ] ≥10 tests green, clippy clean, CI green
|
||||
- [ ] Article draft published in `docs/articles/`
|
||||
- [ ] Retro filled; Sprint-2 milestone issues created
|
||||
|
||||
## Retrospective
|
||||
### Shipped
|
||||
### Frustrations
|
||||
### Hours logged / English notes
|
||||
Reference in New Issue
Block a user