-
-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathrelease-type.py3
More file actions
executable file
·62 lines (50 loc) · 1.83 KB
/
release-type.py3
File metadata and controls
executable file
·62 lines (50 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#! /usr/bin/env python3
from os import environ
import re
import toml
release_tag = environ.get('RELEASE_TAG', None)
if not release_tag:
print('::error ::Environment variable RELEASE_TAG is required but missing')
exit(1)
tag_prefix = 'refs/tags/'
if release_tag.startswith(tag_prefix):
release_tag = release_tag.replace(tag_prefix, '', 1)
def dict_path(data, head: str, *tail: str):
if type(data) != dict: raise ValueError('Not a dict', data)
value = data.get(head)
if not tail: return value
return dict_path(value, *tail)
github_output = environ.get('GITHUB_OUTPUT', None)
if not github_output:
print('::error ::Environment variable GITHUB_OUTPUT is required but missing')
exit(1)
def set_output(name: str, value: str):
with open(github_output, 'a') as output_file:
print(f'{name}={value}', file=output_file)
with open('Cargo.toml') as cargo_toml:
data = toml.load(cargo_toml)
version = dict_path(data, 'package', 'version')
if version != release_tag:
print(f'::warning ::RELEASE_TAG ({release_tag}) does not match Cargo.toml#package.version ({version})')
set_output('release_type', 'none')
set_output('is_release', 'false')
set_output('is_prerelease', 'false')
set_output('release_tag', release_tag)
exit(0)
if re.match(r'^[0-9]+\.[0-9]+\.[0-9]+-.+$', release_tag):
set_output('release_type', 'prerelease')
set_output('is_release', 'true')
set_output('is_prerelease', 'true')
set_output('release_tag', release_tag)
exit(0)
if re.match(r'^[0-9]+\.[0-9]+\.[0-9]+$', release_tag):
set_output('release_type', 'official')
set_output('is_release', 'true')
set_output('is_prerelease', 'false')
set_output('release_tag', release_tag)
exit(0)
set_output('release_type', 'none')
set_output('is_release', 'false')
set_output('is_prerelease', 'false')
set_output('release_tag', release_tag)
exit(0)