@@ -6,6 +6,10 @@ open System.Text.RegularExpressions
66open Build.FableLibrary
77open System
88open Build.Workspace
9+ open EasyBuild.Tools .DotNet
10+ open EasyBuild.Tools .Changelog
11+ open EasyBuild.Tools .PackageJson
12+ open EasyBuild.Tools .Npm
913
1014let updateLibraryVersionInFableTransforms
1115 ( compilerVersion : string )
@@ -52,67 +56,35 @@ let private publishNuget (fsprojDir: string) (noSymbols: bool) =
5256 if Array.length fsprojFiles <> 1 then
5357 failwithf $" Expected to find exactly one fsproj file in %s {fsprojDir}"
5458
55- let fsprojPath = fsprojFiles[ 0 ]
56- let fsprojContent = File.ReadAllText fsprojPath
57- let changelogPath = Path.Combine( fsprojDir, " CHANGELOG.md" )
58- let lastChangelogVersion = Changelog.getLastVersion changelogPath
59- let lastVersion = lastChangelogVersion |> fun v -> v.Version.ToString()
60-
61- let lastVersionBody = ChangelogParser.Version.bodyAsMarkdown lastChangelogVersion
62-
63- printfn $" Publishing: %s {fsprojDir}"
64-
6559 let nugetKey = Environment.GetEnvironmentVariable( " FABLE_NUGET_KEY" )
6660
6761 if isNull nugetKey then
6862 failwithf $" Missing FABLE_NUGET_KEY environment variable"
6963
70- if Fsproj.needPublishing fsprojContent lastVersion then
71- let updatedFsprojContent =
72- fsprojContent
73- |> Fsproj.replaceVersion lastVersion
74- |> Fsproj.replacePackageReleaseNotes lastVersionBody
64+ printfn $" Publishing: %s {fsprojDir}"
7565
76- File.WriteAllText( fsprojPath, updatedFsprojContent)
77- let nupkgPath = Dotnet.pack fsprojDir
78- Dotnet.Nuget.push ( nupkgPath, nugetKey, noSymbols = noSymbols)
79- printfn $" Published!"
80- else
81- printfn $" Already up-to-date, skipping..."
66+ let nupkgPath = DotNet.pack fsprojDir
67+
68+ // We skip duplicates because we might have already published the same version
69+ // This is because we make an optimistic release and delegate the version set to EasyBuild.PackageReleaseNotes.Tasks
70+ DotNet.nugetPush ( nupkgPath, apiKey = nugetKey, noSymbols = noSymbols, skipDuplicate = true )
8271
8372let private publishNpm ( projectDir : string ) =
84- let packageJsonPath = Path.Combine( projectDir, " package.json" )
85- let packageJsonContent = File.ReadAllText( packageJsonPath)
86- let changelogPath = Path.Combine( projectDir, " CHANGELOG.md" )
73+ let packageJsonFile = Path.Combine( projectDir, " package.json" ) |> FileInfo
8774
8875 let lastChangelogVersion =
89- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString ( )
90-
91- printfn $ " Publishing: %s {projectDir} "
76+ Path.Combine ( projectDir , " CHANGELOG.md " )
77+ |> FileInfo
78+ |> Changelog.findLastVersion
9279
93- if Npm.needPublishing packageJsonContent lastChangelogVersion then
94- let updatedPackageJsonContent =
95- Npm.replaceVersion packageJsonContent lastChangelogVersion
80+ PackageJson.replaceVersion ( packageJsonFile, lastChangelogVersion)
9681
97- File.WriteAllText ( packageJsonPath , updatedPackageJsonContent )
82+ if PackageJson.needPublishing packageJsonFile then
9883 Npm.publish projectDir
9984 printfn $" Published!"
10085 else
10186 printfn $" Already up-to-date, skipping..."
10287
103- let private updateFableLibraryTsPackageJsonVersion () =
104- let packageJsonPath = Path.Combine( ProjectDir.fable_ library_ ts, " package.json" )
105- let packageJsonContent = File.ReadAllText( packageJsonPath)
106- let changelogPath = Path.Combine( ProjectDir.fable_ library_ ts, " CHANGELOG.md" )
107-
108- let lastChangelogVersion =
109- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString()
110-
111- let updatedPackageJsonContent =
112- Npm.replaceVersion packageJsonContent lastChangelogVersion
113-
114- File.WriteAllText( packageJsonPath, updatedPackageJsonContent)
115-
11688let handle ( args : string list ) =
11789 // Build all the fable-libraries
11890 BuildFableLibraryDart() .Run()
@@ -130,21 +102,21 @@ let handle (args: string list) =
130102
131103 // We also want to update the original package.json if needed
132104 // This is to keep the versions consistent across the project
133- updateFableLibraryTsPackageJsonVersion ( )
105+ PackageJson.replaceVersion ( PackageJson.fableLibraryTs , Changelog.fableLibraryTs |> Changelog.findLastVersion )
134106
135107 publishNpm ProjectDir.fable_ metadata
136108
137109 // Update embedded version (both compiler and libraries)
138- let changelogPath = Path.Combine( ProjectDir.fableCli, " CHANGELOG.md" )
139-
140110 let compilerVersion =
141- Changelog.getLastVersion changelogPath |> fun v -> v.Version.ToString()
111+ Path.Combine( ProjectDir.fableCli, " CHANGELOG.md" )
112+ |> FileInfo
113+ |> Changelog.findLastVersion
142114
143115 updateLibraryVersionInFableTransforms
144116 compilerVersion
145117 {|
146- JavaScript = Npm.getVersionFromProjectDir ProjectDir.temp _ fable _ library _ js
147- TypeScript = Npm.getVersionFromProjectDir ProjectDir.temp _ fable _ library _ ts
118+ JavaScript = PackageJson.tempFableLibraryJs |> PackageJson.getVersion
119+ TypeScript = PackageJson.tempFableLibraryTs |> PackageJson.getVersion
148120 |}
149121
150122 publishNuget ProjectDir.fableAst false
0 commit comments