chore(repo): add .editorconfig, reconcile .gitignore, add x clean
Repository hygiene pass (issue #39): - Add `.editorconfig` mirroring ludic-fmt: 2-space indent, LF, UTF-8, trim trailing whitespace and final newline by default; 4-space for Python tooling; keep trailing whitespace in Markdown (hard line breaks). - Reconcile `.gitignore`: root-anchor `/build/` and `/out.ppm`, normalise the misleading `**.zip` glob to `*.zip`, and document that the Kenney art is tracked *extracted* while the download/plugin zips are local-only. `.idea` -> `.idea/`. - Add a `bin/x clean` command that removes `build/`, the root `out.ppm`, and stray `bin/*.tmp`, keeping the toolchain binaries so the running `x` survives. No generated artifacts land outside build/ or bin/, both of which are ignored. Closes #39 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
9ae69e64b4
commit
1c9235a948
4 changed files with 49 additions and 4 deletions
22
.editorconfig
Normal file
22
.editorconfig
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# EditorConfig — machine-enforced formatting conventions for the Ludic repo.
|
||||
# Mirrors ludic-fmt (tools/ludic-tools/fmt.ludic), which re-indents with a
|
||||
# 2-space unit and normalises to LF/UTF-8. https://editorconfig.org
|
||||
root = true
|
||||
|
||||
# Ludic is the primary language; 2-space indent, LF, UTF-8, no trailing
|
||||
# whitespace, and a final newline everywhere by default.
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# The docgen/asset tooling is Python — PEP 8's 4-space indent.
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
# Markdown uses two trailing spaces as a hard line break; keep them.
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
17
.gitignore
vendored
17
.gitignore
vendored
|
|
@ -1,6 +1,15 @@
|
|||
build
|
||||
**.zip
|
||||
out.ppm
|
||||
# Generated build tree: LLVM IR, objects, compiled apps and the docs site all
|
||||
# land under build/ (see `bin/x build` / `bin/x clean`). Root-anchored so a
|
||||
# source dir named "build" elsewhere is never accidentally ignored.
|
||||
/build/
|
||||
|
||||
# Headless render dropped in the working directory by a --headless run.
|
||||
/out.ppm
|
||||
|
||||
# Archives are never tracked: the Kenney art is committed *extracted* under
|
||||
# assets/kenney/**/ (PNG/tmx/License), while the original download .zips and any
|
||||
# packaged plugin .zip are local-only build inputs/outputs.
|
||||
*.zip
|
||||
|
||||
# the toolchain binaries (ludicc, ludic, x, ludic-fmt, ludic-lsp) — all built
|
||||
# into bin/ by the one-line bootstrap + `bin/x build`; never checked in. The
|
||||
|
|
@ -15,7 +24,7 @@ tools/editors/jetbrains/build/
|
|||
|
||||
# IntelliJ plugin SDK sandbox (tools/editors/jetbrains)
|
||||
.intellijPlatform/
|
||||
.idea
|
||||
.idea/
|
||||
|
||||
# macOS Finder metadata
|
||||
.DS_Store
|
||||
|
|
|
|||
|
|
@ -81,3 +81,15 @@ function cmd_app() -> int {
|
|||
print(`done. run: ./{outbin} (from the repo root, so assets/ resolves)`)
|
||||
return 0
|
||||
}
|
||||
|
||||
# Remove every generated artifact and leave the tracked source untouched: the
|
||||
# whole build/ tree (IR, objects, compiled apps), the headless render dropped in
|
||||
# the root (out.ppm), and any stray *.tmp/*.ll left behind by a failed build.
|
||||
# The toolchain binaries in bin/ are kept so the running `x` survives; rebuild
|
||||
# them any time with `x build`.
|
||||
function cmd_clean() -> int {
|
||||
run("rm -rf build")
|
||||
run("rm -f out.ppm bin/*.tmp")
|
||||
print("cleaned: build/, out.ppm, bin/*.tmp (bin/ toolchain kept — `x build` to rebuild)")
|
||||
return 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ program X {
|
|||
print(" x app <file.ludic> [--headless] [--save-temps]")
|
||||
print(" compile a Ludic program to a native app in build/")
|
||||
print(" x tools [--install] [--test] build the editor toolchain (ludic-fmt, ludic-lsp)")
|
||||
print(" x clean remove build/, out.ppm and stray artifacts (keeps bin/)")
|
||||
print("")
|
||||
print("test:")
|
||||
print(" x test the full regression suite")
|
||||
|
|
@ -56,6 +57,7 @@ program X {
|
|||
if (cmd == "build-cli") { exit(cmd_build_cli()) }
|
||||
if (cmd == "app") { exit(cmd_app()) }
|
||||
if (cmd == "tools") { exit(cmd_tools()) }
|
||||
if (cmd == "clean") { exit(cmd_clean()) }
|
||||
if (cmd == "test") { exit(cmd_test()) }
|
||||
if (cmd == "selfhost-test") { exit(cmd_selfhost_test()) }
|
||||
if (cmd == "test-tools") { exit(cmd_test_tools()) }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue