Files
unkin-agent 82e4c338ee publish the plugin zip to artifactapi on tag
Add .woodpecker/release.yaml building the JPRM zip and uploading it to the
jellyfin-plugins repo, and teach the bump targets the plugin's 4-part version.
2026-09-19 23:43:50 +10:00

52 lines
1.8 KiB
Makefile

.PHONY: build test lint clean patch minor major hotfix
SLN ?= SSO-Auth.sln
build:
dotnet restore $(SLN)
dotnet build $(SLN) -c Release --no-restore --warnaserror
test: build
dotnet test $(SLN) -c Release --no-build --verbosity minimal
lint:
dotnet format $(SLN) --verify-no-changes
clean:
dotnet clean $(SLN) -c Release || true
rm -rf SSO-Auth/bin SSO-Auth/obj tests/SSO-Auth.Tests/bin tests/SSO-Auth.Tests/obj
# Jellyfin plugin versions are 4-part (System.Version in the plugin manifest),
# so build.yaml holds the version and the release tag must be exactly
# v<that version>; .woodpecker/release.yaml fails the build if they diverge.
_CUR := $(shell sed -n 's/^version: *"\([0-9.]*\)".*/\1/p' build.yaml | head -1)
_A := $(or $(word 1,$(subst ., ,$(_CUR))),0)
_B := $(or $(word 2,$(subst ., ,$(_CUR))),0)
_C := $(or $(word 3,$(subst ., ,$(_CUR))),0)
_D := $(or $(word 4,$(subst ., ,$(_CUR))),0)
define release
@test -n "$(_CUR)" || { echo "cannot parse version from build.yaml"; exit 1; }
@test -z "$$(git status --porcelain)" || { echo "working tree is dirty"; exit 1; }
@sed -i 's|^version: .*|version: "$(1)"|' build.yaml
@sed -i 's|<AssemblyVersion>[^<]*</AssemblyVersion>|<AssemblyVersion>$(1)</AssemblyVersion>|' SSO-Auth/SSO-Auth.csproj
@sed -i 's|<FileVersion>[^<]*</FileVersion>|<FileVersion>$(1)</FileVersion>|' SSO-Auth/SSO-Auth.csproj
@git commit -qam "release $(1)"
@git tag v$(1)
@git push origin HEAD v$(1)
@echo "Released v$(1)"
endef
major:
$(call release,$(shell expr $(_A) + 1).0.0.0)
minor:
$(call release,$(_A).$(shell expr $(_B) + 1).0.0)
patch:
$(call release,$(_A).$(_B).$(shell expr $(_C) + 1).0)
# Fourth component: a rebuild of an existing patch (upstream's 3.5.2.1 shape).
hotfix:
$(call release,$(_A).$(_B).$(_C).$(shell expr $(_D) + 1))