Gitea_Actions/gitea_actions.py

70 lines
1.8 KiB
Python
Executable File

#!/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}')