Skip to content

wheels-base-template package omits the db/ directory — tools/build/base/.gitignore /db/** strips it at publish #3174

Description

@bpamiri

Repro

box install wheels-base-template   # 4.0.3
ls db/
# => doesn't exist

unzip -l wheels-base-template.zip | grep db/ matches nothing.

Expected

The conventional db/ directory ships (the LuCLI wheels new template ships db/), so SQLite/H2 file paths under db/ work without a manual mkdir.

Actual

No db/ in the published zip, even though tools/build/scripts/prepare-base.sh:34 does cp -r db "${BUILD_DIR}/" and db/.keep exists at the v4.0.3 tag.

Root cause

tools/build/base/.gitignore (copied into the build dir as the package .gitignore) contains /db/**, and CommandBox package publish honors .gitignore patterns — so the directory is silently stripped from the zip. Other .keep files (vendor/.keep, tests/_assets/**/.keep) ship fine, confirming it's the ignore pattern, not a .keep/empty-dir limitation.

Suggested fix

Either drop /db/** from tools/build/base/.gitignore and rely on box.json ignore only for publish-time exclusions, or keep the gitignore for end users but whitelist the keep file (!/db/.keep). Add a publish-time assertion (the release.yml 'Validate Package Structure' step) that db/ is present in the prepared directory AND in the final zip.

Evidence from audit journey j1-template-install (wheels-base-template 4.0.3 zip inspected from CommandBox artifact cache, 2026-06-12).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions