Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
98261d2
Added tests to express #81
tyler-jachetta Jan 28, 2021
b4aacf5
Added some helper commit_message() and tag_repo() functionality to su…
tyler-jachetta Jan 28, 2021
cf564cf
Added tests so that tags which are not versions get ignored
tyler-jachetta Feb 2, 2021
5cf8c50
Tests for git flavor with version prefixes
tyler-jachetta Feb 2, 2021
7963684
WIP on git flavor prefix fixes
tyler-jachetta Feb 2, 2021
a98ed79
Merge branch 'mainline' into tjachetta/fix-git-flavor-prerelease-bumps
tyler-jachetta Feb 4, 2021
67a2e43
Fixed some issues in new tests
tyler-jachetta Feb 4, 2021
4862146
Updated git flavor to better handle tag prefixes
tyler-jachetta May 10, 2022
7b38aee
Tests: Added and updated integration tests for ansible and gitnative
tyler-jachetta May 11, 2022
2c61290
Used object properties rather than an options dict for some things
tyler-jachetta May 11, 2022
4ee91fb
Display final result
tyler-jachetta May 11, 2022
72c2f11
Updated test for new behaviour
tyler-jachetta May 12, 2022
cb7e40e
Edit: Fixed comment article choice
tyler-jachetta May 12, 2022
cbe1432
Implemented fixed git prerelease bumps
tyler-jachetta May 12, 2022
b8ee364
Fixed some bugs and removed some stale code
tyler-jachetta May 12, 2022
de24588
Made changes necessitated by the linter
tyler-jachetta May 12, 2022
4bf92ba
Merge branch 'otakup0pe:mainline' into tjachetta/fix-git-flavor-prere…
tyler-jachetta May 12, 2022
7721d88
kill your masters
tyler-jachetta May 12, 2022
2e7adc1
Merge branch 'tjachetta/fix-git-flavor-prerelease-bumps' of github.co…
tyler-jachetta May 12, 2022
8e0e17e
More futzing to try to get CI happy
tyler-jachetta May 12, 2022
02cd158
fixed git config invokation
tyler-jachetta May 12, 2022
55ba8ac
adding a debug bit
tyler-jachetta May 12, 2022
948f2f3
Seeing if this gets me my tags while I search
tyler-jachetta May 12, 2022
d2edc7e
removed `make version` dependency in make targets
tyler-jachetta May 12, 2022
6e14166
Nope, and more debugging
tyler-jachetta May 12, 2022
7f7721a
CI: using hack I found to maybe fix issue with no branches
tyler-jachetta May 12, 2022
2715712
Revert "removed `make version` dependency in make targets"
tyler-jachetta May 12, 2022
67cda15
checking if this hack makes CI happy
tyler-jachetta May 12, 2022
822c650
removed test code
tyler-jachetta May 12, 2022
4131573
fixed bug I introduced in Makefile
tyler-jachetta May 12, 2022
86a9669
Added a comment explaining provenance of some code, returned some sty…
tyler-jachetta May 12, 2022
873c94f
use f-string instead of old-style string interpolation
tyler-jachetta May 12, 2022
19dff71
Merge pull request #1 from zebrafishlabs/tjachetta/fix-git-flavor-pre…
tyler-jachetta May 12, 2022
3b0faf0
Testing: Added failing test to express undesired behavior
tyler-jachetta Jun 16, 2022
fb83b85
Prereleases: Added method for getting all previous pre-releases, for …
tyler-jachetta Jun 17, 2022
0e13aa4
Tests: Fixed test and added a little extra assurance
tyler-jachetta Jun 17, 2022
73872f2
Linting: Ordered stdlib imports alphabetically
tyler-jachetta Jun 17, 2022
5ce57dd
Prereleases: Added logic to git flavour to allow for handling tags ac…
tyler-jachetta Jun 17, 2022
64d0abd
Comments: Added docstring explanation for a method
tyler-jachetta Jun 17, 2022
3acef9d
Merge branch 'mainline' into tjachetta/consider_other_branches_for_pr…
tyler-jachetta Jun 17, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions avakas/avakas.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def bump(self,

if prerelease:
prerelease_version = self.get_next_prerelease_version(
original, prefix=prerelease_prefix
original, new_version=self._version, prefix=prerelease_prefix
)

self.make_prerelease(
Expand All @@ -138,6 +138,34 @@ def bump(self,

return True

@staticmethod
def _get_extant_prerelease_versions(prefix, base_version=None,
extant_versions=None):
"""
Return a set of all integer versions that have existed of the specific
pre-release type/prefix (e.g. 'a', 'alpha', 'rc', etc.)

## Note:

`bump` sets `._version` to a non-pre release before calling this, so
can not use current `._version as an extant version
"""

extant_pre = set()
if extant_versions is None:
extant_versions = set()
else:
# be liberal in what you accept
extant_versions = set(extant_versions)

for version in extant_versions:
if not version.truncate() == base_version.truncate():
continue
if version.prerelease:
extant_pre.add(int(version.prerelease[len(prefix):][0][0]))

return extant_pre

def get_next_prerelease_version(
self, starting_version=None, prefix=None,
new_version=None):
Expand Down Expand Up @@ -172,6 +200,9 @@ def get_next_prerelease_version(

current_prefix_match = starting_version.prerelease[:prerelease_len]

extant_prereleases = self._get_extant_prerelease_versions(
prefix, base_version=new_version,
extant_versions=set([starting_version]))
if (new_version == starting_version.truncate()
and prefix == current_prefix_match):

Expand All @@ -188,12 +219,14 @@ def get_next_prerelease_version(
# either there is no explicit prerelease version in the
# current version, or there are additional prerelease
# prefixes which are not intended for this bump
prerelease_version = 0
prerelease_version = 1

else:
# different release or different prefix
prerelease_version = 0
prerelease_version = 1

prerelease_version += 1
while prerelease_version in extant_prereleases:
prerelease_version += 1

return prerelease_version

Expand All @@ -204,7 +237,7 @@ def make_prerelease(self, version, prefix=None, build_date=None):
Args:
* version (`int` or `str`(digits only)): The numeric prerelease
version. i.e., for -dev.3, this is `3` or `"3"`.
* prefix (`str`, optional): the alphabetic (not enforced) prebuild
* prefix (`str`,optional): the alphabetic (not enforced) prebuild
prefix, such as `a`, `beta`, `dev`, and such.
* build_date
"""
Expand Down
22 changes: 21 additions & 1 deletion avakas/flavors/git.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
Avakas Built-In Base Project Flavor
"""

import re
import os
import re

from git import Repo

Expand Down Expand Up @@ -80,6 +80,26 @@ def __create_git_tag(self):
"""Creates a git tag"""
return self.repo.create_tag(self.version)

def _get_extant_prerelease_versions(
self, prefix, base_version=None, extant_versions=None):
"""
Get all tags in this repo, use them to determine all of the pre-
releases for this version, with this pre-release prefix, which have
previously existed

## Note:
This does not fetch tags from remotes
"""
if extant_versions is None:
extant_versions = set()

tag_versions = [self._version_from_tag(t) for t in self.repo.tags]
extant_versions.update(v for v in tag_versions if v is not None)
return super()._get_extant_prerelease_versions(
prefix=prefix,
base_version=base_version,
extant_versions=extant_versions)

def __determine_bump(self, for_prerelease=False):
"""Will go through the Git history until the last version bump
and look for hints that we want to "automatically" bump
Expand Down
15 changes: 14 additions & 1 deletion tests/integration/gitnative.bats
Original file line number Diff line number Diff line change
Expand Up @@ -212,4 +212,17 @@ teardown() {
avakas_wrapper bump "$REPO" auto --flavor "git-native" --tag-prefix "v" --prerelease --prerelease-prefix 'beta'
avakas_wrapper show "$REPO" --flavor "git-native" --tag-prefix 'v'
[ "$output" == "v1.1.0-beta.1" ]
}
}

@test "increment git native prerelease multiple times, in different branches" {
cd $REPO
avakas_wrapper show "$REPO"
[ "$output" == "0.0.1" ]
avakas_wrapper bump "$REPO" patch --prerelease --prerelease-prefix beta
avakas_wrapper show "$REPO"
[ "$output" == "0.0.2-beta.1" ]
git checkout -b branch2
avakas_wrapper bump "$REPO" patch --prerelease --prerelease-prefix beta
avakas_wrapper show "$REPO"
[ "$output" == "0.0.2-beta.2" ]
}