diff --git a/.build.ps1 b/.build.ps1 index 148d1a76..23e24dbb 100644 --- a/.build.ps1 +++ b/.build.ps1 @@ -16,8 +16,8 @@ $src_path = './pode_modules' $Versions = @{ MkDocs = '1.6.1' - MkDocsTheme = '9.7.1' - Mike = '2.1.3' + MkDocsTheme = '9.7.6' + Mike = '2.2.0' PlatyPS = '0.14.2' } @@ -399,6 +399,8 @@ task ReleaseNotes { foreach ($pr in $prs) { $labels = @($pr.labels.name) + + # skip PRs with certain labels if ($labels -icontains 'superseded' -or $labels -icontains 'new-release' -or $labels -icontains 'internal-code :hammer:' -or @@ -406,7 +408,20 @@ task ReleaseNotes { continue } - $label = ($pr.labels[0].name -split ' ')[0] + # filter out labels that are not relevant + $label = @(foreach ($label in $labels) { + if ($label -imatch '^(story|priority)') { + continue + } + + if ($label -inotmatch '\s\:') { + continue + } + + ($label -split ' ', 2)[0] + break + })[0] + if ([string]::IsNullOrWhiteSpace($label)) { $label = 'misc' } @@ -421,47 +436,75 @@ task ReleaseNotes { $categories[$label] = @() } - if ($pr.author.login -ilike '*dependabot*') { - if ($pr.title -imatch 'Bump (?\S+) from (?[0-9\.]+) to (?[0-9\.]+)') { - if (!$dependabot.ContainsKey($Matches['name'])) { - $dependabot[$Matches['name']] = @{ - Name = $Matches['name'] + # split titles on ; to handle multiple changes in one PR + $titles = @($pr.title).Trim() + if ($pr.title.Contains(';')) { + $titles = ($pr.title -split ';').Trim() + } + + # only include the author if it's not badgerati or dependabot + $author = $null + if (($pr.author.login -ine 'badgerati') -and ($pr.author.login -inotlike '*dependabot*')) { + $author = "@$($pr.author.login)" + } + + # format the string for the PR, and add it to the relevant category/categories + foreach ($title in $titles) { + # handle package version bump PRs separately to aggregate them by package name, and get the from/to versions + if ($title -imatch 'Bump (?\S+) from (?[0-9\.]+) to (?[0-9\.]+)') { + # get the parts of the PR title + $pkgName = $Matches['name'] + $fromStr = $Matches['from'] + $toStr = $Matches['to'] + + # ensure 'from' version has 3 parts + if ($fromStr -imatch '^\d+$') { + $fromStr += '.0.0' + } + $from = [version]$fromStr + + # ensure 'to' version has 3 parts + if ($toStr -imatch '^\d+$') { + $toStr += '.0.0' + } + $to = [version]$toStr + + if (!$dependabot.ContainsKey($pkgName)) { + $dependabot[$pkgName] = @{ + Name = $pkgName Number = $pr.number - From = [version]$Matches['from'] - To = [version]$Matches['to'] + From = $from + To = $to + Author = @() + } + + if ($author) { + $dependabot[$pkgName].Author += $author } } else { - $item = $dependabot[$Matches['name']] + $item = $dependabot[$pkgName] if ([int]$pr.number -gt [int]$item.Number) { $item.Number = $pr.number } - if ([version]$Matches['from'] -lt $item.From) { - $item.From = [version]$Matches['from'] + if ($from -lt $item.From) { + $item.From = $from } - if ([version]$Matches['to'] -gt $item.To) { - $item.To = [version]$Matches['to'] + if ($to -gt $item.To) { + $item.To = $to + } + if ($author -and ($author -notin $item.Author)) { + $item.Author += $author } } continue } - } - - $titles = @($pr.title) - if ($pr.title.Contains(';')) { - $titles = ($pr.title -split ';').Trim() - } - - $author = $null - if (($pr.author.login -ine 'badgerati') -and ($pr.author.login -inotlike '*dependabot*')) { - $author = $pr.author.login - } - foreach ($title in $titles) { - $str = "* #$($pr.number): $($title)" + # handle normal PRs + $str = "* #$($pr.number): $($title -replace '`', "'")" if (![string]::IsNullOrWhiteSpace($author)) { - $str += " (thanks @$($author)!)" + $str += " (thanks $author!)" } if ($str -imatch '\s+(docs|documentation)\s+') { @@ -475,13 +518,17 @@ task ReleaseNotes { # add dependabot aggregated PRs if ($dependabot.Count -gt 0) { - $label = 'dependencies' + $label = 'Packaging' if (!$categories.Contains($label)) { $categories[$label] = @() } foreach ($dep in $dependabot.Values) { - $categories[$label] += "* #$($dep.Number): Bump $($dep.Name) from $($dep.From) to $($dep.To)" + $str = "* #$($dep.Number): Bump $($dep.Name) from $($dep.From) to $($dep.To)" + if ($dep.Author.Count -gt 0) { + $str += " (thanks $($dep.Author -join ', ')!)" + } + $categories[$label] += $str } } diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d1f0d085..f25fdf7c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,15 @@ version: 2 updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + labels: + - "packaging :package:" + - package-ecosystem: "npm" directory: "/" schedule: interval: "daily" + labels: + - "packaging :package:" diff --git a/.github/workflows/ci-pwsh.yml b/.github/workflows/ci-pwsh.yml index d2bd23ba..405dcdf9 100644 --- a/.github/workflows/ci-pwsh.yml +++ b/.github/workflows/ci-pwsh.yml @@ -26,7 +26,7 @@ on: - 'package.json' env: - INVOKE_BUILD_VERSION: '5.12.0' + INVOKE_BUILD_VERSION: '5.14.23' jobs: build: diff --git a/Dockerfile b/Dockerfile index 2126517f..f8642f9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM badgerati/pode:2.12.1 +FROM badgerati/pode:2.13.2 LABEL maintainer="Matthew Kelly (Badgerati)" RUN mkdir -p /usr/local/share/powershell/Modules/Pode.Web COPY ./src/ /usr/local/share/powershell/Modules/Pode.Web \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index 6b263301..92995fc2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) [2020-2025] [Matthew Kelly (Badgerati)] +Copyright (c) [2020-2026] [Matthew Kelly (Badgerati)] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index b9927f93..b52a5286 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Pode.Web -> This is the develop branch for Pode.Web v1.0.0, which is currently dependant on Pode v2.12.1. If you want the latest released Pode.Web code (v0.8.3), please view the master branch instead. +> This is the develop branch for Pode.Web v1.0.0, which is currently dependant on Pode v2.13.2. If you want the latest released Pode.Web code (v0.8.3), please view the master branch instead. [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/Badgerati/Pode.Web/master/LICENSE.txt) [![Documentation](https://img.shields.io/github/v/release/badgerati/pode.web?label=docs)](https://badgerati.github.io/Pode.Web) @@ -25,7 +25,7 @@ - [🔥 Quick Example](#-quick-example) - [🌎 Roadmap](#-roadmap) -This is a web template framework for use with the [Pode](https://github.com/Badgerati/Pode) PowerShell web server (v2.12.1+). +This is a web template framework for use with the [Pode](https://github.com/Badgerati/Pode) PowerShell web server (v2.13.2+). It allows you to build web pages purely with PowerShell - no HTML, CSS, or JavaScript knowledge is required! diff --git a/alpine.dockerfile b/alpine.dockerfile index 718054fa..029fce52 100644 --- a/alpine.dockerfile +++ b/alpine.dockerfile @@ -1,4 +1,4 @@ -FROM badgerati/pode:2.12.1-alpine +FROM badgerati/pode:2.13.2-alpine LABEL maintainer="Matthew Kelly (Badgerati)" RUN mkdir -p /usr/local/share/powershell/Modules/Pode.Web COPY ./src/ /usr/local/share/powershell/Modules/Pode.Web \ No newline at end of file diff --git a/arm32.dockerfile b/arm32.dockerfile index b070ddf3..d5e5f450 100644 --- a/arm32.dockerfile +++ b/arm32.dockerfile @@ -1,4 +1,4 @@ -FROM badgerati/pode:2.12.1-arm32 +FROM badgerati/pode:2.13.2-arm32 LABEL maintainer="Matthew Kelly (Badgerati)" RUN mkdir -p /usr/local/share/powershell/Modules/Pode.Web COPY ./src/ /usr/local/share/powershell/Modules/Pode.Web \ No newline at end of file diff --git a/docs/Getting-Started/Installation.md b/docs/Getting-Started/Installation.md index 890ba1c7..acc17e64 100644 --- a/docs/Getting-Started/Installation.md +++ b/docs/Getting-Started/Installation.md @@ -6,7 +6,7 @@ Pode.Web is a PowerShell module that works along side [Pode](https://github.com/ Before installing Pode.Web, the minimum requirements must be met: -* [Pode](https://github.com/Badgerati/Pode) v2.12.1+ +* [Pode](https://github.com/Badgerati/Pode) v2.13.2+ Which also includes Pode's minimum requirements: * OS: @@ -34,7 +34,7 @@ Install-Module -Name Pode.Web [![Docker](https://img.shields.io/docker/stars/badgerati/pode.web.svg?label=Stars)](https://hub.docker.com/r/badgerati/pode.web/) [![Docker](https://img.shields.io/docker/pulls/badgerati/pode.web.svg?label=Pulls)](https://hub.docker.com/r/badgerati/pode.web/) -Like Pode, Pode.Web also has Docker images available. The images use Pode v2.12.1 on either an Ubuntu Focal image (default), an Alpine image, or an ARM32 image (for Raspberry Pis). +Like Pode, Pode.Web also has Docker images available. The images use Pode v2.13.2 on either an Ubuntu Focal image (default), an Alpine image, or an ARM32 image (for Raspberry Pis). * To pull down the latest Pode.Web image you can do: diff --git a/docs/Hosting/Docker.md b/docs/Hosting/Docker.md index c7944438..f2f7a5d5 100644 --- a/docs/Hosting/Docker.md +++ b/docs/Hosting/Docker.md @@ -2,7 +2,7 @@ Pode.Web has a Docker image that you can use to host your server, for instructions on pulling these images you can [look here](../../Getting-Started/Installation). -The images use Pode v2.12.1 on either an Ubuntu Focal (default), Alpine, or ARM32 image. +The images use Pode v2.13.2 on either an Ubuntu Focal (default), Alpine, or ARM32 image. ## Images @@ -11,7 +11,7 @@ The images use Pode v2.12.1 on either an Ubuntu Focal (default), Alpine, or ARM3 ### Default -The default Pode.Web image is an Ubuntu Focal image with Pode v2.12.1 and Pode.Web installed. An example of using this image in your Dockerfile could be as follows: +The default Pode.Web image is an Ubuntu Focal image with Pode v2.13.2 and Pode.Web installed. An example of using this image in your Dockerfile could be as follows: ```dockerfile # pull down the pode image diff --git a/docs/index.md b/docs/index.md index 6d9b817f..fb8218da 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,7 +7,7 @@ > 💝 A lot of my free time, evenings, and weekends goes into making Pode happen; please do consider sponsoring as it will really help! 😊 -This is a web template framework for use with the [Pode](https://github.com/Badgerati/Pode) PowerShell web server (v2.12.1+). +This is a web template framework for use with the [Pode](https://github.com/Badgerati/Pode) PowerShell web server (v2.13.2+). It allows you to build web pages purely with PowerShell - no HTML, CSS, or JavaScript knowledge is required! diff --git a/src/Pode.Web.psd1 b/src/Pode.Web.psd1 index 538f9111..28aee0d8 100644 --- a/src/Pode.Web.psd1 +++ b/src/Pode.Web.psd1 @@ -20,7 +20,7 @@ Author = 'Matthew Kelly (Badgerati)' # Copyright statement for this module - Copyright = 'Copyright (c) 2020-2025 Matthew Kelly (Badgerati), licensed under the MIT License.' + Copyright = 'Copyright (c) 2020-2026 Matthew Kelly (Badgerati), licensed under the MIT License.' # Description of the functionality provided by this module Description = 'Web template framework for the Pode PowerShell web server' @@ -31,7 +31,7 @@ RequiredModules = @( @{ ModuleName = 'Pode' - ModuleVersion = '2.12.1' + ModuleVersion = '2.13.2' Guid = 'e3ea217c-fc3d-406b-95d5-4304ab06c6af' } )