#!/usr/bin/python3 from gitea_actions_webscraper import GiteaActionsWebscraper import config import os import sys import time import requests import zipfile import io import shlex arguments = ' '.join([shlex.quote(argv) for argv in sys.argv[2:]]) if os.system('git commit ' + arguments) != 0: exit(1) if os.system('git push') != 0: exit(1) with open('.git/refs/heads/master') as f: lastCommit = f.read()[:-1] # Isn't there already live updates on UI? print('Verifying Gitea Actions Webscraper configuration...') gitea_actions_webscraper = GiteaActionsWebscraper(config.instance, config.repository, config.i_like_gitea) print('Gitea Actions Webscraper configuration verified!') while True: while True: actions = gitea_actions_webscraper.getFirstActionsPage() for action in actions: if action.commitHash == lastCommit: break else: print('Waiting to notice action creation') time.sleep(1) continue break if not action.state in ['Running', 'Waiting']: print('Waiting action execution') time.sleep(1) break print('Action state:', action.state) if action.state == 'Failure': messages = '\n'.join([stepLog['message'] for stepLog in actions[0].getStepLogs(9)]) print(messages) exit(1) if not sys.argv[1] in ['compile', 'compile_and_run']: exit(0) artifactFileName = 'LemnosLife_client_debug' print(f'Downloading artifact {artifactFileName}') artifactUrl = action.getArtifactUrl(artifactFileName) cookies = { 'i_like_gitea': config.i_like_gitea } artifactBytes = requests.get(artifactUrl, cookies = cookies).content with zipfile.ZipFile(io.BytesIO(artifactBytes)) as z: z.extractall() if sys.argv[1] != 'compile_and_run': exit(0) os.system(f'./{artifactFileName}')