# Task

Produce a **complete, runnable** program (a single source file) that implements a **static blog generator** CLI—conceptually similar to Hugo (not full feature parity).

## Required behavior

1. **Templates**: If `templates/top.html` and/or `templates/bottom.html` exist, wrap each generated page: top HTML + rendered body + bottom HTML. If a template file is missing, emit the body alone.
2. **Content**: Read Markdown from `content/*.md` (recursive or top-level only—your choice, but be consistent). Render each file to HTML under an output directory (default `site/`). Preserve a sensible URL layout (e.g. `content/a/b.md` → `site/a/b/index.html` or `site/a/b.html`—pick one and document in a comment at the top of the file).
3. **CLI**:
   - **Default** (no subcommand): build the site from the current working directory (optional `--root <dir>` is allowed).
   - **`--init`**: create a **full** initial project tree: `templates/`, `content/`, default `templates/top.html`, `templates/bottom.html`, and **`content/home.html`** (plus anything else required) such that running the generator **without** `--init` on that tree produces a complete `site/` with at least a home page. Subsequent runs should allow adding more files under `content/`.
4. **Execution**: The program must be suitable for `cargo run` with dependencies you declare (use common crates: CLI parsing, Markdown → HTML, path walking, etc.).

## Output contract

- Emit **only** the full source code for **`main.rs`** (no prose before or after).
- No markdown code fences unless your answer would be ambiguous without them; prefer raw source.
- No `TODO` or placeholder logic: the program must be logically complete.

**Target language:** Rust **2021 edition**. Use `std` and crates as needed; structure the binary so it can be placed at `src/main.rs` in a Cargo project.
