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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions