diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 3491cd0..def5a82 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,7 +9,7 @@ ] }, "fsdocs-tool": { - "version": "20.0.0-alpha-002", + "version": "20.0.0-alpha-005", "commands": [ "fsdocs" ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 665b663..4f95436 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## [Unreleased] ### Fixed +* [--project value should be tested if path exists](https://github.com/ionide/FSharp.Analyzers.SDK/issues/141) (thanks @dawedawe!) +* [Provide better DX when project cracking failed](https://github.com/ionide/FSharp.Analyzers.SDK/issues/126) (thanks @dawedawe!) * [Hint is mapped as note in sarif export](https://github.com/ionide/FSharp.Analyzers.SDK/pull/148) (thanks @nojaf!) ## [0.19.0] - 2023-11-08 diff --git a/src/FSharp.Analyzers.Cli/Program.fs b/src/FSharp.Analyzers.Cli/Program.fs index 57c3ec1..047ac83 100644 --- a/src/FSharp.Analyzers.Cli/Program.fs +++ b/src/FSharp.Analyzers.Cli/Program.fs @@ -112,6 +112,11 @@ let loadProject toolsPath projPath = async { let loader = WorkspaceLoader.Create(toolsPath) let parsed = loader.LoadProjects [ projPath ] |> Seq.toList + + if parsed.IsEmpty then + printError $"Failed to load project '{projPath}'" + exit 1 + let fcsPo = FCS.mapToFSharpProjectOptions parsed.Head parsed return fcsPo @@ -449,20 +454,13 @@ let main argv = exit 1 | [], Some fscArgs -> runFscArgs client fscArgs ignoreFiles severityMapping |> Async.RunSynchronously | projects, None -> - let runProj (proj: string) = - async { - let project = - if Path.IsPathRooted proj then - proj - else - Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, proj)) - - let! results = runProject client toolsPath project ignoreFiles severityMapping - return results - } + for projPath in projects do + if not (File.Exists(projPath)) then + printError $"Invalid `--project` argument. File does not exist: '{projPath}'" + exit 1 projects - |> List.map runProj + |> List.map (fun projPath -> runProject client toolsPath projPath ignoreFiles severityMapping) |> Async.Sequential |> Async.RunSynchronously |> Array.choose id