From c39393e69a2e56f57f9334810eb2eaf45e6cd0b1 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Mon, 20 Feb 2023 16:39:33 -0800 Subject: [PATCH] [RELEASE] Package ytdl-sub to PyPI (#457) * post only if > 0 * since todays date * pypi workflow * test token * fix test * long description * simpler names * more simple * no test pypi in master * publish only on master --- .github/workflows/package.yaml | 8 ++++---- .github/workflows/pypi.yaml | 32 ++++++++++++++++++++++++++++++++ Makefile | 18 ++++++++++++++---- setup.cfg | 7 +++++-- src/ytdl_sub/__init__.py | 3 ++- src/ytdl_sub/main.py | 4 ++-- tests/unit/main/test_main.py | 4 ++-- 7 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/pypi.yaml diff --git a/.github/workflows/package.yaml b/.github/workflows/package.yaml index f0e92b36..cfb3984d 100644 --- a/.github/workflows/package.yaml +++ b/.github/workflows/package.yaml @@ -20,7 +20,7 @@ jobs: # Push image to GitHub Packages. # See also https://docs.docker.com/docker-hub/builds/ build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 strategy: matrix: python-version: [ "3.10" ] @@ -49,7 +49,7 @@ jobs: # Build ARM64 container, only on master branch to save time testing package-arm64: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [ build ] @@ -93,7 +93,7 @@ jobs: # Build AMD64 container package-amd64: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [ build ] @@ -137,7 +137,7 @@ jobs: # On master branch, build the docker manifest file from the cached # docker builds and push to the registry deploy: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [ build, package-arm64, diff --git a/.github/workflows/pypi.yaml b/.github/workflows/pypi.yaml new file mode 100644 index 00000000..84b642f5 --- /dev/null +++ b/.github/workflows/pypi.yaml @@ -0,0 +1,32 @@ +name: ytld-sub PyPI +on: + push: + # publish only when pushed to master + branches: + - master + +jobs: + build-and-publish: + name: build-and-publish + runs-on: ubuntu-22.04 + strategy: + matrix: + python-version: [ "3.10" ] + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + + - name: Build Wheel + run: | + make wheel + + - name: Publish distribution 📦 to PyPI + if: ${{ github.ref == 'refs/heads/master' }} + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} \ No newline at end of file diff --git a/Makefile b/Makefile index eb599acf..18d08aab 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,17 @@ - +# Get version related variables export DATE=$(shell date +'%Y.%m.%d') -export REV=$(shell git rev-parse --short HEAD) -export VERSION="$(DATE)+$(REV)" +export DATE_COMMIT_COUNT=$(shell git rev-list --count HEAD --since="$(DATE) 00:00:00") +export COMMIT_HASH=$(shell git rev-parse --short HEAD) + +# Set Local version to YYYY.MM.DD- +export LOCAL_VERSION="$(DATE)+$(COMMIT_HASH)" + +# Set PyPi version to YYYY.MM.DD or YYYY.MM.DD.postN if N > 0 +ifeq ("$(DATE_COMMIT_COUNT)", "0") + export PYPI_VERSION="$(DATE)" +else + export PYPI_VERSION="$(DATE).post$(DATE_COMMIT_COUNT)" +endif lint: @-isort . @@ -14,7 +24,7 @@ check_lint: && pylint src/ \ && pydocstyle src/* wheel: clean - $(shell echo "__version__ = \"$(VERSION)\"" > src/ytdl_sub/__init__.py) + $(shell echo "__pypi_version__ = \"$(PYPI_VERSION)\"\n__local_version__ = \"$(LOCAL_VERSION)\"" > src/ytdl_sub/__init__.py) pip3 install build python3 -m build docker_stage: wheel diff --git a/setup.cfg b/setup.cfg index 658fcd12..ecfc8602 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,8 +1,10 @@ [metadata] name = ytdl-sub -version = attr:ytdl_sub.__version__ +version = attr:ytdl_sub.__pypi_version__ author = Jesse Bannon -description = ytdl automated with metadata creation +description = Automate downloading and metadata generation with YoutubeDL +long_description = file: README.md +long_description_content_type= text/markdown author_email = use_github_issues@nope.com url = https://github.com/jmbannon/ytdl-sub license = GNUv3 @@ -50,4 +52,5 @@ docs = sphinx-rtd-theme==1.0.0 build = build + twine diff --git a/src/ytdl_sub/__init__.py b/src/ytdl_sub/__init__.py index 37a1a3c4..8c2cf3b8 100644 --- a/src/ytdl_sub/__init__.py +++ b/src/ytdl_sub/__init__.py @@ -1 +1,2 @@ -__version__ = "2023.02.20+30051b1" +__pypi_version__ = "2023.02.20.post14" +__local_version__ = "2023.02.20+6896905" diff --git a/src/ytdl_sub/main.py b/src/ytdl_sub/main.py index e8f7e147..09fb55c0 100644 --- a/src/ytdl_sub/main.py +++ b/src/ytdl_sub/main.py @@ -1,6 +1,6 @@ import sys -from ytdl_sub import __version__ +from ytdl_sub import __local_version__ from ytdl_sub.cli.main_args_parser import parser from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.logger import Logger @@ -36,7 +36,7 @@ def main(): "Version %s\nPlease upload the error log file '%s' and make a Github " "issue at https://github.com/jmbannon/ytdl-sub/issues with your config and " "command/subscription yaml file to reproduce. Thanks for trying ytdl-sub!", - __version__, + __local_version__, Logger.debug_log_filename(), ) sys.exit(1) diff --git a/tests/unit/main/test_main.py b/tests/unit/main/test_main.py index cdc17022..6e6a3e1a 100644 --- a/tests/unit/main/test_main.py +++ b/tests/unit/main/test_main.py @@ -5,7 +5,7 @@ from unittest.mock import patch import pytest -from src.ytdl_sub import __version__ +from src.ytdl_sub import __local_version__ from src.ytdl_sub.main import main from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.logger import Logger @@ -64,5 +64,5 @@ def test_main_uncaught_error(capsys, mock_sys_exit, expected_uncaught_error_mess assert mock_error.call_count == 1 assert mock_error.call_args.args[0] == expected_uncaught_error_message - assert mock_error.call_args.args[1] == __version__ + assert mock_error.call_args.args[1] == __local_version__ assert mock_error.call_args.args[2] == Logger.debug_log_filename()