I look at forge the same way. The blacksmith forged a sword in his forge.
grails-forge CLI supports the following 16 commands, only. All but "grails create-functional-test" overlap with grails-shell CLI. create project commands: grails create-app grails create-plugin grails create-restapi grails create-web-plugin grails create-webapp create files: grails create-command grails create-controller grails create-domain-class grails create-functional-test grails create-integration-test grails create-interceptor grails create-scaffold-controller grails create-script grails create-service grails create-taglib grails create-unit-test I like making the commands distinct, for clarity. In interactive mode, both CLIs support auto-completion, with grails-forge CLI autocompletion being more intelligent, but limited by only supporting 16 commands. Both CLIs support features (required & optional) With this proposal, 16 commands with "create-*" are changed to "forge-*" plus "grails forge" would be mapped from the wrapper to run grails-forge CLI. Any others would run grails-shell CLI. This is close enough to having two commands "grails" and "grailsforge", while combining into what appears to be one command, that I am onboard. The hard part will be the plumbing to make this all work. grails-wrapper does this for grails-shell CLI currently, by downloading a fat jar to ".grails/wrapper", but we will need to determine if the grails-forge CLI side is still graalvm native binaries vs standard java. +1 On 2025/02/28 13:40:54 Mattias Reichel wrote: > As many of you know, the old "Grails Shell CLI" (the grails executable > distributed with SDKMAN up to Grails 5, also runnable via ./grailsw) has > been restored in Grails 7. Meanwhile, the "Grails Forge CLI" (introduced > and distributed via SDKMAN for Grails 6, and powering start.grails.org) > remains the current grails CLI in Grails 7.0.0-M1. > > Discussions are ongoing about how best to merge these tools to combine > their strengths. In the last Weekly Meeting (2024-02-27), we considered > generating a single "wrapper" executable that delegates to the appropriate > CLI based on the provided arguments. > > After the meeting, one thought struck me: "forge" is both a noun and a > verb. We could leverage this to differentiate between the two CLIs in a > natural way: > > - grails vs. grails forge for interactive mode > - grails create-app myApp vs. grails forge-app myApp > - grails create-plugin myPlugin vs. grails forge-plugin myPlugin > - grails create-controller myController vs. grails forge-controller > myController > ...and so on. > > Since "forging" is pretty much all that the "Grails Forge CLI" does, this > could make the distinction intuitive for users. > > Of course, there may be caveats that I have not thought of, but I wanted to > put this idea out there for brainstorming. Thoughts? >