diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index 167756b8f..0eacd23da 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -1,4 +1,4 @@
-name: Build and test
+name: Build, test and publish draft
on:
push:
@@ -10,7 +10,7 @@ jobs:
build:
runs-on: windows-2022
steps:
- - uses: actions/checkout@master
+ - uses: actions/checkout@v4
- name: Set up dotnet core
uses: actions/setup-dotnet@v4
@@ -29,3 +29,14 @@ jobs:
- name: Run the tests
run: dotnet test -c Release src/UglyToad.PdfPig.sln
+
+ - name: Update draft release
+ if: github.ref == 'refs/heads/master'
+ uses: softprops/action-gh-release@v2
+ with:
+ draft: true
+ name: "Draft release"
+ tag_name: "unreleased" # fixed tag so this one draft is updated
+ generate_release_notes: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml
new file mode 100644
index 000000000..3f6e2cefb
--- /dev/null
+++ b/.github/workflows/publish_release.yml
@@ -0,0 +1,48 @@
+name: Release Publish
+
+on:
+ release:
+ types: [published]
+
+permissions:
+ contents: write
+ packages: write
+
+jobs:
+ build_and_publish_release:
+ runs-on: windows-2022
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up dotnet core
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: |
+ 2.1.x
+ 6.0.x
+ 8.0.x
+ 9.0.x
+
+ - name: Add msbuild to PATH
+ uses: microsoft/setup-msbuild@v2
+
+ - name: Run tests
+ run: dotnet test -c Release src/UglyToad.PdfPig.sln
+
+ - name: Build package
+ run: dotnet pack -c Release -o package tools/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg
+
+ - name: Publish to NuGet
+ run: dotnet nuget push **/*.nupkg --api-key ${{secrets.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json
+
+ - name: Increment version after release
+ run: |
+ $newVer = .\tools\get-next-main-version.ps1
+ .\tools\set-version.ps1 $newVer -UpdateAssemblyAndFileVersion
+ git config user.name "github-actions"
+ git config user.email "github-actions@github.com"
+ git commit -am "Increment version to $newVer"
+ git push
\ No newline at end of file
diff --git a/src/UglyToad.PdfPig.Core/UglyToad.PdfPig.Core.csproj b/src/UglyToad.PdfPig.Core/UglyToad.PdfPig.Core.csproj
index 51cac1a1e..b9e999a50 100644
--- a/src/UglyToad.PdfPig.Core/UglyToad.PdfPig.Core.csproj
+++ b/src/UglyToad.PdfPig.Core/UglyToad.PdfPig.Core.csproj
@@ -2,12 +2,12 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
..\pdfpig.snk
- enable
+ enable
nullable
diff --git a/src/UglyToad.PdfPig.DocumentLayoutAnalysis/UglyToad.PdfPig.DocumentLayoutAnalysis.csproj b/src/UglyToad.PdfPig.DocumentLayoutAnalysis/UglyToad.PdfPig.DocumentLayoutAnalysis.csproj
index 6878b7e1e..9684a138c 100644
--- a/src/UglyToad.PdfPig.DocumentLayoutAnalysis/UglyToad.PdfPig.DocumentLayoutAnalysis.csproj
+++ b/src/UglyToad.PdfPig.DocumentLayoutAnalysis/UglyToad.PdfPig.DocumentLayoutAnalysis.csproj
@@ -2,7 +2,7 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
diff --git a/src/UglyToad.PdfPig.Fonts/UglyToad.PdfPig.Fonts.csproj b/src/UglyToad.PdfPig.Fonts/UglyToad.PdfPig.Fonts.csproj
index 774c47c28..b410c51b7 100644
--- a/src/UglyToad.PdfPig.Fonts/UglyToad.PdfPig.Fonts.csproj
+++ b/src/UglyToad.PdfPig.Fonts/UglyToad.PdfPig.Fonts.csproj
@@ -2,7 +2,7 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
diff --git a/src/UglyToad.PdfPig.Tokenization/UglyToad.PdfPig.Tokenization.csproj b/src/UglyToad.PdfPig.Tokenization/UglyToad.PdfPig.Tokenization.csproj
index 2f3e0d293..665462783 100644
--- a/src/UglyToad.PdfPig.Tokenization/UglyToad.PdfPig.Tokenization.csproj
+++ b/src/UglyToad.PdfPig.Tokenization/UglyToad.PdfPig.Tokenization.csproj
@@ -2,7 +2,7 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
diff --git a/src/UglyToad.PdfPig.Tokens/UglyToad.PdfPig.Tokens.csproj b/src/UglyToad.PdfPig.Tokens/UglyToad.PdfPig.Tokens.csproj
index 069167812..af3bfea09 100644
--- a/src/UglyToad.PdfPig.Tokens/UglyToad.PdfPig.Tokens.csproj
+++ b/src/UglyToad.PdfPig.Tokens/UglyToad.PdfPig.Tokens.csproj
@@ -2,7 +2,7 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
diff --git a/src/UglyToad.PdfPig/UglyToad.PdfPig.csproj b/src/UglyToad.PdfPig/UglyToad.PdfPig.csproj
index 797c83107..2727fa624 100644
--- a/src/UglyToad.PdfPig/UglyToad.PdfPig.csproj
+++ b/src/UglyToad.PdfPig/UglyToad.PdfPig.csproj
@@ -2,7 +2,7 @@
netstandard2.0;net462;net471;net6.0;net8.0;net9.0
12
- 0.1.12-alpha001
+ 0.1.12
False
true
true
diff --git a/tools/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csproj b/tools/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csproj
index 2ffe423f8..fd3359a6c 100644
--- a/tools/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csproj
+++ b/tools/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csproj
@@ -11,7 +11,7 @@
PDF;Reader;Document;Adobe;PDFBox;PdfPig;pdf-extract;pdf-to-text;pdf;file;text;C#;dotnet;.NET
https://github.com/UglyToad/PdfPig
true
- 0.1.12-alpha001
+ 0.1.12
0.1.12.0
0.1.12.0
https://raw.githubusercontent.com/UglyToad/PdfPig/master/documentation/pdfpig.png
diff --git a/tools/get-main-version.ps1 b/tools/get-main-version.ps1
index 05e5cb13b..789db77b5 100644
--- a/tools/get-main-version.ps1
+++ b/tools/get-main-version.ps1
@@ -1,5 +1,6 @@
$xml = New-Object XML
-$xml.Load(".\tools\UglyToad.PdfPig.Package\UglyToad.PdfPig.Package.csproj")
+$projectPath = Join-Path $PSScriptRoot "UglyToad.PdfPig.Package\UglyToad.PdfPig.Package.csproj"
+$xml.Load($projectPath)
$current = $xml.Project.PropertyGroup[0].Version
$hyphenIndex = $current.IndexOf('-')
$len = If ($hyphenIndex -lt 0) { $current.Length } Else { $hyphenIndex }
diff --git a/tools/get-next-main-version.ps1 b/tools/get-next-main-version.ps1
new file mode 100644
index 000000000..2e53b5d85
--- /dev/null
+++ b/tools/get-next-main-version.ps1
@@ -0,0 +1,20 @@
+$xml = New-Object XML
+$projectPath = Join-Path $PSScriptRoot "UglyToad.PdfPig.Package\UglyToad.PdfPig.Package.csproj"
+$xml.Load($projectPath)
+$current = $xml.Project.PropertyGroup[0].Version
+$hyphenIndex = $current.IndexOf('-')
+$len = If ($hyphenIndex -lt 0) { $current.Length } Else { $hyphenIndex }
+$version = $current.Substring(0, $len)
+
+# Split into parts
+$parts = $version.Split('.')
+
+# Increment last part (patch)
+$patch = [int]$parts[-1]
+$patch++
+
+# Build new version string
+$parts[-1] = $patch.ToString()
+$newVersion = $parts -join '.'
+
+Write-Output $newVersion
\ No newline at end of file
diff --git a/tools/set-version.ps1 b/tools/set-version.ps1
index a55241882..5d21dc01c 100644
--- a/tools/set-version.ps1
+++ b/tools/set-version.ps1
@@ -1,6 +1,8 @@
param (
[Parameter(Position = 0, mandatory = $true)]
- [string]$version
+ [string]$version,
+
+ [switch]$UpdateAssemblyAndFileVersion
)
$root = (Split-Path -parent $PSCommandPath)
@@ -17,6 +19,26 @@ $packageProjectPath = "$root/UglyToad.PdfPig.Package/UglyToad.PdfPig.Package.csp
$xml = New-Object XML
$xml.Load($packageProjectPath)
$xml.Project.PropertyGroup[0].Version = $version
+
+if ($UpdateAssemblyAndFileVersion) {
+ # Update AssemblyVersion and FileVersion if the nodes exist, otherwise create them
+ if (-not $xml.Project.PropertyGroup[0].AssemblyVersion) {
+ $node = $xml.CreateElement("AssemblyVersion")
+ $node.InnerText = "$version.0" # add the 4th segment
+ $xml.Project.PropertyGroup[0].AppendChild($node) | Out-Null
+ } else {
+ $xml.Project.PropertyGroup[0].AssemblyVersion = "$version.0"
+ }
+
+ if (-not $xml.Project.PropertyGroup[0].FileVersion) {
+ $node = $xml.CreateElement("FileVersion")
+ $node.InnerText = "$version.0"
+ $xml.Project.PropertyGroup[0].AppendChild($node) | Out-Null
+ } else {
+ $xml.Project.PropertyGroup[0].FileVersion = "$version.0"
+ }
+}
+
$xml.Save($packageProjectPath)
Write-Host $projs.Length
\ No newline at end of file