jdaugherty commented on code in PR #14906:
URL: https://github.com/apache/grails-core/pull/14906#discussion_r2206088431


##########
grails-doc/src/en/guide/gettingStarted/downloadingAndInstalling.adoc:
##########
@@ -21,16 +21,48 @@ There are many ways to create a Grails application.
 The best way is to use either https://start.grails.org[start.grails.org] or 
use the Grails CLI via https://sdkman.io[SDKMAN].
 SDKMAN greatly simplifies installing and managing multiple Grails versions.
 
-=== Types of CLI
-
-Historically, Grails had one CLI - `grails shell`.
-In Grails 6, a new CLI was introduced `grails forge` that was meant to replace 
`grails shell`.
-Unfortunately, IntelliJ's Grails plugin relies on the legacy shell to provide 
functions for the IDE.
-For this reason, the decision was made to restore publishing of the 
`grails-shell` in later versions of Grails 6. The other problem is to customize 
application generation, `grails forge` would need to be forked, customized, 
published, and hosted somewhere.
-The process of building and hosting a custom version of `grails-forge` was 
found to be cumbersome for some people because the previous shell allowed for 
customization by providing a directory that laid out a skeleton of what to 
create.
-Worse, some critical plugins, such as the database migration plugin had custom 
commands that cannot be easily imported into the forge cli.
-
-For this reason, Grails 7 adds the following commands to any Grails install:
+=== Types of command-line interface (CLI)
+
+Historically, Grails had one CLI - `grails shell`, until `grails forge` was 
introduced in Grails 6.
+
+==== Grails Shell CLI
+The historical `grails shell` CLI has been a core part of the Grails Framework 
since its inception, providing command-line tools for project creation, code 
generation, and application management.
+Nearly all historical references to the `grails` or `grailsw` commands pertain 
to `grails shell` functionality.
+The `grails shell` CLI relies on Profiles, consisting of skeleton directories 
and YAML-based configurations for application generation.
+However, this approach is less flexible than the feature-rich application 
generation capabilities of `grails forge`.
+The Grails Wrapper is a lightweight script (`grailsw`) and accompanying JAR 
file designed to bootstrap and load the CLI within a Grails Application.
+The `grails shell` CLI provides most of the same application generation 
functionality provided by `grails forge`.
+Importantly, it can also run scripts, such as `run-app` that call Gradle 
and/or your Grails Application.
+Most Grails plugins still include Grails Scripts that execute within `grails 
shell` CLI and have not yet been migrated to Gradle tasks.
+IntelliJ IDEA's Grails plugin depends on `grails shell` for code generation 
and Grails command execution.
+Extending application generation in the grails shell CLI is straightforward: 
developers can create a Custom Profile and reference it as a Maven dependency, 
which is generally simpler than customizing `grails forge`.
+
+==== Restoration of Grails Shell CLI
+In Grails 6.0.0, `grails shell` CLI was removed and replaced with `grails 
forge` CLI.
+However, in Grails 6.2.1, the grails shell CLI, along with Grails Profiles and 
the Wrapper were restored, empowering users to choose their preferred CLI and 
reclaiming functionalities that had not yet been fully transitioned to the 
`grails forge` CLI combined with Gradle tasks.
+
+==== Grails Shell CLI and Gradle
+Certain CLI features overlap between `grails shell` CLI and Gradle.
+
+For Gradle these use the `runCommand` task, IE. `./gradlew runCommand 
-Pargs="generate-all org.bookstore.Author"` or custom Gradle tasks, such as 
`./gradlew dbmGormDiff` for the database migration plugin.

Review Comment:
   "these use" -> "these are"
   
   runScript
   console
   shell
   runCommand 
   
   All of these are gradle based.



##########
grails-doc/src/en/guide/gettingStarted/downloadingAndInstalling.adoc:
##########
@@ -21,16 +21,48 @@ There are many ways to create a Grails application.
 The best way is to use either https://start.grails.org[start.grails.org] or 
use the Grails CLI via https://sdkman.io[SDKMAN].
 SDKMAN greatly simplifies installing and managing multiple Grails versions.
 
-=== Types of CLI
-
-Historically, Grails had one CLI - `grails shell`.
-In Grails 6, a new CLI was introduced `grails forge` that was meant to replace 
`grails shell`.
-Unfortunately, IntelliJ's Grails plugin relies on the legacy shell to provide 
functions for the IDE.
-For this reason, the decision was made to restore publishing of the 
`grails-shell` in later versions of Grails 6. The other problem is to customize 
application generation, `grails forge` would need to be forked, customized, 
published, and hosted somewhere.
-The process of building and hosting a custom version of `grails-forge` was 
found to be cumbersome for some people because the previous shell allowed for 
customization by providing a directory that laid out a skeleton of what to 
create.
-Worse, some critical plugins, such as the database migration plugin had custom 
commands that cannot be easily imported into the forge cli.
-
-For this reason, Grails 7 adds the following commands to any Grails install:
+=== Types of command-line interface (CLI)
+
+Historically, Grails had one CLI - `grails shell`, until `grails forge` was 
introduced in Grails 6.
+
+==== Grails Shell CLI
+The historical `grails shell` CLI has been a core part of the Grails Framework 
since its inception, providing command-line tools for project creation, code 
generation, and application management.
+Nearly all historical references to the `grails` or `grailsw` commands pertain 
to `grails shell` functionality.
+The `grails shell` CLI relies on Profiles, consisting of skeleton directories 
and YAML-based configurations for application generation.
+However, this approach is less flexible than the feature-rich application 
generation capabilities of `grails forge`.
+The Grails Wrapper is a lightweight script (`grailsw`) and accompanying JAR 
file designed to bootstrap and load the CLI within a Grails Application.

Review Comment:
   `the accompanying JAR file is designed` 



##########
grails-doc/src/en/guide/gettingStarted/downloadingAndInstalling.adoc:
##########
@@ -21,16 +21,48 @@ There are many ways to create a Grails application.
 The best way is to use either https://start.grails.org[start.grails.org] or 
use the Grails CLI via https://sdkman.io[SDKMAN].
 SDKMAN greatly simplifies installing and managing multiple Grails versions.
 
-=== Types of CLI
-
-Historically, Grails had one CLI - `grails shell`.
-In Grails 6, a new CLI was introduced `grails forge` that was meant to replace 
`grails shell`.
-Unfortunately, IntelliJ's Grails plugin relies on the legacy shell to provide 
functions for the IDE.
-For this reason, the decision was made to restore publishing of the 
`grails-shell` in later versions of Grails 6. The other problem is to customize 
application generation, `grails forge` would need to be forked, customized, 
published, and hosted somewhere.
-The process of building and hosting a custom version of `grails-forge` was 
found to be cumbersome for some people because the previous shell allowed for 
customization by providing a directory that laid out a skeleton of what to 
create.
-Worse, some critical plugins, such as the database migration plugin had custom 
commands that cannot be easily imported into the forge cli.
-
-For this reason, Grails 7 adds the following commands to any Grails install:
+=== Types of command-line interface (CLI)
+
+Historically, Grails had one CLI - `grails shell`, until `grails forge` was 
introduced in Grails 6.
+
+==== Grails Shell CLI
+The historical `grails shell` CLI has been a core part of the Grails Framework 
since its inception, providing command-line tools for project creation, code 
generation, and application management.
+Nearly all historical references to the `grails` or `grailsw` commands pertain 
to `grails shell` functionality.
+The `grails shell` CLI relies on Profiles, consisting of skeleton directories 
and YAML-based configurations for application generation.
+However, this approach is less flexible than the feature-rich application 
generation capabilities of `grails forge`.
+The Grails Wrapper is a lightweight script (`grailsw`) and accompanying JAR 
file designed to bootstrap and load the CLI within a Grails Application.
+The `grails shell` CLI provides most of the same application generation 
functionality provided by `grails forge`.
+Importantly, it can also run scripts, such as `run-app` that call Gradle 
and/or your Grails Application.
+Most Grails plugins still include Grails Scripts that execute within `grails 
shell` CLI and have not yet been migrated to Gradle tasks.
+IntelliJ IDEA's Grails plugin depends on `grails shell` for code generation 
and Grails command execution.
+Extending application generation in the grails shell CLI is straightforward: 
developers can create a Custom Profile and reference it as a Maven dependency, 
which is generally simpler than customizing `grails forge`.
+
+==== Restoration of Grails Shell CLI
+In Grails 6.0.0, `grails shell` CLI was removed and replaced with `grails 
forge` CLI.
+However, in Grails 6.2.1, the grails shell CLI, along with Grails Profiles and 
the Wrapper were restored, empowering users to choose their preferred CLI and 
reclaiming functionalities that had not yet been fully transitioned to the 
`grails forge` CLI combined with Gradle tasks.
+
+==== Grails Shell CLI and Gradle
+Certain CLI features overlap between `grails shell` CLI and Gradle.
+
+For Gradle these use the `runCommand` task, IE. `./gradlew runCommand 
-Pargs="generate-all org.bookstore.Author"` or custom Gradle tasks, such as 
`./gradlew dbmGormDiff` for the database migration plugin.
+
+Additional details on these commands are covered in other sections of this 
documentation.
+
+==== Grails Forge CLI
+In Grails 6, `grails forge` was introduced to replace the application 
generation features of `grails shell` CLI, while forcing the transition of all 
other historical CLI functionality directly to Gradle tasks.
+This new CLI offers a superior architecture for application generation, 
particularly when incorporating multiple features, and starts and generates 
applications faster than the `grails shell` CLI.
+`grails forge` also powers https://start.grails.org[start.grails.org] and the 
"New Grails Project" feature in JetBrains' IntelliJ IDEA via the Grails Plugin.
+Unfortunately, in Grails 6, but corrected for 7, the grails forge CLI was 
invoked using the historical `grails` command, which confused users due to its 
markedly different feature set and architecture.
+The `grails forge` CLI is dedicated solely to initial application generation 
and the subsequent creation of components such as domains, controllers, 
services, interceptors, and tag libraries, which is all it can do.
+This CLI is entirely offline with precompiled templates and does not run or 
use Gradle or your Grails Application.
+With the `grails forge` CLI, the goal was to transition all other historical 
capabilities provided by the `grails shell` CLI to Gradle tasks.
+Although some advancements have been made in this transition, substantial work 
is still outstanding.
+The `grails forge` can be extended by forking the repository and hosting your 
own Grails Application Forge internally, which is generally more complex than 
extending `grails shell` with a custom profile.
+
+==== Both CLIs exist in Grails 7
+For the reasons listed above Grails 7 includes both CLIs.  `grails-shell`, 
`grails-profiles`, `grails-wrapper` and `grails-forge` projects are now all 
part of the grails-core project and are released together.

Review Comment:
   For the reasons listed above, Grails 7 now includes both CLIs and a combined 
delegating CLI that can invoke either CLI.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@grails.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to