jenkins: autocompletion of commands and jobs

This commit is contained in:
James Booth
2014-06-12 00:24:52 +01:00
parent 2aa4a5922d
commit 6040b41eae

View File

@@ -13,8 +13,6 @@ New failures are reported in the jenkins window, and a desktop notification is s
The 'prof_remind_interval' specifies the time between reminder notifications of broken builds The 'prof_remind_interval' specifies the time between reminder notifications of broken builds
When in the jenkins window, the "/jenkins" part of the command can be omitted.
""" """
import prof import prof
@@ -195,6 +193,8 @@ def _jenkins_poll():
global job_list global job_list
global changes_list global changes_list
job_ac = []
while True: while True:
time.sleep(jenkins_poll_interval) time.sleep(jenkins_poll_interval)
try: try:
@@ -216,6 +216,14 @@ def _jenkins_poll():
new_job_list.add_job(name, None, STATE_NOBUILDS) new_job_list.add_job(name, None, STATE_NOBUILDS)
else: else:
_process_queued_or_running(name, job, new_job_list, new_changes_list) _process_queued_or_running(name, job, new_job_list, new_changes_list)
if not job_list:
job_ac.append(name)
if not job_list:
prof.register_ac("/jenkins build", job_ac)
prof.register_ac("/jenkins open", job_ac)
prof.register_ac("/jenkins log", job_ac)
job_list = new_job_list job_list = new_job_list
changes_list = new_changes_list changes_list = new_changes_list
@@ -248,12 +256,7 @@ def _prof_callback():
changes_list = None changes_list = None
def _handle_input(win, line): def _handle_input(win, line):
if line: pass
words = line.split()
if len(words) == 1:
_cmd_jenkins(words[0], None)
elif len(words) == 2:
_cmd_jenkins(words[0], words[1])
def _list_jobs(jobs): def _list_jobs(jobs):
for name, build_number, state in jobs: for name, build_number, state in jobs:
@@ -426,6 +429,13 @@ def prof_init(version, status):
prof.register_timed(_prof_callback, prof_cb_interval) prof.register_timed(_prof_callback, prof_cb_interval)
prof.register_timed(_remind, prof_remind_interval) prof.register_timed(_remind, prof_remind_interval)
cmd_ac = [ "help", "jobs", "failing", "passing", "unstable", "build", "open", "log", "remind", "notify", "settings" ]
prof.register_ac("/jenkins", cmd_ac);
remind_ac = [ "on", "off" ]
prof.register_ac("/jenkins remind", remind_ac);
notify_ac = [ "on", "off" ]
prof.register_ac("/jenkins notify", notify_ac);
prof.register_command("/jenkins", 0, 2, "/jenkins list|build|open|remind|notify|settings|help", "Do jenkins stuff.", "Do jenkins stuff.", prof.register_command("/jenkins", 0, 2, "/jenkins list|build|open|remind|notify|settings|help", "Do jenkins stuff.", "Do jenkins stuff.",
_cmd_jenkins) _cmd_jenkins)