You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
LuCLI: wheels new myapp — full project scaffolding #1943
Port wheels new myapp full project scaffolding from CommandBox CLI to LuCLI, creating a complete Wheels project directory with lucee.json, config files, and starter controller/view.
Merit Assessment
Recommendation: Proceed with modifications
The new() function already exists in Module.cfc (line 233) and delegates to scaffoldNewApp() (line 1005), which creates the full directory structure, lucee.json, config/app.cfm, config/routes.cfm, a Main controller, and an index view. This is largely already implemented.
The current implementation is self-contained (inline file writes) rather than using the Templates service, which is fine for now but diverges from the legacy CLI's approach of downloading a ForgeBox template package.
Missing compared to the legacy generate/app.cfc: .env file, .gitignore, config/settings.cfm, config/environment.cfm, H2 datasource setup, Bootstrap option, and box.json/server.json. Some of these are CommandBox-specific and should be dropped; others (.env, .gitignore, settings.cfm, environment.cfm) are universally useful.
Implementation Plan
The scaffolding skeleton is already functional. The remaining work is filling gaps:
Add missing config files to scaffoldNewApp() (line 1005 of Module.cfc):
config/settings.cfm — set reloadPassword, dataSourceName (currently only in config/app.cfm)
.gitignore — exclude .env, db/, vendor/, .lucli/, etc.
Add app/views/layout.cfm — the default HTML layout wrapper (currently missing; Wheels expects it)
Add optional flags to new():
--setupH2 or --database=h2 — write H2 datasource config into lucee.jsonconfiguration.datasources
--template= — allow selecting from bundled templates (stretch goal, not needed for MVP)
Consider extracting to a service — services/AppScaffold.cfc — to keep Module.cfc from growing further (it's already 1,388 lines). This also makes testing easier.
Vendor Wheels framework — the scaffolded app references vendor/wheels/ in mappings but doesn't copy the framework there. Need to either bundle it or print a "next step: install wheels" instruction.
Estimated complexity: Low-medium. 2-3 hours. Most of the hard work (directory creation, lucee.json generation) is done.
Risk: The legacy generate/app.cfc downloads templates from ForgeBox via CommandBox's packageService.installPackage(). LuCLI cannot do this. The inline approach is correct for LuCLI but means template updates require code changes rather than just publishing a new ForgeBox package. This is an acceptable tradeoff for now.
Risk:lucee.json config structure may drift from what LuCLI expects as LuCLI evolves. Pin to a known-working schema.
Automated analysis by @claude — review and adjust as needed.
Activity
bpamiri commentedon Mar 16, 2026
Analysis
Synopsis
Port
wheels new myappfull project scaffolding from CommandBox CLI to LuCLI, creating a complete Wheels project directory withlucee.json, config files, and starter controller/view.Merit Assessment
Recommendation: Proceed with modifications
new()function already exists inModule.cfc(line 233) and delegates toscaffoldNewApp()(line 1005), which creates the full directory structure,lucee.json,config/app.cfm,config/routes.cfm, a Main controller, and an index view. This is largely already implemented.generate/app.cfc:.envfile,.gitignore,config/settings.cfm,config/environment.cfm, H2 datasource setup, Bootstrap option, andbox.json/server.json. Some of these are CommandBox-specific and should be dropped; others (.env,.gitignore,settings.cfm,environment.cfm) are universally useful.Implementation Plan
The scaffolding skeleton is already functional. The remaining work is filling gaps:
Add missing config files to
scaffoldNewApp()(line 1005 ofModule.cfc):config/settings.cfm— setreloadPassword,dataSourceName(currently only inconfig/app.cfm)config/environment.cfm— environment detection boilerplate.env— placeholderRELOAD_PASSWORD=,DATASOURCE_NAME=,LUCEE_ADMIN_PASSWORD=.gitignore— exclude.env,db/,vendor/,.lucli/, etc.Add
app/views/layout.cfm— the default HTML layout wrapper (currently missing; Wheels expects it)Add optional flags to
new():--setupH2or--database=h2— write H2 datasource config intolucee.jsonconfiguration.datasources--template=— allow selecting from bundled templates (stretch goal, not needed for MVP)Consider extracting to a service —
services/AppScaffold.cfc— to keepModule.cfcfrom growing further (it's already 1,388 lines). This also makes testing easier.Vendor Wheels framework — the scaffolded app references
vendor/wheels/in mappings but doesn't copy the framework there. Need to either bundle it or print a "next step: install wheels" instruction.Estimated complexity: Low-medium. 2-3 hours. Most of the hard work (directory creation,
lucee.jsongeneration) is done.Dependencies & Risks
generate/app.cfcdownloads templates from ForgeBox via CommandBox'spackageService.installPackage(). LuCLI cannot do this. The inline approach is correct for LuCLI but means template updates require code changes rather than just publishing a new ForgeBox package. This is an acceptable tradeoff for now.lucee.jsonconfig structure may drift from what LuCLI expects as LuCLI evolves. Pin to a known-working schema.Automated analysis by @claude — review and adjust as needed.
bpamiri commentedon Mar 25, 2026
Implemented in develop.
3128a81feat: wire wheels new/create/generate app commands into LuCLI Module.cfc (wh-glj.3)