Skip to content

cli: live progress output, comprehensive --help, and --mascotte flag - #615

Merged
nahime0 merged 15 commits into
mainfrom
feat/cli-improvements
Jul 24, 2026
Merged

cli: live progress output, comprehensive --help, and --mascotte flag#615
nahime0 merged 15 commits into
mainfrom
feat/cli-improvements

Conversation

@nahime0

@nahime0 nahime0 commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

  • Live per-phase spinner during compilation, cargo-style "Linking" lines for bridge crates (pdo, tls, ...), colorized
    errors/warnings/success output, and a --timings report with per-phase percentages — all gated behind a single "decorated" switch
    (interactive terminal + not --quiet), so piped/CI output stays byte-identical to before
  • New --quiet/-q flag to force plain output
  • Comprehensive -h/--help with a categorized flag reference (Modes, Output modes, Target, Codegen, Linking, Diagnostics,
    Other); every parameter error now prints a consistent error: <message> + usage + --help hint instead of a bare message or a
    dense one-liner
  • --mascotte easter egg: prints an ASCII mascot + a random zen/developer quote before any other output
  • Unrelated: fixed the showcases/doom PHP demo, which didn't compile (untyped class properties inferred as Void|Int; one

Test plan

  • cargo build warning-free
  • Focused cargo test filters covering every new module/function (progress, timings, errors::report, cli) all passing
  • Manual smoke tests: --help/-h, every parameter-error path, --quiet, --mascotte (including quote variance across
    runs), plain/piped output byte-compared against pre-branch text (zero ANSI bytes)

nahime0 added 15 commits July 23, 2026 12:42
Camera, MapData, WadFile, WadEntry, and Renderer declared several
int/string properties without a type annotation, assigned only in the
constructor. The checker inferred those reads as Void|Int instead of
Int, which failed a strict int parameter (Game::isBlockingTwoSidedLinedef)
and a strict-typed local (Renderer's $thingFloor), the latter cascading
into "undefined variable" errors for everything derived from it.

Also works around issue #497 (buffer<T> indexing rejects a Mixed index
produced by non-constant int arithmetic): cast the loop-counter index to
(int) at the one Renderer.php site where it's re-read after a
reassign-and-continue branch.
…s always a multiple of 1000 on macOS, pinning the quote to index 0)
They change what kind of program gets built (HTTP server vs. CLI binary,
PHP-compatible-only vs. elephc extensions) rather than tweaking codegen
output, and are important enough to lead the flag reference instead of
being buried in Codegen.
@github-actions github-actions Bot added area:platform Touches targets, object formats, linking, or platform support. size:m Medium-sized pull request. type:feature Introduces new user-visible behavior or capabilities. labels Jul 23, 2026
@nahime0
nahime0 merged commit d99210d into main Jul 24, 2026
115 checks passed
@nahime0
nahime0 deleted the feat/cli-improvements branch July 24, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:platform Touches targets, object formats, linking, or platform support. size:m Medium-sized pull request. type:feature Introduces new user-visible behavior or capabilities.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant