Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package obs-service-set_version for 
openSUSE:Factory checked in at 2021-07-18 23:44:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-set_version (Old)
 and      /work/SRC/openSUSE:Factory/.obs-service-set_version.new.2632 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "obs-service-set_version"

Sun Jul 18 23:44:59 2021 rev:40 rq:906285 version:0.5.14

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/obs-service-set_version/obs-service-set_version.changes
  2021-02-11 12:46:21.077398366 +0100
+++ 
/work/SRC/openSUSE:Factory/.obs-service-set_version.new.2632/obs-service-set_version.changes
        2021-07-18 23:45:12.570925881 +0200
@@ -1,0 +2,9 @@
+Wed Jul 14 09:32:33 UTC 2021 - fschrei...@suse.com
+
+- Update to version 0.5.14:
+  * changed debugging output to logging module
+  * Explicitely specifying --fromfile should win over .obsinfo
+  * Add new switch --fromfile
+  * Add zst to recognized suffixes (zstd support)
+
+-------------------------------------------------------------------

Old:
----
  obs-service-set_version-0.5.13.tar.gz

New:
----
  obs-service-set_version-0.5.14.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ obs-service-set_version.spec ++++++
--- /var/tmp/diff_new_pack.TmwEtl/_old  2021-07-18 23:45:13.002922559 +0200
+++ /var/tmp/diff_new_pack.TmwEtl/_new  2021-07-18 23:45:13.006922527 +0200
@@ -1,5 +1,5 @@
 #
-# spec file for package obs-service-set_version
+# spec file
 #
 # Copyright (c) 2021 SUSE LLC
 #
@@ -23,14 +23,14 @@
 %endif
 %define service set_version
 
-%if 0%{?suse_version} > 1315  || 0%{?fedora_version}  || 0%{?centos_version} 
>= 800
+%if 0%{?suse_version} > 1315  || 0%{?fedora_version}  || 0%{?centos_version} 
>= 800 || 0%{?almalinux} >= 8
 %define use_python python3
 %else
 %define use_python python
 %endif
 
 Name:           obs-service-%{service}
-Version:        0.5.13
+Version:        0.5.14
 Release:        0
 Summary:        An OBS source service: Update spec file version
 License:        GPL-2.0-or-later

++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.TmwEtl/_old  2021-07-18 23:45:13.034922313 +0200
+++ /var/tmp/diff_new_pack.TmwEtl/_new  2021-07-18 23:45:13.034922313 +0200
@@ -1,5 +1,5 @@
 pkgname=obs-service-set_version
-pkgver=0.5.13
+pkgver=0.5.14
 pkgrel=0
 pkgdesc="An OBS source service: Update spec file version"
 arch=('i686' 'x86_64')

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.TmwEtl/_old  2021-07-18 23:45:13.066922066 +0200
+++ /var/tmp/diff_new_pack.TmwEtl/_new  2021-07-18 23:45:13.066922066 +0200
@@ -4,4 +4,4 @@
   <param 
name="changesrevision">eaedc529acba421821e0e5dcb4956c66e7f315a9</param></service>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/openSUSE/obs-service-set_version.git</param>
-              <param 
name="changesrevision">dd24a0ed641d06a023607430be967e356f97d931</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">854fd2773fc0683c64a42c7ea42c4c743f3dd57f</param></service></servicedata>
\ No newline at end of file

++++++ debian.dsc ++++++
--- /var/tmp/diff_new_pack.TmwEtl/_old  2021-07-18 23:45:13.086921912 +0200
+++ /var/tmp/diff_new_pack.TmwEtl/_new  2021-07-18 23:45:13.086921912 +0200
@@ -1,6 +1,6 @@
 Format: 1.0
 Source: obs-service-set_version
-Version: 0.5.13-0
+Version: 0.5.14-0
 Binary: obs-service-set_version
 Provides: obs-service-set_version
 Maintainer: Adrian Schroeter <adr...@suse.de>

++++++ obs-service-set_version-0.5.13.tar.gz -> 
obs-service-set_version-0.5.14.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-set_version-0.5.13/.github/workflows/main.yml 
new/obs-service-set_version-0.5.14/.github/workflows/main.yml
--- old/obs-service-set_version-0.5.13/.github/workflows/main.yml       
1970-01-01 01:00:00.000000000 +0100
+++ new/obs-service-set_version-0.5.14/.github/workflows/main.yml       
2021-07-14 11:26:12.000000000 +0200
@@ -0,0 +1,32 @@
+# This workflow will install Python dependencies, run tests and lint with a 
single version of Python
+# For more information see: 
https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: Testing
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python 3.9
+      uses: actions/setup-python@v2
+      with:
+        python-version: 3.9
+    - name: Install required deb packages
+      run: sudo apt-get install zypper devscripts
+    - name: Install python dependencies
+      run: |
+        python -m pip install --upgrade pip
+        pip install flake8 pytest
+        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+    - name: Test with pytest
+      run: |
+        make test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.13/.gitignore 
new/obs-service-set_version-0.5.14/.gitignore
--- old/obs-service-set_version-0.5.13/.gitignore       1970-01-01 
01:00:00.000000000 +0100
+++ new/obs-service-set_version-0.5.14/.gitignore       2021-07-14 
11:26:12.000000000 +0200
@@ -0,0 +1,5 @@
+*.pyc
+*.pyo
+*.sw?
+set_versionc
+tests/test_newline/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.13/requirements.txt 
new/obs-service-set_version-0.5.14/requirements.txt
--- old/obs-service-set_version-0.5.13/requirements.txt 1970-01-01 
01:00:00.000000000 +0100
+++ new/obs-service-set_version-0.5.14/requirements.txt 2021-07-14 
11:26:12.000000000 +0200
@@ -0,0 +1 @@
+ddt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.13/set_version 
new/obs-service-set_version-0.5.14/set_version
--- old/obs-service-set_version-0.5.13/set_version      2020-09-14 
09:13:14.000000000 +0200
+++ new/obs-service-set_version-0.5.14/set_version      2021-07-14 
11:26:12.000000000 +0200
@@ -23,6 +23,7 @@
 import tarfile
 import zipfile
 import codecs
+import logging
 
 try:
     from packaging.version import LegacyVersion, Version, parse
@@ -35,14 +36,12 @@
     HAS_PACKAGING = True
 
 
-DEBUG = False
-
 if os.environ.get('DEBUG_SET_VERSION') == "1":
-    DEBUG = True
+    logging.getLogger().setLevel(logging.DEBUG)
 
 outdir = None
 suffixes = ('.obscpio', '.tar', '.tar.gz', '.tgz', '.tar.bz2', '.tbz2',
-            '.tar.xz', '.zip')
+            '.tar.xz', '.tar.zst', '.zip')
 suffixes_re = "|".join(map(lambda x: re.escape(x), suffixes))
 
 
@@ -55,48 +54,44 @@
 
 
 class VersionDetector(object):
-    def __init__(self, regex=None, file_list=(), basename=''):
+    def __init__(self, regex=None, file_list=(), basename='',
+                 versionfile=None):
         self.regex = regex
         self.file_list = file_list
         self.basename = basename
+        self.versionfile = versionfile
 
     def autodetect(self):
-        if DEBUG:
-            print("Starting version autodetect")
-
-        if DEBUG:
-            print("-- Starting version detection via obsinfo")
-        version = self._get_version_via_obsinfo()
+        logging.debug("Starting version autodetect")
+        logging.debug("-- Starting version detection via specified file")
+        version = self._get_version_via_versionfile()
+        if not version:
+            logging.debug("--- Could not find version via specified file")
+            logging.debug("-- Starting version detection via obsinfo")
+            version = self._get_version_via_obsinfo()
         if not version:
-            if DEBUG:
-                print("--- Could not find version via obsinfo")
-                print("-- Starting version detection via archive dirname")
+            logging.debug("--- Could not find version via obsinfo")
+            logging.debug("-- Starting version detection via archive dirname")
             version = self._get_version_via_archive_dirname()
         if not version:
-            if DEBUG:
-                print("--- Could not find version via archive dirname")
-                print("-- Starting version detection via filename")
+            logging.debug("--- Could not find version via archive dirname")
+            logging.debug("-- Starting version detection via filename")
             version = self._get_version_via_filename()
         if not version:
-            if DEBUG:
-                print("--- Could not find version via filename")
-                print("-- Starting version detection via debian changelog")
+            logging.debug("--- Could not find version via filename")
+            logging.debug("-- Starting version detection via debian changelog")
             version = self.get_version_via_debian_changelog("debian.changelog")
         if not version:
-            if DEBUG:
-                print("--- Could not find version via debian changelog")
+            logging.debug("--- Could not find version via debian changelog")
         return version
 
     def _get_version_via_filename(self):
         """ detect version based on file names"""
-        if DEBUG:
-            print("detecting version via files")
+        logging.debug("detecting version via files")
         for f in self.file_list:
-            if DEBUG:
-                print("  - checking file ", f)
+            logging.debug("  - checking file %s", f)
             if self.regex:
-                if DEBUG:
-                    print("  - using regex: ", self.regex)
+                logging.debug("  - using regex: %r", self.regex)
                 regex = self.regex
             else:
                 regex = r"^%s.*[-_]([\d].*)(?:%s)$" % (
@@ -108,6 +103,35 @@
         # Nothing found
         return None
 
+    def _get_version_via_versionfile(self):
+        """ detect version based on custom file contents"""
+        logging.debug("detecting version via custom file")
+
+        if not self.versionfile:
+            logging.debug("Custom file name not set")
+            return None
+
+        logging.debug("  - checking file '%s'", self.versionfile)
+
+        if self.regex:
+            regex = self.regex
+        else:
+            regex = r"^[Vv]ersion:\s+([\d].*)(?:)\s?$"
+
+        logging.debug("  - using regex: %r", regex)
+
+        if not os.path.exists(self.versionfile):
+            logging.debug("  - file: %s does not exist", self.versionfile)
+            raise OSError(os.errno.ENOENT, os.strerror(os.errno.ENOENT),
+                          self.versionfile)
+
+        with codecs.open(self.versionfile, 'r', 'utf8') as fp:
+            for line in fp:
+                m = re.match(regex, line)
+                if m:
+                    return m.group(1)
+        return None
+
     def __get_version(self, str_list):
         if self.regex:
             regex = self.regex
@@ -124,11 +148,9 @@
     def _get_version_via_archive_dirname(self):
         """ detect version based tar'd directory name"""
         for f in filter(lambda x: x.endswith(suffixes), self.file_list):
-            if DEBUG:
-                print("Checking path: '%s'." % f)
+            logging.debug("Checking path: '%s'.", f)
             if not os.path.isfile(f):
-                if DEBUG:
-                    print("Skipping path: '%s' is not a regular file." % f)
+                logging.debug("Skipping path: '%s' is not a regular file.", f)
                 continue
             # handle tarfiles
             if tarfile.is_tarfile(f):
@@ -211,8 +233,7 @@
     def _is_python(f):
         names = []
         if not os.path.isfile(f):
-            if DEBUG:
-                print("Skipping path: '%s' is not a regular file." % f)
+            logging.debug("Skipping path: '%s' is not a regular file.", f)
             return False
         if tarfile.is_tarfile(f):
             with tarfile.open(f) as tf:
@@ -338,10 +359,10 @@
 
 
 def _version_detect(args, files_local):
-    vdetect = VersionDetector(args['regex'], files_local, args["basename"])
+    vdetect = VersionDetector(args['regex'], files_local, args["basename"],
+                              args["fromfile"])
     ver = vdetect.autodetect()
-    if DEBUG:
-        print("Found version '%s'" % ver)
+    logging.debug("Found version '%s'", ver)
 
     return ver
 
@@ -367,6 +388,9 @@
                         help='Enable more verbose output.')
     parser.add_argument('--regex',
                         help='regex to be used by autodetect')
+    parser.add_argument('--fromfile',
+                        help='detect version based on the '
+                             'file contents and regex')
     args = vars(parser.parse_args())
 
     version = args['version']
@@ -378,13 +402,17 @@
         sys.exit(-1)
 
     if args['debug']:
-        print("Running in debug mode")
-        DEBUG = True
+        logging.getLogger().setLevel(logging.DEBUG)
+        logging.debug("Running in debug mode")
 
     files_local = _get_local_files()
 
     if not version:
-        version = _version_detect(args, files_local)
+        try:
+            version = _version_detect(args, files_local)
+        except Exception as e:
+            print("Detection failed with error: \"", e, "\".")
+            sys.exit(-1)
 
     if not version:
         print("unable to detect the version")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.13/set_version.service 
new/obs-service-set_version-0.5.14/set_version.service
--- old/obs-service-set_version-0.5.13/set_version.service      2020-09-14 
09:13:14.000000000 +0200
+++ new/obs-service-set_version-0.5.14/set_version.service      2021-07-14 
11:26:12.000000000 +0200
@@ -12,6 +12,9 @@
   <parameter name="file">
     <description>Update only the given file.</description>
   </parameter>
+  <parameter name="fromfile">
+    <description>Try to detect version from the contents of the given 
file.</description>
+  </parameter>
   <parameter name="regex">
     <description>This regex can be used to autodetect the version from the 
source dir
 inside the source file or the source file directly.</description>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.13/tests/test_base.py 
new/obs-service-set_version-0.5.14/tests/test_base.py
--- old/obs-service-set_version-0.5.13/tests/test_base.py       2020-09-14 
09:13:14.000000000 +0200
+++ new/obs-service-set_version-0.5.14/tests/test_base.py       2021-07-14 
11:26:12.000000000 +0200
@@ -264,11 +264,11 @@
         files_local = ['test-v1.2.3.tar']
 
         # checking dirname in archive detection
-        args = {'regex': '^test-v(.*)', 'basename': ''}
+        args = {'regex': '^test-v(.*)', 'basename': '', 'fromfile': None}
         ver = sv._version_detect(args, files_local)
         self.assertEqual(ver, '1.2.3')
 
         # checking archive filename detection
-        args = {'regex': '^test-v(.*).tar', 'basename': ''}
+        args = {'regex': '^test-v(.*).tar', 'basename': '', 'fromfile': None}
         ver = sv._version_detect(args, files_local)
         self.assertEqual(ver, '1.2.3')

Reply via email to