mirror of
https://github.com/okalachev/flix.git
synced 2026-09-05 16:00:56 +00:00
Build metadata artifact
This commit is contained in:
@@ -12,7 +12,15 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v7
|
- uses: actions/checkout@v7
|
||||||
- name: Check metadata
|
- name: Check metadata
|
||||||
run: tools/metadata.py
|
run: tools/metadata.py generate
|
||||||
|
- name: Copy latest versions
|
||||||
|
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
|
||||||
|
run: cp tools/general.json meta/ && cp tools/parameters.json meta/
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
name: metadata
|
||||||
|
path: meta
|
||||||
csv_to_ulog:
|
csv_to_ulog:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
+19
-10
@@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
# Script for checking the metadata files
|
# Script for checking the metadata files
|
||||||
|
|
||||||
import sys
|
import sys, os
|
||||||
import re
|
import re
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import shutil
|
||||||
import json
|
import json
|
||||||
import zlib
|
import zlib
|
||||||
import requests
|
import requests
|
||||||
@@ -13,10 +14,12 @@ def mavlink_crc323(data: bytes) -> int:
|
|||||||
return (zlib.crc32(data, 0xFFFFFFFF) ^ 0xFFFFFFFF) & 0xFFFFFFFF
|
return (zlib.crc32(data, 0xFFFFFFFF) ^ 0xFFFFFFFF) & 0xFFFFFFFF
|
||||||
|
|
||||||
|
|
||||||
|
code = 0 # exit code
|
||||||
parameter_regexp = re.compile(r'^\s+\{"(?P<name>[^"]+)",\s*&(?P<variable>[^,]+)(.*)\},?$', re.MULTILINE)
|
parameter_regexp = re.compile(r'^\s+\{"(?P<name>[^"]+)",\s*&(?P<variable>[^,]+)(.*)\},?$', re.MULTILINE)
|
||||||
|
|
||||||
parameters_source_file = Path(__file__).parent.parent / 'flix' / 'parameters.ino'
|
parameters_source_file = Path(__file__).parent.parent / 'flix' / 'parameters.ino'
|
||||||
|
mavlink_source_file = Path(__file__).parent.parent / 'flix' / 'mavlink.ino'
|
||||||
parameters_code = parameters_source_file.read_text()
|
parameters_code = parameters_source_file.read_text()
|
||||||
|
mavlink_code = mavlink_source_file.read_text()
|
||||||
parameters_meta_file = Path(__file__).parent / 'parameters.json'
|
parameters_meta_file = Path(__file__).parent / 'parameters.json'
|
||||||
parameters_meta = json.loads(parameters_meta_file.read_text())
|
parameters_meta = json.loads(parameters_meta_file.read_text())
|
||||||
assert parameters_meta['version'] == 1
|
assert parameters_meta['version'] == 1
|
||||||
@@ -49,8 +52,6 @@ print(f'Parameters CRC: {mavlink_crc323(parameters_meta_file.read_bytes())}')
|
|||||||
print(f'General URL: {general_url}')
|
print(f'General URL: {general_url}')
|
||||||
print(f'Parameters URL: {parameters_url}')
|
print(f'Parameters URL: {parameters_url}')
|
||||||
|
|
||||||
code = 0
|
|
||||||
|
|
||||||
assert general_data['version'] == 1
|
assert general_data['version'] == 1
|
||||||
for meta in general_data['metadataTypes']:
|
for meta in general_data['metadataTypes']:
|
||||||
if meta['type'] == 1:
|
if meta['type'] == 1:
|
||||||
@@ -65,14 +66,22 @@ else:
|
|||||||
print('ERROR: Parameters metadata not found in general.json')
|
print('ERROR: Parameters metadata not found in general.json')
|
||||||
code = 1
|
code = 1
|
||||||
|
|
||||||
resp = requests.get(general_url, allow_redirects=True)
|
# check mavlink.ino contains correct link
|
||||||
resp.raise_for_status()
|
if f'{general_crc},' not in mavlink_code:
|
||||||
assert resp.json() == general_data
|
print(f'ERROR: mavlink.ino does not contain correct general.json CRC: {general_crc}')
|
||||||
|
code = 1
|
||||||
|
if general_url not in mavlink_code:
|
||||||
|
print(f'ERROR: mavlink.ino does not contain correct general.json URL: {general_url}')
|
||||||
|
code = 1
|
||||||
|
|
||||||
resp = requests.get(parameters_url, allow_redirects=True)
|
if sys.argv[-1] == 'generate' and not code:
|
||||||
resp.raise_for_status()
|
print('Copy metadata files')
|
||||||
assert resp.json() == parameters_meta
|
os.makedirs(Path(__file__).parent.parent / 'meta' / str(general_crc), exist_ok=True)
|
||||||
|
os.makedirs(Path(__file__).parent.parent / 'meta' / str(parameters_crc), exist_ok=True)
|
||||||
|
shutil.copy(general_meta_file, Path(__file__).parent.parent / 'meta' / str(general_crc) / 'general.json')
|
||||||
|
shutil.copy(parameters_meta_file, Path(__file__).parent.parent / 'meta' / str(parameters_crc) / 'parameters.json')
|
||||||
|
|
||||||
if code == 0:
|
if code == 0:
|
||||||
print('Everything is good')
|
print('Everything is good')
|
||||||
sys.exit(code)
|
sys.exit(code)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user