From 033be2066749fd9a6a5dc094bf8b7fb6156d2be6 Mon Sep 17 00:00:00 2001 From: Chet Husk Date: Tue, 15 Jun 2021 16:39:44 -0500 Subject: [PATCH] Make the tool package nicer (#792) --- .config/dotnet-tools.json | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- Directory.Build.props | 1 - build.fsx | 8 ++++++-- global.json | 2 +- paket.dependencies | 1 + paket.lock | 2 +- .../FsAutoComplete.BackgroundServices.fsproj | 1 + .../FsAutoComplete.Core.fsproj | 1 + .../FsAutoComplete.Logging.fsproj | 1 + src/FsAutoComplete/FsAutoComplete.fsproj | 11 +++++++++++ src/FsAutoComplete/logo.png | Bin 0 -> 11085 bytes .../LanguageServerProtocol.fsproj | 1 + 14 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 src/FsAutoComplete/logo.png diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index be1591fc6..aa9d91613 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -9,7 +9,7 @@ ] }, "paket": { - "version": "5.257.0", + "version": "6.0.0-rc002", "commands": [ "paket" ] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dbc84f2a7..0c665afd0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: os: [windows-2019, macos-10.15, ubuntu-20.04] - dotnet: [5.0.200] + dotnet: [5.0.300] fail-fast: false # we have timing issues on some OS, so we want them all to run runs-on: ${{ matrix.os }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7ecfdd83..335a3f502 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: release: strategy: matrix: - dotnet: [5.0.200] + dotnet: [5.0.300] runs-on: ubuntu-20.04 diff --git a/Directory.Build.props b/Directory.Build.props index a7f4bc0f4..54555e9c5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,7 +3,6 @@ FsAutoComplete FsAutoComplete - A command line tool for interfacing with FSharp.Compiler.Service over a pipe. Apache-2.0 3186 true diff --git a/build.fsx b/build.fsx index 15d7c0b12..846093bfb 100644 --- a/build.fsx +++ b/build.fsx @@ -66,6 +66,10 @@ Target.create "ReleaseArchive" (fun _ -> |> Shell.copy "bin/pkgs" ) +let versionProp = "Version", release.AssemblyVersion +let packAsToolProp = "PackAsTool", "true" +let latestReleaseNotesProp = "PackageReleaseNotes", release.Notes |> String.concat "\n" + Target.create "LocalRelease" (fun _ -> Directory.ensure "bin/release_netcore" Shell.cleanDirs [ "bin/release_netcore" ] @@ -76,7 +80,7 @@ Target.create "LocalRelease" (fun _ -> OutputPath = Some (__SOURCE_DIRECTORY__ "bin/release_netcore") Framework = Some "net5.0" Configuration = DotNet.BuildConfiguration.fromString configuration - MSBuildParams = { MSBuild.CliArguments.Create () with Properties = [ "Version", release.AssemblyVersion ] } }) "src/FsAutoComplete" + MSBuildParams = { MSBuild.CliArguments.Create () with Properties = [ versionProp ] } }) "src/FsAutoComplete" Directory.ensure "bin/release_as_tool" Shell.cleanDirs [ "bin/release_as_tool" ] @@ -84,7 +88,7 @@ Target.create "LocalRelease" (fun _ -> { p with OutputPath = Some (__SOURCE_DIRECTORY__ "bin/release_as_tool") Configuration = DotNet.BuildConfiguration.fromString configuration - MSBuildParams = { MSBuild.CliArguments.Create () with Properties = [ "Version", release.AssemblyVersion; "PackAsTool", "true" ] } }) "src/FsAutoComplete" + MSBuildParams = { MSBuild.CliArguments.Create () with Properties = [ versionProp; packAsToolProp; latestReleaseNotesProp ] } }) "src/FsAutoComplete" ) Target.create "Clean" (fun _ -> diff --git a/global.json b/global.json index 094d2c2d9..9505793e9 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "5.0.200" + "version": "5.0.300" } } diff --git a/paket.dependencies b/paket.dependencies index f7b2ff6a9..c0ae76cfd 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -70,3 +70,4 @@ group Build nuget Fake.DotNet.MsBuild nuget Fake.Api.GitHub nuget Microsoft.Build + nuget MSBuild.StructuredLogger diff --git a/paket.lock b/paket.lock index e317e47a4..aec8639ed 100644 --- a/paket.lock +++ b/paket.lock @@ -856,7 +856,7 @@ NUGET System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.272) + MSBuild.StructuredLogger (2.1.507) Microsoft.Build (>= 16.4) Microsoft.Build.Framework (>= 16.4) Microsoft.Build.Tasks.Core (>= 16.4) diff --git a/src/FsAutoComplete.BackgroundServices/FsAutoComplete.BackgroundServices.fsproj b/src/FsAutoComplete.BackgroundServices/FsAutoComplete.BackgroundServices.fsproj index d3aed743c..d4fb4852b 100644 --- a/src/FsAutoComplete.BackgroundServices/FsAutoComplete.BackgroundServices.fsproj +++ b/src/FsAutoComplete.BackgroundServices/FsAutoComplete.BackgroundServices.fsproj @@ -5,6 +5,7 @@ fsautocomplete.backgroundservices true true + false diff --git a/src/FsAutoComplete.Core/FsAutoComplete.Core.fsproj b/src/FsAutoComplete.Core/FsAutoComplete.Core.fsproj index f03f18456..eed7c4f64 100644 --- a/src/FsAutoComplete.Core/FsAutoComplete.Core.fsproj +++ b/src/FsAutoComplete.Core/FsAutoComplete.Core.fsproj @@ -1,6 +1,7 @@ net5.0 + false diff --git a/src/FsAutoComplete.Logging/FsAutoComplete.Logging.fsproj b/src/FsAutoComplete.Logging/FsAutoComplete.Logging.fsproj index a7c8b3eed..a0fdf42e3 100644 --- a/src/FsAutoComplete.Logging/FsAutoComplete.Logging.fsproj +++ b/src/FsAutoComplete.Logging/FsAutoComplete.Logging.fsproj @@ -2,6 +2,7 @@ netstandard2.0 + false diff --git a/src/FsAutoComplete/FsAutoComplete.fsproj b/src/FsAutoComplete/FsAutoComplete.fsproj index e99432cae..8027beb62 100644 --- a/src/FsAutoComplete/FsAutoComplete.fsproj +++ b/src/FsAutoComplete/FsAutoComplete.fsproj @@ -6,8 +6,17 @@ fsautocomplete true true + + README.md + A community-developed Language Server Protocol implementation for F# + Apache-2.0 + logo.png + $(RepositoryUrl) + FsAutoComplete contributors + + @@ -26,9 +35,11 @@ + dotnet-fsautocomplete fsautocomplete + DotnetTool $(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage diff --git a/src/FsAutoComplete/logo.png b/src/FsAutoComplete/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..babbee57ea4f5cd7ba97b6922d06638e2a28e149 GIT binary patch literal 11085 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 netstandard2.0 + false