Skip to content

Commit 474f4a2

Browse files
authored
[All] Don't print help message on failed compilation (#4074)
Fix #4017
1 parent 34ca900 commit 474f4a2

File tree

2 files changed

+30
-22
lines changed

2 files changed

+30
-22
lines changed

src/Fable.Cli/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
* [All] Add support for F# `nullness` (by @MangelMaxime)
1414
* [JS/TS] Add support for `Unchecked.nonNull` (by @MangelMaxime)
1515
* [All] Add support for `TreatWarningsAsErrors` (by @MangelMaxime)
16+
* [All] Print help message on unexpected arguments (by @MangelMaxime)
1617

1718
### Fixed
1819

1920
* [JS/TS] Make `nullArgCheck` report the same error message as on .NET (by @MangelMaxime)
2021
* [TS] Sanitize DUs case names when generating constructor function (by @MangelMaxime)
22+
* [All] Don't print help message on failed compilation (by @MangelMaxime)
2123

2224
## 5.0.0-alpha.11 - 2025-03-03
2325

src/Fable.Cli/Entry.fs

+28-22
Original file line numberDiff line numberDiff line change
@@ -142,26 +142,8 @@ let printKnownCliArgs () =
142142
| desc :: extraLines -> [ $" %-18s{args}{desc}"; yield! extraLines |> List.map (sprintf "%20s%s" "") ]
143143
)
144144

145-
let sanitizeCliArgs (args: CliArgs) =
146-
let knownCliArgs =
147-
knownCliArgs () |> List.collect fst |> List.map (fun a -> a.ToLower()) |> set
148-
149-
(Ok args, args.LoweredKeys)
150-
||> List.fold (fun res arg ->
151-
match res with
152-
| Error msg -> Error msg
153-
| Ok args ->
154-
if knownCliArgs.Contains(arg) then
155-
Ok args
156-
else
157-
Error $"Unknown argument: {arg}"
158-
)
159-
160-
let parseCliArgs (args: string list) = CliArgs(args) |> sanitizeCliArgs
161-
162-
let printHelp () =
163-
Log.always
164-
$"""Usage: fable [watch] [.fsproj file or dir path] [arguments]
145+
let generateHelp () =
146+
$"""Usage: fable [watch] [.fsproj file or dir path] [arguments]
165147
166148
Commands:
167149
-h|--help Show help
@@ -179,6 +161,31 @@ Arguments:
179161
Docker mounted volumes, and other virtual file systems.
180162
"""
181163

164+
let generateHelpWithPrefix prefixText =
165+
$"""%s{prefixText}
166+
167+
%s{generateHelp ()}
168+
"""
169+
170+
let printHelp () = generateHelp () |> Log.always
171+
172+
let sanitizeCliArgs (args: CliArgs) =
173+
let knownCliArgs =
174+
knownCliArgs () |> List.collect fst |> List.map (fun a -> a.ToLower()) |> set
175+
176+
(Ok args, args.LoweredKeys)
177+
||> List.fold (fun res arg ->
178+
match res with
179+
| Error msg -> Error msg
180+
| Ok args ->
181+
if knownCliArgs.Contains(arg) then
182+
Ok args
183+
else
184+
$"Unknown argument: {arg}" |> generateHelpWithPrefix |> Error
185+
)
186+
187+
let parseCliArgs (args: string list) = CliArgs(args) |> sanitizeCliArgs
188+
182189
let argLanguage (args: CliArgs) =
183190
args.Value("--lang", "--language")
184191
|> Option.map (fun lang ->
@@ -582,11 +589,10 @@ let main argv =
582589
watch = args.FlagEnabled("--watch")
583590
)
584591
| [] -> return! Runner.Run(args, language, rootDir, runProc, verbosity, watch = args.FlagEnabled("--watch"))
585-
| _ -> return! Error "Unexpected arguments. Use `fable --help` to see available options."
592+
| _ -> return! "Unexpected arguments" |> generateHelpWithPrefix |> Error
586593
}
587594
|> function
588595
| Ok _ -> 0
589596
| Error msg ->
590597
Log.error msg
591-
printHelp ()
592598
1

0 commit comments

Comments
 (0)