fsprojects / FAKE

FAKE - F# Make
https://fake.build
Other
1.28k stars 581 forks source link

Try to clarify CLI --help #2667

Closed mlaily closed 1 year ago

mlaily commented 2 years ago

Description

Try to fix most of my concerns with the CLI --help (see #2666)

Here is the result of fake --help after this PR:

FAKE 5 - F# Make (5.22.0)

Usage:
  fake [fake_opts] run [run_opts] [<script.fsx>] [--] [<scriptargs>...]
  fake [fake_opts] build [build_opts] [--] [<scriptargs>...]
  fake --version
  fake --help | -h

Note `fake build` is basically equivalent to calling `fake run` with a script named `build.fsx`.

Fake options [fake_opts]:
  -v, --verbose [*]        Verbose (can be used multiple times)
                           Is ignored if -s is used.
                           * -v: Log verbose but only for FAKE
                           * -vv: Log verbose for Paket as well
  -s, --silent             Be silent.
                           Use this option if you need to pipe your output into another tool or need some additional processing.

Fake Run options [run_opts]:
  -d, --debug              Debug the script.
  -n, --nocache            Disable Fake cache for this run.
  -p, --partial-restore
                           Only restore the required group instead of a full restore,
                           can be set globally by setting the environment variable FAKE_PARTIAL_RESTORE to true.
  --fsiargs <fsiargs> [*]  Arguments passed to the F# interactive.

Fake Build options [build_opts]:
  -d, --debug              Debug the script.
  -n, --nocache            Disable Fake cache for this run.
  -p, --partial-restore
                           Only restore the required group instead of a full restore,
                           can be set globally by setting the environment variable FAKE_PARTIAL_RESTORE to true.
  --fsiargs <fsiargs> [*]  Arguments passed to the F# interactive.
  -f, --script <script.fsx>
                           The script to execute (defaults to `build.fsx`).

 ----- SCRIPT ARGUMENTS SECTION -----

Remaining arguments following the previously defined options are provided to the script.

Each script might understand different arguments,
but since there are good chances you are using the 'Fake.Core.Target' package,
its command-line is documented below.

THIS SECTION ONLY APPLIES IF YOU USE THE 'Fake.Core.Target' PACKAGE IN YOUR SCRIPT!

You can use the following arguments in place of `<scriptargs>`:

(`fake-run` refers to the Fake command and arguments defined above)

Usage:
  fake-run --list
  fake-run --write-info <file>
  fake-run --version
  fake-run --help | -h
  fake-run [target_opts] [target <target>] [--] [<targetargs>...]

Target Module options [target_opts]:
    -t, --target <target>    Run the given target (ignored if a target is already provided with '[target <target>]')
    -e, --environment-variable <keyval> [*]
                             Set an environment variable. Use 'key=val'.
                             Consider using regular arguments, see https://fake.build/core-targets.html
    -s, --single-target      Run only the specified target.
    -p, --parallel <num>     Run parallel with the given number of tasks.

 ----- END OF SCRIPT ARGUMENTS SECTION -----

Warning:

Ordering of arguments does MATTER.
`fake -v run script.fsx` executes `script.fsx` in verbose mode.
`fake run -v script.fsx` will try to execute a script named '-v' and fail.

If a script argument/option conflicts with any of the options allowed before,
you need to separate script options with `--`.
The reverse is also true: to print all targets, you can use
`fake build --list` instead of `fake build -- --list`
because `--list` doesn't conflict with any of the [build_opts].

Basic examples:

Specify script file and execute default script action:
    fake run mybuildscript.fsx

Specify script file and run the Clean target:
    fake run build.fsx --target Clean
or shorter version using the default build.fsx script:
    fake build -t Clean
yazeedobaid commented 2 years ago

Also, the failing test in the build has been fixed now, could you please rebase your branch from release/next?

mlaily commented 2 years ago

Hello, thank you for your feedback.

I used the existing dynamic Environment.fakeVersionStr string (though FAKE 5 is still hardcoded in that part^^') as you suggested, and did the rebase.

I updated this PR's description with how the new --help looks with these changes.
It looks a bit more like dotnet -h now, which is nice.

yazeedobaid commented 2 years ago

Hi thanks for the PR Could you please rebase your branch from release/next? Now that the build has been fixed.

mlaily commented 1 year ago

Hi! Done!

mlaily commented 1 year ago

Thanks!