master
py 43 lines 1.09 KB
Raw
1 #!/usr/bin/env python3
2
3 import json
4 import os
5 import pathlib
6
7 from packaging.version import parse
8
9 SCRIPT_PATH = pathlib.Path(__file__).parents[0]
10 REPO_ROOT = SCRIPT_PATH.parents[1]
11 GO_SRC = REPO_ROOT / 'src' / 'go'
12
13 GITHUB_OUTPUT = pathlib.Path(os.environ['GITHUB_OUTPUT'])
14
15 version = parse('1.0.0')
16 modules = []
17
18 for modfile in GO_SRC.glob('**/go.mod'):
19 moddata = modfile.read_text()
20
21 for line in moddata.splitlines():
22 if line.startswith('go '):
23 version = max(version, parse(line.split()[1]))
24 break
25
26 for main in modfile.parent.glob('**/main.go'):
27 mainpath = main.relative_to(modfile.parent).parent
28
29 if 'examples' in mainpath.parts:
30 continue
31
32 # Skip ibmdplugin as it requires CGO
33 if 'ibmdplugin' in mainpath.parts:
34 continue
35
36 modules.append({
37 'module': str(modfile.parent),
38 'version': str(version),
39 'build_target': f'github.com/netdata/netdata/go/plugins/{str(mainpath)}/',
40 })
41
42 with GITHUB_OUTPUT.open('a') as f:
43 f.write(f'matrix={json.dumps(modules)}\n')