diff --git a/Makefile b/Makefile index 5be5705..37bc3d0 100644 --- a/Makefile +++ b/Makefile @@ -1,51 +1,39 @@ -# bump and tag version -bump-patch: - @echo "Updating patch version..." - bumpver update --patch +.PHONY: changelog lint release help -bump-minor: - @echo "Updating minor version..." - bumpver update --minor - -bump-major: - @echo "Updating major version..." - bumpver update --major - -# generate changelog since last version tag -changelog: - @echo "## Changelog since $(shell git describe --tags --match 'v[0-9]*.[0-9]*.[0-9]*' --abbrev=0)" && \ +changelog: ## Show changelog since last version tag + @tag=$$(git tag --sort=-version:refname --list 'v[0-9]*.[0-9]*.[0-9]*' | head -1) && \ + echo "## Changelog since $$tag" && \ echo "" && \ - git log --oneline $(shell git describe --tags --match 'v[0-9]*.[0-9]*.[0-9]*' --abbrev=0)..HEAD | sed 's/^/- /' + git log --oneline $$tag..HEAD | sed 's/^/- /' -# run linting checks -lint: +lint: ## Run linting checks @echo "Running linting checks..." - uv run ruff check . --diff + @uv run ruff check . --diff -# push tag and create PR (for when we've already bumped the version) -push-release: - @echo "Creating release tag with v prefix..." - @CURRENT_VERSION=$$(uv run bumpver show | grep "Current Version:" | cut -d' ' -f3); \ - git tag "v$$CURRENT_VERSION" $$CURRENT_VERSION; \ - echo "Pushing tags to trigger build..."; \ - git push origin --tags; \ - echo "Creating PR to sync dev to main..."; \ +release: lint ## Create a release. Usage: make release LEVEL=patch|minor|major + @if [ -z "$(LEVEL)" ]; then \ + echo "Error: LEVEL is required. Usage: make release LEVEL=patch|minor|major"; \ + exit 1; \ + fi + @CHANGELOG=$$($(MAKE) --no-print-directory changelog) && \ + echo "$$CHANGELOG" && \ + echo "Updating $(LEVEL) version..." && \ + uv run bumpver update --$(LEVEL) && \ + CURRENT_VERSION=$$(uv run bumpver show | grep "Current Version:" | cut -d' ' -f3) && \ + echo "Creating release tag v$$CURRENT_VERSION..." && \ + git tag "v$$CURRENT_VERSION" && \ + git push origin --tags && \ if gh pr view --base main --head dev > /dev/null 2>&1; then \ - echo "PR already exists. Skipping PR creation."; \ + echo "PR already exists, skipping PR creation."; \ else \ - gh pr create --base main --head dev --title "Sync dev to main after release" --body "Automated PR to sync dev branch changes to main after release v$$CURRENT_VERSION\n\n## Changelog\n$$(make changelog)"; \ - fi; \ + gh pr create --base main --head dev \ + --title "Sync dev to main after release v$$CURRENT_VERSION" \ + --body "$$(printf '%s' "$$CHANGELOG")"; \ + fi && \ echo "Release pushed successfully!" -# create release with specified level: make release LEVEL=patch|minor|major -release: lint - @echo "Creating release..." - @echo "Changelog for this release:" && \ - $(MAKE) changelog - @read -p "Continue with release? [y/N] " confirm && \ - if [ "$$confirm" != "y" ] && [ "$$confirm" != "Y" ]; then \ - echo "Release cancelled."; exit 1; \ - fi - @echo "Updating $(LEVEL) version..." - bumpver update --$(LEVEL) - $(MAKE) push-release \ No newline at end of file +help: ## Show this help + @grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | \ + awk 'BEGIN {FS = ":.*##"}; {printf " %-20s %s\n", $$1, $$2}' + +.DEFAULT_GOAL := help diff --git a/pyproject.toml b/pyproject.toml index af29f0d..29dacce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ name = "reskinner" requires-python = ">=3.7" description = "Instantaneous theme changing for PySimpleGUI and FreeSimpleGUI windows." -version = "4.2.1" +version = "4.2.2" authors = [{ name = "Divine U. Afam-Ifediogor" }] license = { file = "LICENSE" } readme = "./res/DESCRIPTION.md" @@ -88,7 +88,7 @@ target-version = "py37" line-length = 88 [tool.bumpver] -current_version = "4.2.1" +current_version = "4.2.2" version_pattern = "MAJOR.MINOR.PATCH" commit_message = "bump version {old_version} -> {new_version}" tag_message = "{new_version}" diff --git a/src/reskinner/reskinner.py b/src/reskinner/reskinner.py index 5e5f6f5..261578c 100644 --- a/src/reskinner/reskinner.py +++ b/src/reskinner/reskinner.py @@ -18,7 +18,7 @@ ElementFilter = Callable[[T], bool] # Element reskinner instance -element_reskinner = ElementReskinner() +_element_reskinner = ElementReskinner() def reskin( @@ -169,11 +169,11 @@ def _reskin( else window.element_list() ) - element_reskinner.update_colorizer(colorizer) + _element_reskinner.update_colorizer(colorizer) # Per-element changes happen henceforth for element in whitelist: - element_reskinner.reskin_element(element) + _element_reskinner.reskin_element(element) def toggle_transparency(window: sg.Window) -> None: