1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import webbrowser
from threading import Timer
from gecko_taskgraph.target_tasks import filter_by_uncommon_try_tasks
from tryselect.cli import BaseTryParser
from tryselect.push import (
check_working_directory,
generate_try_task_config,
push_to_try,
)
from tryselect.tasks import generate_tasks
here = os.path.abspath(os.path.dirname(__file__))
class ChooserParser(BaseTryParser):
name = "chooser"
arguments = []
common_groups = ["push", "task"]
task_configs = [
"artifact",
"browsertime",
"chemspill-prio",
"disable-pgo",
"env",
"gecko-profile",
"path",
"pernosco",
"rebuild",
"worker-overrides",
]
def run(
update=False,
query=None,
try_config=None,
full=False,
parameters=None,
save=False,
preset=None,
mod_presets=False,
stage_changes=False,
dry_run=False,
message="{msg}",
closed_tree=False,
):
from .app import create_application
push = not stage_changes and not dry_run
check_working_directory(push)
tg = generate_tasks(parameters, full)
# Remove tasks that are not to be shown unless `--full` is specified.
if not full:
blacklisted_tasks = [
label
for label in tg.tasks.keys()
if not filter_by_uncommon_try_tasks(label)
]
for task in blacklisted_tasks:
tg.tasks.pop(task)
app = create_application(tg)
if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
# we are in the reloader process, don't open the browser or do any try stuff
app.run()
return
# give app a second to start before opening the browser
url = "http://127.0.0.1:5000"
Timer(1, lambda: webbrowser.open(url)).start()
print("Starting trychooser on {}".format(url))
app.run()
selected = app.tasks
if not selected:
print("no tasks selected")
return
msg = "Try Chooser Enhanced ({} tasks selected)".format(len(selected))
return push_to_try(
"chooser",
message.format(msg=msg),
try_task_config=generate_try_task_config("chooser", selected, try_config),
stage_changes=stage_changes,
dry_run=dry_run,
closed_tree=closed_tree,
)
|