diff --git a/Jenkinsfile b/Jenkinsfile index 7e4d9bb..4cb7379 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -126,10 +126,13 @@ pipeline { sh("virtualenv --pip=embed --setuptools=embed --wheel=embed --no-periodic-update --activators bash,python BUILD_ENV") sh("virtualenv --pip=embed --setuptools=embed --wheel=embed --no-periodic-update --activators bash,python TEST_ENV") + sh("virtualenv --pip=embed --setuptools=embed --wheel=embed --no-periodic-update --activators bash,python TOOLS_ENV") sh(". ~/BUILD_ENV/bin/activate && pip install --upgrade setuptools build pip copier jinja2-slug toml \"setuptools-git-versioning<2\"") + sh(". ~/BUILD_ENV/bin/activate && pip install git+https://chacha.ddns.net/gitea/chacha/pygitversionhelper.git@master") - + sh(". ~/TOOLS_ENV/bin/activate && pip install simple_rest_client requests") + sh(". ~/TOOLS_ENV/bin/activate && pip install git+https://chacha.ddns.net/gitea/chacha/pygitversionhelper.git@master") } } @@ -156,16 +159,32 @@ pipeline { // using git to get the latest tag on this branch def latestTag = sh(returnStdout: true, script: "git tag --sort=-creatordate | head -n 1").trim() echo("latestTag:. . . . . . . . . . . . $latestTag ") - + + sh(script: """#!/bin/sh - + |. ~/TOOLS_ENV/bin/activate + |exec python - << '__EOWRAPPER__' + | + |from pygitversionhelper import gitversionhelper + | + |print(f"most recent repository tag: {gitversionhelper.tag.getLastTag()}") + |print(f"most recent repository tag: {gitversionhelper.tag.getLastTag(same_branch=True)}") + |print(f"number of commit since last tag: {gitversionhelper.tag.getDistanceFromTag()}") + |print(f"number of commit since last tag: {gitversionhelper.tag.getDistanceFromTag(same_branch=True)}") + |print(f"most recent repository version: {gitversionhelper.version.getLastVersion(formated_output=True)}") + |print(f"current repository version: {gitversionhelper.version.getCurrentVersion(formated_output=True)}") + | + |__EOWRAPPER__ + """.stripMargin()) + // using setuptools_git_versioning to get the generated version number based on Git tags and logs // TODO: read dev_template from toml PY_PROJECT_VERSION = sh(script: """#!/bin/sh - |. ~/BUILD_ENV/bin/activate |exec python - << '__EOWRAPPER__' | - |from setuptools_git_versioning import version_from_git + |from pygitversionhelper import gitversionhelper | - |print(str(version_from_git(tag_filter="^\\d+\\.\\d+\\.\\d+\$",dev_template = "{tag}.post{ccount}")),end ="") + |print(gitversionhelper.version.getCurrentVersion(formated_output=True,version_std="PEP440",bump_type="dev",bump_dev_strategy="post"),end ="") | |__EOWRAPPER__ """.stripMargin(), @@ -388,13 +407,15 @@ pipeline { def GITEA_LOGIN_TOKEN=credentials("GiteaCHACHAPush") } steps { - sh("python3 -m pip install simple_rest_client requests") dir("gitrepo") { script { def CurrentDateTime=java.time.LocalDateTime.now() withCredentials([string( credentialsId: _MkDocsWebCredentials,variable: 'MKDOCSTOKEN' )]) { - sh(script: """#!/usr/bin/env python3 + sh(script: """#!/bin/sh - + |. ~/TOOLS_ENV/bin/activate + |exec python - << '__EOWRAPPER__' + | |from simple_rest_client.api import API |from simple_rest_client.resource import Resource |import json @@ -478,7 +499,7 @@ pipeline { |response=requests.post("http://${_MkDocsWebURL}/API.php?REQ=pushDoc",data=reqData,files=files) |if response.status_code != 200: | raise RuntimeError(f"Wrong server response: {response.status_code}") - | + |__EOWRAPPER__ """.stripMargin()) } } diff --git a/docs-static/usage.md b/docs-static/usage.md index 18b1cdb..9158789 100644 --- a/docs-static/usage.md +++ b/docs-static/usage.md @@ -75,25 +75,29 @@ Get the distance from HEAD to last tag [only on same branch]: Get the last found version in the repository [return MetaVersion object]: - print(f"most recent repository version: {gitversionhelper.tag.getLastVersion()}") + print(f"most recent repository version: {gitversionhelper.version.getLastVersion()}") Get the last found version in the repository [return formated string]: - print(f"most recent repository version: {gitversionhelper.tag.getLastVersion(formated_output=True)}") + print(f"most recent repository version: {gitversionhelper.version.getLastVersion(formated_output=True)}") Others kwargs available to this function: - - version_std: string to force a version standard for rendering ["PEP440" or "SemVer"] - - same_branch: boolean to force searching on same branch - - ignore_unknown_tags: boolean to allow unknown tag to be ignored +* version_std: string to force a version standard for rendering ["PEP440" or "SemVer"] +* same_branch: boolean to force searching on same branch +* ignore_unknown_tags: boolean to allow unknown tag to be ignored Get the current version of the repository, automatically bump it if the last one is not tagged [returns MetaVersion object]: - print(f"most recent repository version: {gitversionhelper.tag.getCurrentVersion()}") - + print(f"current repository version: {gitversionhelper.version.getCurrentVersion()}") + +Or with formated output: + + print(f"current repository version: {gitversionhelper.version.getCurrentVersion(formated_output=True)}") + kwargs available to this function: - - All same args as getLastVersion() - - bump_type: if version need to be pump, allow to configure next release update type: major, minor, patch, dev - - bump_dev_strategy: if bump_type is dev, allow to choose dev update strategy: post, pre-patch, pre-minor, pre-major +* All same args as getLastVersion() +* bump_type: if version need to be pump, allow to configure next release update type: major, minor, patch, dev +* bump_dev_strategy: if bump_type is dev, allow to choose dev update strategy: post, pre-patch, pre-minor, pre-major A version object can also be manually formated: @@ -108,6 +112,6 @@ kwargs available to those function: ## Limitations There is unfortunately some technical limitation : -- MultiThreading and async behavior is not tested. -- Multiple tag on the same commit is not supported. -- Branch filter when searching for a version is only tested with -no-ff strategy \ No newline at end of file +* MultiThreading and async behavior is not tested. +* Multiple tag on the same commit is not supported. +* Branch filter when searching for a version is only tested with -no-ff strategy \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5d00a65..8181d3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,13 +7,12 @@ # work. If not, see . [build-system] -requires = ["setuptools>=63", "wheel", "setuptools-git-versioning<2"] +requires = ["setuptools>=63", "wheel", "setuptools-git-versioning<2","pygitversionhelper"] build-backend = "setuptools.build_meta" [tool.setuptools-git-versioning] enabled = true -dev_template = "{tag}.post{ccount}" -tag_filter = "^\\d+\\.\\d+\\.\\d+$" +version_callback = "pygitversionhelper.gitversionhelper.version.getCurrentFormatedVersion" [project] name = "pygitversionhelper" @@ -49,10 +48,6 @@ where = ["src"] [tool.setuptools.package-data] "pygitversionhelper.data" = ["*.*"] -#[tool.setuptools_scm] -#write_to = "src/pygitversionhelper/_version.py" -#version_scheme = "python-simplified-semver" - [project.urls] Homepage = "https://chacha.ddns.net/gitea/chacha/pygitversionhelper" Documentation = "https://chacha.ddns.net/gitea/chacha/pygitversionhelper/wiki" diff --git a/src/pygitversionhelper/gitversionhelper.py b/src/pygitversionhelper/gitversionhelper.py index 9b0dfab..6e8d48f 100644 --- a/src/pygitversionhelper/gitversionhelper.py +++ b/src/pygitversionhelper/gitversionhelper.py @@ -494,6 +494,14 @@ class gitversionhelper: # pylint: disable=too-few-public-methods return _v.doFormatVersion(**kwargs) return _v + @classmethod + def getCurrentFormatedVersion(cls,**kwargs) -> str : + """ + Same as getCurrentVersion() with formated_output kwarg activated + """ + kwargs["formated_output"]=True + return cls.getCurrentVersion(kwargs) + @classmethod def _parseTag(cls,tag,**kwargs): # pylint: disable=R0914, R0912, R0915 """get the last version from tags