def search_job(args): """That moment when you have to rely on a function to look for a job""" try: count = 0 name = str(args.name) job_list = [] cron = TCronTab(user=True) if name == "@all": for job in cron: job_name = job.get_name() enabled = "ON" if job.is_enabled() else "OFF" job_list.append([job_name, job.repr_trigger(), enabled, str(job.slices), job.command]) elif name == "@supercron": for job in cron: if job.is_superjob(): job_name = job.get_name() enabled = "ON" if job.is_enabled() else "OFF" job_list.append([job_name, enabled, job.repr_trigger(), str(job.slices), job.command]) else: jobs = cron.find_name(name) for job in jobs: enabled = "ON" if job.is_enabled() else "OFF" job_list.append([name, enabled, job.repr_trigger(), str(job.slices), job.command]) if job_list: col_widths = [] col_titles = ["Name", "State", "Trigger", "Repetition", "Command"] for i in range(0, 5): col_widths.append(max(max(len(n[i]) for n in job_list) + 2, len(col_titles[i]) + 2)) Utils.debug_print("".join(word.ljust(col_widths[i]) for word, i in zip(col_titles, range(0, 5)))) Utils.debug_print("-" * (sum(col_widths) - 2)) for job_item in job_list: Utils.debug_print("".join(word.ljust(col_widths[i]) for word, i in zip(job_item, range(0, 5)))) count += 1 else: Utils.debug_print("Zero search results.") return count except: # in case of any error, so the unittests can detect it return -1
def trigger_job(args): remove_trigger = False count = 0 cron = TCronTab(user=True) if "quiet" in args: Utils.DEBUG = not args.quiet name = str(args.name) trigger = str(args.trigger[0]) jobs = cron.find_name(name) if trigger.lower().strip() == "none": remove_trigger = True for job in jobs: job.set_trigger("") count += 1 else: trigger_list = Utils.parse_trigger(trigger.strip()) if trigger_list: for job in jobs: job.set_trigger(trigger_list) count += 1 else: print(trigger.strip()) Utils.debug_print("Error: invalid trigger (expected format is \"NONE\" or \"ACTION if NAME is STATE\").") sys.exit(1) cron.write_to_user(user=True) if remove_trigger: if count == 1: Utils.debug_print("Trigger was removed from 1 job named '{}'.".format(name)) else: Utils.debug_print("Trigger was removed from {} jobs named '{}'.".format(count, name)) else: if count == 1: Utils.debug_print("Trigger '{}' was added to 1 job named '{}'." .format(trigger.strip(), name)) else: Utils.debug_print("Trigger '{}' was added to {} jobs named '{}'." .format(trigger.strip(), count, name))