Ejemplo n.º 1
0
    def _bump_version(self, release=False, zstream=False):
        """
        Bump up the package version in the spec file.

        Set release to True to bump the package release instead.

        Checks for the keep version option and if found, won't actually
        bump the version or release.
        """
        old_version = get_latest_tagged_version(self.project_name)
        if old_version is None:
            old_version = "untagged"
        if not self.keep_version:
            version_regex = re.compile("^(version:\s*)(.+)$", re.IGNORECASE)
            release_regex = re.compile("^(release:\s*)(.+)$", re.IGNORECASE)

            in_f = open(self.spec_file, 'r')
            out_f = open(self.spec_file + ".new", 'w')

            for line in in_f.readlines():
                version_match = re.match(version_regex, line)
                release_match = re.match(release_regex, line)

                if version_match and not zstream and not release:
                    current_version = version_match.group(2)
                    if hasattr(self, '_use_version'):
                        updated_content = self._use_version
                    else:
                        updated_content = increase_version(current_version)

                    line = "".join([version_match.group(1), updated_content, "\n"])

                elif release_match:
                    current_release = release_match.group(2)
                    if hasattr(self, '_use_release'):
                        updated_content = self._use_release
                    elif release:
                        updated_content = increase_version(current_release)
                    elif zstream:
                        updated_content = increase_zstream(current_release)
                    else:
                        updated_content = reset_release(current_release)

                    line = "".join([release_match.group(1), updated_content, "\n"])

                out_f.write(line)

            in_f.close()
            out_f.close()
            shutil.move(self.spec_file + ".new", self.spec_file)

        new_version = get_spec_version_and_release(self.full_project_dir,
                self.spec_file_name)
        if new_version.strip() == "":
            msg = "Error getting bumped package version, try: \n"
            msg = msg + "  'rpm -q --specfile %s'" % self.spec_file
            error_out(msg)
        info_out("Tagging new version of %s: %s -> %s" % (self.project_name,
            old_version, new_version))
        return new_version
Ejemplo n.º 2
0
    def _bump_version(self, release=False, zstream=False):
        """
        Bump up the package version in the spec file.

        Set release to True to bump the package release instead.

        Checks for the keep version option and if found, won't actually
        bump the version or release.
        """
        old_version = get_latest_tagged_version(self.project_name)
        if old_version is None:
            old_version = "untagged"
        if not self.keep_version:
            version_regex = re.compile("^(version:\s*)(.+)$", re.IGNORECASE)
            release_regex = re.compile("^(release:\s*)(.+)$", re.IGNORECASE)

            in_f = open(self.spec_file, 'r')
            out_f = open(self.spec_file + ".new", 'w')

            for line in in_f.readlines():
                version_match = re.match(version_regex, line)
                release_match = re.match(release_regex, line)

                if version_match and not zstream and not release:
                    current_version = version_match.group(2)
                    if hasattr(self, '_use_version'):
                        updated_content = self._use_version
                    else:
                        updated_content = increase_version(current_version)

                    line = "".join([version_match.group(1), updated_content, "\n"])

                elif release_match:
                    current_release = release_match.group(2)
                    if hasattr(self, '_use_release'):
                        updated_content = self._use_release
                    elif release:
                        updated_content = increase_version(current_release)
                    elif zstream:
                        updated_content = increase_zstream(current_release)
                    else:
                        updated_content = reset_release(current_release)

                    line = "".join([release_match.group(1), updated_content, "\n"])

                out_f.write(line)

            in_f.close()
            out_f.close()
            shutil.move(self.spec_file + ".new", self.spec_file)

        new_version = get_spec_version_and_release(self.full_project_dir,
                self.spec_file_name)
        if new_version.strip() == "":
            msg = "Error getting bumped package version, try: \n"
            msg = msg + "  'rpm -q --specfile %s'" % self.spec_file
            error_out(msg)
        info_out("Tagging new version of %s: %s -> %s" % (self.project_name,
            old_version, new_version))
        return new_version
Ejemplo n.º 3
0
def increment(version):
    """
    Increment the specified version.
    @param version: A version: <version>-<release>
    @return: The incremented version
    """
    version, release = version.rsplit('-', 1)
    if re.search(ALPHA_BETA_REGEX, release):
        release = increase_version(release)
    else:
        version = increase_version(version)
    return '-'.join((version, release))
Ejemplo n.º 4
0
def increment(version):
    """
    Increment the specified version.
    @param version: A version: <version>-<release>
    @return: The incremented version
    """
    version, release = version.rsplit('-', 1)
    if re.search(ALPHA_BETA_REGEX, release):
        release = increase_version(release)
    else:
        version = increase_version(version)
    return '-'.join((version, release))
Ejemplo n.º 5
0
    def _bump_version(self, release=False, zstream=False):
        """
        Bump version in main and Fedora spec file

        Version and Release in Fedora spec file are always updated accordingly to main spec file
        """

        # Version and Release without dist tag
        old_version, old_release = get_spec_version_and_release(
            self.full_project_dir, self.spec_file_name).split('-')
        old_release += '%{?dist}'
        new_version = super(RestraintVersionTagger,
                            self)._bump_version(release, zstream)
        if not self.keep_version:
            version_regex = re.compile("^(version:\s*)(.+)$", re.IGNORECASE)
            release_regex = re.compile("^(release:\s*)(.+)$", re.IGNORECASE)

            in_f = open(self.fedora_spec_file, 'r')
            out_f = open(self.fedora_spec_file + ".new", 'w')

            for line in in_f.readlines():
                version_match = re.match(version_regex, line)
                release_match = re.match(release_regex, line)

                if version_match and not zstream and not release:
                    if hasattr(self, '_use_version'):
                        updated_content = self._use_version
                    else:
                        updated_content = increase_version(old_version)

                    line = "".join(
                        [version_match.group(1), updated_content, "\n"])

                elif release_match:
                    if hasattr(self, '_use_release'):
                        updated_content = self._use_release
                    elif release:
                        updated_content = increase_version(old_release)
                    elif zstream:
                        updated_content = increase_zstream(old_release)
                    else:
                        updated_content = reset_release(old_release)

                    line = "".join(
                        [release_match.group(1), updated_content, "\n"])

                out_f.write(line)

            in_f.close()
            out_f.close()
            shutil.move(self.fedora_spec_file + ".new", self.fedora_spec_file)

        return new_version
Ejemplo n.º 6
0
 def test_increase_release(self):
     line = "1"
     expected = "2"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 7
0
 def test_increase_version_major(self):
     line = "1.0"
     expected = "1.1"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 8
0
    def _bump_version(self, release=False, zstream=False, force=False):
        """
        Bump up the package version in the spec file.

        Set release to True to bump the package release instead.

        Checks for the keep version option and if found, won't actually
        bump the version or release.
        """
        old_version = get_latest_tagged_version(self.project_name)
        if old_version == None:
            old_version = "untagged"
        if not self.keep_version:
            version_regex = re.compile("^(version:\s*)(.+)$", re.IGNORECASE)
            release_regex = re.compile("^(release:\s*)(.+)$", re.IGNORECASE)

            in_f = open(self.spec_file, 'r')
            out_f = open(self.spec_file + ".new", 'w')

            for line in in_f.readlines():
                if release:
                    match = re.match(release_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        increase_version(match.group(2)),
                                        "\n"
                        ))
                elif zstream:
                    match = re.match(release_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        increase_zstream(match.group(2)),
                                        "\n"
                        ))
                elif force:
                    match = re.match(version_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        self._use_version,
                                        "\n"
                        ))

                    match = re.match(release_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        reset_release(match.group(2)),
                                        "\n"
                        ))
                else:
                    match = re.match(version_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        increase_version(match.group(2)),
                                        "\n"
                        ))

                    match = re.match(release_regex, line)
                    if match:
                        line = "".join((match.group(1),
                                        reset_release(match.group(2)),
                                        "\n"
                        ))

                out_f.write(line)

            in_f.close()
            out_f.close()
            shutil.move(self.spec_file + ".new", self.spec_file)

        new_version = self._get_spec_version_and_release()
        if new_version.strip() == "":
            msg = "Error getting bumped package version, try: \n"
            msg = msg + "  'rpm -q --specfile %s'" % self.spec_file
            error_out(msg)
        print("Tagging new version of %s: %s -> %s" % (self.project_name,
            old_version, new_version))
        return new_version
Ejemplo n.º 9
0
 def test_unknown_version(self):
     line = "somethingstrange"
     expected = "somethingstrange"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 10
0
 def test_increase_release_with_rpm_cruft(self):
     line = "1%{?dist}"
     expected = "2%{?dist}"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 11
0
 def test_increase_release_with_rpm_cruft(self):
     line = "1%{?dist}"
     expected = "2%{?dist}"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 12
0
 def test_increase_versionless(self):
     line = "%{app_version}"
     expected = "%{app_version}"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 13
0
 def test_underscore_release(self):
     line = "1_PG5"
     expected = "2_PG5"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 14
0
 def test_increase_release(self):
     line = "1"
     expected = "2"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 15
0
 def test_increase_version_major(self):
     line = "1.0"
     expected = "1.1"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 16
0
 def test_underscore_release(self):
     line = "1_PG5"
     expected = "2_PG5"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 17
0
 def test_increase_versionless(self):
     line = "%{app_version}"
     expected = "%{app_version}"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 18
0
 def test_increase_release_with_zstream(self):
     line = "1%{?dist}.1"
     expected = "1%{?dist}.2"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 19
0
 def test_increase_release_with_zstream(self):
     line = "1%{?dist}.1"
     expected = "1%{?dist}.2"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 20
0
 def test_unknown_version(self):
     line = "somethingstrange"
     expected = "somethingstrange"
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 21
0
 def test_empty_string(self):
     line = ""
     expected = ""
     self.assertEquals(expected, increase_version(line))
Ejemplo n.º 22
0
 def test_empty_string(self):
     line = ""
     expected = ""
     self.assertEquals(expected, increase_version(line))