From cb568730d8bed0ff961dbf9b24958246cb02c77c Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Mon, 3 Feb 2025 16:21:01 +0100 Subject: [PATCH 01/14] feat: Added local update functions --- CHANGELOG.md | 10 ++++++++ src/PyPiUpdater/pypi_updater.py | 45 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee74deb..678af18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.6.0: New Local Update Feature +- Added support for updating from a local folder containing package files. + - Scans a specified folder for available updates. + - Installs updates directly from local package files. +- **Note:** Local version handling depends on how dependencies are managed. + - Example: If a package requires **PyPiUpdater 0.6.0**, but the installed version is **0.0.1** (e.g., from a dev environment), **OptimaLab35 v0.9.1** may not install correctly. + - This is due to **pip's dependency checks**, ensuring all required versions are satisfied before installation. + +--- + ## 0.5.0: Rework (BREAKING CHANGE) - Improved code consistency: return values are now always **lists** when containing multiple objects. - **Simplified the package**: Removed the default waiting period for update checks. diff --git a/src/PyPiUpdater/pypi_updater.py b/src/PyPiUpdater/pypi_updater.py index 5767a34..4c5b835 100644 --- a/src/PyPiUpdater/pypi_updater.py +++ b/src/PyPiUpdater/pypi_updater.py @@ -4,6 +4,7 @@ import sys import os import time import json +import re from packaging import version from xml.etree import ElementTree as ET @@ -59,6 +60,50 @@ class PyPiUpdater: except subprocess.CalledProcessError as e: return [False, f"Update failed: {str(e)}"] + def check_update_local(self, folder_path): + """ + Check if a newer version of the package is available in the local folder. + + :param folder_path: Path to the folder containing package files. + :return: (bool, latest_version) - True if newer version found, otherwise False. + """ + if not os.path.exists(folder_path): + return [None, "Folder does not exist"] + + pattern = re.compile(rf"{re.escape(self.package_name.lower())}-(\d+\.\d+\.\d+[a-zA-Z0-9]*)") + + available_versions = [] + for file in os.listdir(folder_path): + match = pattern.search(file) + if match: + found_version = match.group(1) + available_versions.append(version.parse(found_version)) + + if not available_versions: + return [None, "No valid package versions found in the folder"] + + latest_version = max(available_versions) + is_newer = latest_version > self.local_version + + return [is_newer, str(latest_version)] + + def update_from_local(self, folder_path): + """ + Install the latest package version from a local folder. + + :param folder_path: Path to the folder containing package files. + :return: (bool, message) - Success status and message. + """ + print(f"Installing {self.package_name} from {folder_path}...") + try: + subprocess.run( + [sys.executable, "-m", "pip", "install", "--no-index", "--find-links", folder_path, self.package_name, "-U"], + check=True + ) + return [True, f"{self.package_name} updated successfully from local folder."] + except subprocess.CalledProcessError as e: + return [False, f"Update from local folder failed: {str(e)}"] + def restart_program(self): """Restart the Python program after an update.""" print("Restarting the application...") From 09a37ae62886ae47a9acc50117a12ff2cd154622 Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Sun, 9 Feb 2025 13:26:21 +0100 Subject: [PATCH 02/14] patch: Added classifiers for pypi --- CHANGELOG.md | 6 +++++- pyproject.toml | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 678af18..60dc87f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog -## 0.6.0: New Local Update Feature +## 0.6.x +### 0.6.1: Classifier +- Added Classifier for pypi + +### 0.6.0: New Local Update Feature - Added support for updating from a local folder containing package files. - Scans a specified folder for available updates. - Installs updates directly from local package files. diff --git a/pyproject.toml b/pyproject.toml index 0456616..e0c386a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,13 +11,17 @@ readme = "README.md" requires-python = ">=3.8" dependencies = ["requests", "packaging"] classifiers = [ + "Development Status :: 4 - Beta", "Programming Language :: Python :: 3", + "Topic :: Software Development :: Libraries :: Python Modules", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Operating System :: OS Independent", ] [project.urls] Source = "https://gitlab.com/CodeByMrFinchum/PyPiUpdater" +Documentation = "https://gitlab.com/CodeByMrFinchum/PyPiUpdater/-/blob/main/README.md" +Changelog = "https://gitlab.com/CodeByMrFinchum/PyPiUpdater/-/blob/main/CHANGELOG.md" [tool.hatch.build.targets.wheel] packages = ["src/PyPiUpdater"] From 9680e33730059c55ee604eeafea640b54a15dfb0 Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Sun, 9 Feb 2025 17:48:30 +0100 Subject: [PATCH 03/14] feat: function to install single package. --- CHANGELOG.md | 6 ++++++ pyproject.toml | 2 +- src/PyPiUpdater/pypi_updater.py | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60dc87f..f07c7b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.7.0: Added Function to Install Packages +- Introduced the `install_package` function, allowing packages to be installed directly through the app. + - Useful for optional dependencies that need to be installed separately. This enables installation via the UI. + +--- + ## 0.6.x ### 0.6.1: Classifier - Added Classifier for pypi diff --git a/pyproject.toml b/pyproject.toml index e0c386a..2aeb735 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ readme = "README.md" requires-python = ">=3.8" dependencies = ["requests", "packaging"] classifiers = [ - "Development Status :: 4 - Beta", + "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", diff --git a/src/PyPiUpdater/pypi_updater.py b/src/PyPiUpdater/pypi_updater.py index 4c5b835..3203ddb 100644 --- a/src/PyPiUpdater/pypi_updater.py +++ b/src/PyPiUpdater/pypi_updater.py @@ -146,3 +146,14 @@ class PyPiUpdater: """Write data to JSON log file.""" with open(self.log_path, "w") as f: json.dump(data, f, indent=4) + + @staticmethod + def install_package(package_name): + """Attempts to install a package via pip.""" + try: + subprocess.run([sys.executable, "-m", "pip", "install", package_name], check = True) + print("Successfull") + return [True, f"{package_name} installed successfully!"] + except subprocess.CalledProcessError as e: + print("Failed") + return [False, f"Failed to install {package_name}:\n{e.stderr}"] From 712d80a0aa17bb9ea2fc7b9caf98654d0999edce Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Mon, 10 Feb 2025 13:16:21 +0100 Subject: [PATCH 04/14] fix: Fixed that prereleases version were listed --- src/PyPiUpdater/__init__.py | 3 ++- src/PyPiUpdater/multi_updater.py | 4 ++++ .../{pypi_updater.py => single_updater.py} | 24 +++++++++++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/PyPiUpdater/multi_updater.py rename src/PyPiUpdater/{pypi_updater.py => single_updater.py} (86%) diff --git a/src/PyPiUpdater/__init__.py b/src/PyPiUpdater/__init__.py index 136d36c..621ee43 100644 --- a/src/PyPiUpdater/__init__.py +++ b/src/PyPiUpdater/__init__.py @@ -1,4 +1,5 @@ -from .pypi_updater import PyPiUpdater +from .single_updater import PyPiUpdater +#from .multi_updater import MultiPackageUpdater __all__ = ["PyPiUpdater"] diff --git a/src/PyPiUpdater/multi_updater.py b/src/PyPiUpdater/multi_updater.py new file mode 100644 index 0000000..71e55a9 --- /dev/null +++ b/src/PyPiUpdater/multi_updater.py @@ -0,0 +1,4 @@ + +class MultiPackageUpdater: + def __init__(self, log_path): + print("Not ready yet...") diff --git a/src/PyPiUpdater/pypi_updater.py b/src/PyPiUpdater/single_updater.py similarity index 86% rename from src/PyPiUpdater/pypi_updater.py rename to src/PyPiUpdater/single_updater.py index 3203ddb..851f69b 100644 --- a/src/PyPiUpdater/pypi_updater.py +++ b/src/PyPiUpdater/single_updater.py @@ -6,6 +6,7 @@ import time import json import re from packaging import version +from packaging.version import parse, Version from xml.etree import ElementTree as ET class PyPiUpdater: @@ -25,7 +26,7 @@ class PyPiUpdater: self.last_update_check = 0.1 def _get_latest_version(self): - """Fetch the latest version from PyPI RSS feed.""" + """Fetch the latest stable version from PyPI RSS feed.""" rss_url = f"https://pypi.org/rss/project/{self.package_name.lower()}/releases.xml" try: @@ -33,9 +34,24 @@ class PyPiUpdater: response.raise_for_status() root = ET.fromstring(response.content) - latest_version = root.find(".//item/title").text.strip() - self.latest_version = latest_version - return [latest_version, None] + # Extract all versions from the feed + versions = [] + for item in root.findall(".//item/title"): + version_text = item.text.strip() + parsed_version = parse(version_text) + print(version_text,"\n",parsed_version) + # Check if the version is stable (not a pre-release) + if isinstance(parsed_version, Version) and not parsed_version.is_prerelease: + versions.append(parsed_version) + + # Return the latest stable version + if versions: + latest_version = str(max(versions)) + self.latest_version = latest_version + return [latest_version, None] + + return [None, "No stable versions found"] + except requests.exceptions.RequestException as e: return [None, f"Network error: {str(e)}"] except Exception as e: From 23214d7d32b4a81bd637dfb0c0a7cf190f71fb46 Mon Sep 17 00:00:00 2001 From: CodeByMrFinchum Date: Mon, 10 Feb 2025 13:21:38 +0100 Subject: [PATCH 05/14] fix: removed debug leftover --- CHANGELOG.md | 9 ++++++++- src/PyPiUpdater/single_updater.py | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f07c7b0..c7a8815 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Changelog -## 0.7.0: Added Function to Install Packages +## 0.7.x +### 0.7.2: Removed Debugging Leftovers +- Cleaned up code used for debugging. + +### 0.7.1: Fixed Prerelease Update Detection +- Prevented prerelease versions from being listed as updates, as they must be installed manually. + +### 0.7.0: Added Function to Install Packages - Introduced the `install_package` function, allowing packages to be installed directly through the app. - Useful for optional dependencies that need to be installed separately. This enables installation via the UI. diff --git a/src/PyPiUpdater/single_updater.py b/src/PyPiUpdater/single_updater.py index 851f69b..3e4e6d6 100644 --- a/src/PyPiUpdater/single_updater.py +++ b/src/PyPiUpdater/single_updater.py @@ -39,7 +39,6 @@ class PyPiUpdater: for item in root.findall(".//item/title"): version_text = item.text.strip() parsed_version = parse(version_text) - print(version_text,"\n",parsed_version) # Check if the version is stable (not a pre-release) if isinstance(parsed_version, Version) and not parsed_version.is_prerelease: versions.append(parsed_version) From 8f91f64d04a5a66145965ca13e2ee869089b0092 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Thu, 10 Apr 2025 16:30:40 +0200 Subject: [PATCH 06/14] CI: woodpecker CI --- .gitlab-ci/git/create_tag.yml | 15 ------ .gitlab-ci/versioning/gitversion.yml | 31 ------------ .woodpecker/woodpecker_ci.yml | 75 ++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 46 deletions(-) delete mode 100644 .gitlab-ci/git/create_tag.yml delete mode 100644 .gitlab-ci/versioning/gitversion.yml create mode 100644 .woodpecker/woodpecker_ci.yml diff --git a/.gitlab-ci/git/create_tag.yml b/.gitlab-ci/git/create_tag.yml deleted file mode 100644 index 2c1afd7..0000000 --- a/.gitlab-ci/git/create_tag.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -.git:create_tag: - image: alpine:3.21 - variables: - GIT_STRATEGY: clone - GIT_DEPTH: 0 - GIT_LFS_SKIP_SMUDGE: 1 - VERSION: '' - TOKEN: '' # Token with push privileges - script: - - apk add git - - git remote set-url origin https://oauth2:$TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH - - git tag $VERSION - - git push origin tag $VERSION diff --git a/.gitlab-ci/versioning/gitversion.yml b/.gitlab-ci/versioning/gitversion.yml deleted file mode 100644 index dbbc149..0000000 --- a/.gitlab-ci/versioning/gitversion.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -.versioning:gitversion: - image: - name: mcr.microsoft.com/dotnet/sdk:9.0 - variables: - GIT_STRATEGY: clone - GIT_DEPTH: 0 # force a deep/non-shallow fetch need by gitversion - GIT_LFS_SKIP_SMUDGE: 1 - cache: [] # caches and before / after scripts can mess things up - script: - - | - dotnet tool install --global GitVersion.Tool --version 5.* - export PATH="$PATH:/root/.dotnet/tools" - - dotnet-gitversion -output buildserver - - # We could just collect the output file gitversion.properties (with artifacts:report:dotenv: gitversion.properties as it is already in DOTENV format, - # however it contains ~33 variables which unnecessarily consumes many of the 50 max DOTENV variables of the free GitLab version. - # Limits are higher for licensed editions, see https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportsdotenv - grep 'GitVersion_LegacySemVer=' gitversion.properties >> gitversion.env - grep 'GitVersion_SemVer=' gitversion.properties >> gitversion.env - grep 'GitVersion_FullSemVer=' gitversion.properties >> gitversion.env - grep 'GitVersion_Major=' gitversion.properties >> gitversion.env - grep 'GitVersion_Minor=' gitversion.properties >> gitversion.env - grep 'GitVersion_Patch=' gitversion.properties >> gitversion.env - grep 'GitVersion_MajorMinorPatch=' gitversion.properties >> gitversion.env - grep 'GitVersion_BuildMetaData=' gitversion.properties >> gitversion.env - artifacts: - reports: - # propagates variables into the pipeline level - dotenv: gitversion.env diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml new file mode 100644 index 0000000..01f2460 --- /dev/null +++ b/.woodpecker/woodpecker_ci.yml @@ -0,0 +1,75 @@ +steps: + - name: gitversion + depends_on: [] # nothing start emititly + when: + event: push + branch: main + image: mcr.microsoft.com/dotnet/sdk:9.0 + environment: + CI_TOKEN: + from_secret: CI_TOKEN + commands: + - git remote set-url origin https://CodeByMrFinchum:$CI_TOKEN@code.boxyfoxy.net/$CI_REPO.git + - git fetch --unshallow --tags + - apt-get update && apt-get install -y jq + - dotnet tool install --global GitVersion.Tool --version 5.* + - export PATH="$PATH:/root/.dotnet/tools" + - dotnet-gitversion -output json > version.json + - ls + - cat version.json + - | + echo "GitVersion_SemVer=$(jq -r '.SemVer' version.json)" >> gitversion.env + echo "GitVersion_LegacySemVer=$(jq -r '.LegacySemVer' version.json)" >> gitversion.env + echo "GitVersion_FullSemVer=$(jq -r '.FullSemVer' version.json)" >> gitversion.env + echo "GitVersion_Major=$(jq -r '.Major' version.json)" >> gitversion.env + echo "GitVersion_Minor=$(jq -r '.Minor' version.json)" >> gitversion.env + echo "GitVersion_Patch=$(jq -r '.Patch' version.json)" >> gitversion.env + echo "GitVersion_MajorMinorPatch=$(jq -r '.MajorMinorPatch' version.json)" >> gitversion.env + echo "GitVersion_BuildMetaData=$(jq -r '.BuildMetaData' version.json)" >> gitversion.env + + - name: build + depends_on: [gitversion] + when: + event: push + branch: main + image: python:3.9.21 + commands: + - source gitversion.env + - sed -i "s/^__version__ = .*/__version__ = \"$GitVersion_SemVer\"/" src/PyPiUpdater/__init__.py + - cat src/PyPiUpdater/__init__.py + - python3 -m pip install build + - python3 -m build + + - name: release + depends_on: [gitversion, build] + when: + event: push + branch: main + image: python:3.9.21 + environment: + TWINE_PASSWORD: + from_secret: TWINE_API + TWINE_USERNAME: "__token__" + commands: + - ls + - python3 -m pip install twine + - python3 -m twine upload dist/* + + - name: tag-release + depends_on: [gitversion] + when: + event: push + branch: main + image: alpine/git + environment: + CI_TOKEN: + from_secret: CI_TOKEN + commands: + - ls + - cat gitversion.env + - git config --global user.email "ci@noreply.boxyfoxy.net" + - git config --global user.name "CI Bot" + - git remote set-url origin https://CodeByMrFinchum:$${CI_TOKEN}@code.boxyfoxy.net/$${CI_REPO}.git + - source gitversion.env + - git tag $GitVersion_SemVer + - git push origin tag $GitVersion_SemVer From bf5d68061211b2e9208554378df99706588a1c4f Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Thu, 10 Apr 2025 16:48:17 +0200 Subject: [PATCH 07/14] fix: changed order --- .woodpecker/woodpecker_ci.yml | 59 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index 01f2460..e015764 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -27,35 +27,7 @@ steps: echo "GitVersion_MajorMinorPatch=$(jq -r '.MajorMinorPatch' version.json)" >> gitversion.env echo "GitVersion_BuildMetaData=$(jq -r '.BuildMetaData' version.json)" >> gitversion.env - - name: build - depends_on: [gitversion] - when: - event: push - branch: main - image: python:3.9.21 - commands: - - source gitversion.env - - sed -i "s/^__version__ = .*/__version__ = \"$GitVersion_SemVer\"/" src/PyPiUpdater/__init__.py - - cat src/PyPiUpdater/__init__.py - - python3 -m pip install build - - python3 -m build - - - name: release - depends_on: [gitversion, build] - when: - event: push - branch: main - image: python:3.9.21 - environment: - TWINE_PASSWORD: - from_secret: TWINE_API - TWINE_USERNAME: "__token__" - commands: - - ls - - python3 -m pip install twine - - python3 -m twine upload dist/* - - - name: tag-release + - name: tagging depends_on: [gitversion] when: event: push @@ -73,3 +45,32 @@ steps: - source gitversion.env - git tag $GitVersion_SemVer - git push origin tag $GitVersion_SemVer + + - name: build + depends_on: [gitversion, tagging] + when: + event: push + branch: main + image: python:3.9.21 + commands: + - ls + - source gitversion.env + - sed -i "s/^__version__ = .*/__version__ = \"$GitVersion_SemVer\"/" src/PyPiUpdater/__init__.py + - cat src/PyPiUpdater/__init__.py + - python3 -m pip install build + - python3 -m build + + - name: release + depends_on: [gitversion, tagging, build] + when: + event: push + branch: main + image: python:3.9.21 + environment: + TWINE_PASSWORD: + from_secret: TWINE_API + TWINE_USERNAME: "__token__" + commands: + - ls + - python3 -m pip install twine + - python3 -m twine upload dist/* From 2e2bba2aa5d5a91dce1724dcde6f8a2403af8937 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Thu, 10 Apr 2025 16:59:59 +0200 Subject: [PATCH 08/14] fix: change source to dot --- .woodpecker/woodpecker_ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index e015764..1b3d924 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -42,7 +42,7 @@ steps: - git config --global user.email "ci@noreply.boxyfoxy.net" - git config --global user.name "CI Bot" - git remote set-url origin https://CodeByMrFinchum:$${CI_TOKEN}@code.boxyfoxy.net/$${CI_REPO}.git - - source gitversion.env + - . gitversion.env - git tag $GitVersion_SemVer - git push origin tag $GitVersion_SemVer @@ -54,7 +54,7 @@ steps: image: python:3.9.21 commands: - ls - - source gitversion.env + - . gitversion.env - sed -i "s/^__version__ = .*/__version__ = \"$GitVersion_SemVer\"/" src/PyPiUpdater/__init__.py - cat src/PyPiUpdater/__init__.py - python3 -m pip install build From 03cf68b8731ca76ee52c08696fdd902d18704555 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Thu, 10 Apr 2025 17:05:49 +0200 Subject: [PATCH 09/14] fix: use export for vars --- .woodpecker/woodpecker_ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index 1b3d924..ede607d 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -54,7 +54,8 @@ steps: image: python:3.9.21 commands: - ls - - . gitversion.env + - cat gitversion.env + - export $(cat gitversion.env | xargs) - sed -i "s/^__version__ = .*/__version__ = \"$GitVersion_SemVer\"/" src/PyPiUpdater/__init__.py - cat src/PyPiUpdater/__init__.py - python3 -m pip install build From 364af1cb6ec378b62db94b7a0700b4f8d4b96b8f Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Fri, 11 Apr 2025 11:42:43 +0200 Subject: [PATCH 10/14] ci: now also upload to package on forgejo. --- .woodpecker/woodpecker_ci.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index ede607d..ebb0ec7 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -61,7 +61,7 @@ steps: - python3 -m pip install build - python3 -m build - - name: release + - name: publish_pypi depends_on: [gitversion, tagging, build] when: event: push @@ -75,3 +75,27 @@ steps: - ls - python3 -m pip install twine - python3 -m twine upload dist/* + + - name: publish_forgejo + depends_on: [gitversion, tagging, build] + when: + event: push + branch: main + image: python:3.9.21 + environment: + CI_TOKEN: + from_secret: CI_TOKEN + commands: + - ls + - python3 -m pip install twine + - | + cat > ~/.pypirc < Date: Fri, 11 Apr 2025 11:56:12 +0200 Subject: [PATCH 11/14] fix: fixes publish to forgejo package --- .woodpecker/woodpecker_ci.yml | 6 +++--- CHANGELOG.md | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index ebb0ec7..7822860 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -83,8 +83,8 @@ steps: branch: main image: python:3.9.21 environment: - CI_TOKEN: - from_secret: CI_TOKEN + PKG_TOKEN: + from_secret: PKG_TOKEN commands: - ls - python3 -m pip install twine @@ -96,6 +96,6 @@ steps: [forgejo] repository = https://code.boxyfoxy.net/api/packages/CodeByMrFinchum/pypi username = CodeByMrFinchum - password = ${CI_TOKEN} + password = ${PKG_TOKEN} EOF - python3 -m twine upload --repository forgejo dist/* diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a8815..3e847e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 0.8-0.9: CI woodpecker (25.04.10-11) +- Changes to the pipeline no + ## 0.7.x ### 0.7.2: Removed Debugging Leftovers - Cleaned up code used for debugging. From dc8b1ca9ed18fb9f6983211beeb4470d273bb531 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Fri, 11 Apr 2025 12:09:32 +0200 Subject: [PATCH 12/14] fix: skip twine file --- .woodpecker/woodpecker_ci.yml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/.woodpecker/woodpecker_ci.yml b/.woodpecker/woodpecker_ci.yml index 7822860..c531675 100644 --- a/.woodpecker/woodpecker_ci.yml +++ b/.woodpecker/woodpecker_ci.yml @@ -83,19 +83,10 @@ steps: branch: main image: python:3.9.21 environment: - PKG_TOKEN: + TWINE_PASSWORD: from_secret: PKG_TOKEN + TWINE_USERNAME: "CodeByMrFinchum" commands: - ls - python3 -m pip install twine - - | - cat > ~/.pypirc < Date: Fri, 11 Apr 2025 12:16:59 +0200 Subject: [PATCH 13/14] Adding info about the migration to readme. --- README.md | 2 ++ pip_README.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c3f04c1..ceb666a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # PyPiUpdater +Developed on my [forgejo instance](https://code.boxyfoxy.net/CodeByMrFinchum), [GitLab](https://gitlab.com/CodeByMrFinchum) is used as backup. + **UNFINISHED** Still early code, functions might change drasticly **PyPiUpdater** is a Python library for managing updates of packages installed via `pip`. diff --git a/pip_README.md b/pip_README.md index 2fb85ac..81c43b3 100644 --- a/pip_README.md +++ b/pip_README.md @@ -1,3 +1,3 @@ Simple program to update package from PyPi with pip. -For more info see [PyPiUpdater gitlab](https://gitlab.com/CodeByMrFinchum/PyPiUpdater#). +For more info see [PyPiUpdater forgejo](https://code.boxyfoxy.net/CodeByMrFinchum/PyPiUpdater) or backup repo [PyPiUpdater gitlab](https://gitlab.com/CodeByMrFinchum/PyPiUpdater#). From 77d7092a24f1bccae7a3aa8ef1784806f2ef4a72 Mon Sep 17 00:00:00 2001 From: Mr Finchum Date: Fri, 11 Apr 2025 12:23:11 +0200 Subject: [PATCH 14/14] patch: removed old gitlab ci file. --- .gitlab-ci.yml | 69 -------------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index d93834d..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,69 +0,0 @@ ---- -include: - - local: .gitlab-ci/versioning/gitversion.yml - - local: .gitlab-ci/git/create_tag.yml - -stages: - - build - - release - -gitversion: - extends: .versioning:gitversion - stage: .pre - tags: - - gitlab-org-docker - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch - -build: - stage: build - image: python:3.9.21 - tags: - - gitlab-org-docker - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch - needs: - - job: gitversion - artifacts: true - script: - - sed -i "s/^__version__ = .*/__version__ = \"${GitVersion_MajorMinorPatch}\"/" src/PyPiUpdater/__init__.py - - cat src/PyPiUpdater/__init__.py - - python3 -m pip install build - - python3 -m build - artifacts: - paths: - - dist/* - expire_in: 1 day - -publish: - stage: release - image: python:3.9.21 - tags: - - gitlab-org-docker - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch - variables: - TWINE_USERNAME: "__token__" - TWINE_PASSWORD: $TWINE_API - needs: - - job: build - artifacts: true - script: - - python3 -m pip install twine - - python3 -m twine upload dist/* - -create_tag: - extends: .git:create_tag - stage: release - tags: - - gitlab-org-docker - variables: - VERSION: $GitVersion_SemVer - TOKEN: $GITLAB_TOKEN - needs: - - job: gitversion - artifacts: true - rules: - - if: $CI_COMMIT_TAG - when: never # Do not run this job when a tag is created manually - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch