mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-30 18:56:40 +00:00
68 lines
1.8 KiB
Python
Executable File
68 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from __future__ import print_function
|
|
import os
|
|
import os.path
|
|
import json
|
|
import urllib2
|
|
import sys
|
|
import re
|
|
import subprocess
|
|
|
|
repo_matcher = re.compile(r'[a-z]+://(hg|git)\.mozilla\.org')
|
|
|
|
def get_task(taskid):
|
|
return json.load(urllib2.urlopen('https://queue.taskcluster.net/v1/task/' + taskid))
|
|
|
|
def check_task(task):
|
|
payload = task['payload']
|
|
|
|
if 'GECKO_HEAD_REPOSITORY' not in payload['env']:
|
|
print('Task has no head gecko repository', file=sys.stderr)
|
|
return -1
|
|
|
|
repo = payload['env']['GECKO_HEAD_REPOSITORY']
|
|
# if it is not a mozilla repository, fail
|
|
if not repo_matcher.match(repo):
|
|
print('Invalid head repository', repo, file=sys.stderr)
|
|
return -1
|
|
|
|
if 'GECKO_BASE_REPOSITORY' not in payload['env']:
|
|
print('Task has no base gecko repository', file=sys.stderr)
|
|
return -1
|
|
|
|
repo = payload['env']['GECKO_BASE_REPOSITORY']
|
|
if not repo_matcher.match(repo):
|
|
print('Invalid base repository', repo, file=sys.stderr)
|
|
return -1
|
|
|
|
locations = task["extra"]["locations"]
|
|
if "img" in locations:
|
|
img = locations["img"]
|
|
if img.startswith("public"):
|
|
print('Cannot upload images to public', file=sys.stderr)
|
|
return -1
|
|
|
|
return 0
|
|
|
|
def main():
|
|
taskid = os.getenv('TASK_ID')
|
|
|
|
# If the task id is None, we assume we are running docker locally
|
|
if taskid is not None:
|
|
task = get_task(taskid)
|
|
ret = check_task(task)
|
|
if ret != 0:
|
|
return ret
|
|
|
|
if len(sys.argv) > 1:
|
|
try:
|
|
return subprocess.call(sys.argv[1:], shell=True)
|
|
except subprocess.CalledProcessError as e:
|
|
return e.returncode
|
|
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|