feat(ST2.UtilPackages): bump up all packages
- Refresh PackageCache with latest versions of everything
This commit is contained in:
		| @@ -0,0 +1,81 @@ | ||||
| import re | ||||
|  | ||||
| from .semver import SemVer | ||||
| from .console_write import console_write | ||||
|  | ||||
|  | ||||
| def semver_compat(v): | ||||
|     if isinstance(v, SemVer): | ||||
|         return str(v) | ||||
|  | ||||
|     # Allowing passing in a dict containing info about a package | ||||
|     if isinstance(v, dict): | ||||
|         if 'version' not in v: | ||||
|             return '0' | ||||
|         v = v['version'] | ||||
|  | ||||
|     # Trim v off of the front | ||||
|     v = re.sub('^v', '', v) | ||||
|  | ||||
|     # We prepend 0 to all date-based version numbers so that developers | ||||
|     # may switch to explicit versioning from GitHub/BitBucket | ||||
|     # versioning based on commit dates. | ||||
|     # | ||||
|     # When translating dates into semver, the way to get each date | ||||
|     # segment into the version is to treat the year and month as | ||||
|     # minor and patch, and then the rest as a numeric build version | ||||
|     # with four different parts. The result looks like: | ||||
|     # 0.2012.11+10.31.23.59 | ||||
|     date_match = re.match('(\d{4})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})$', v) | ||||
|     if date_match: | ||||
|         v = '0.%s.%s+%s.%s.%s.%s' % date_match.groups() | ||||
|  | ||||
|     # This handles version that were valid pre-semver with 4+ dotted | ||||
|     # groups, such as 1.6.9.0 | ||||
|     four_plus_match = re.match('(\d+\.\d+\.\d+)[T\.](\d+(\.\d+)*)$', v) | ||||
|     if four_plus_match: | ||||
|         v = '%s+%s' % (four_plus_match.group(1), four_plus_match.group(2)) | ||||
|  | ||||
|     # Semver must have major, minor, patch | ||||
|     elif re.match('^\d+$', v): | ||||
|         v += '.0.0' | ||||
|     elif re.match('^\d+\.\d+$', v): | ||||
|         v += '.0' | ||||
|     return v | ||||
|  | ||||
|  | ||||
| def version_comparable(string): | ||||
|     return SemVer(semver_compat(string)) | ||||
|  | ||||
|  | ||||
| def version_exclude_prerelease(versions): | ||||
|     output = [] | ||||
|     for version in versions: | ||||
|         if SemVer(semver_compat(version)).prerelease != None: | ||||
|             continue | ||||
|         output.append(version) | ||||
|     return output | ||||
|  | ||||
|  | ||||
| def version_filter(versions, allow_prerelease=False): | ||||
|     output = [] | ||||
|     for version in versions: | ||||
|         no_v_version = re.sub('^v', '', version) | ||||
|         if not SemVer.valid(no_v_version): | ||||
|             continue | ||||
|         if not allow_prerelease and SemVer(no_v_version).prerelease != None: | ||||
|             continue | ||||
|         output.append(version) | ||||
|     return output | ||||
|  | ||||
|  | ||||
| def _version_sort_key(item): | ||||
|     return SemVer(semver_compat(item)) | ||||
|  | ||||
|  | ||||
| def version_sort(sortable, **kwargs): | ||||
|     try: | ||||
|         return sorted(sortable, key=_version_sort_key, **kwargs) | ||||
|     except (ValueError) as e: | ||||
|         console_write(u"Error sorting versions - %s" % e, True) | ||||
|         return [] | ||||
		Reference in New Issue
	
	Block a user