This is a fork of:
https://github.com/roglew/puppy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
from ..macros import macro_from_requests, MacroTemplate, load_macros |
|
|
|
macro_dict = {} |
|
|
|
def generate_macro(client, args): |
|
if len(args) == 0: |
|
print("usage: gma [name] [reqids]") |
|
return |
|
macro_name = args[0] |
|
|
|
reqs = [] |
|
if len(args) > 1: |
|
ids = args[1].split(',') |
|
for reqid in ids: |
|
req = client.req_by_id(reqid) |
|
reqs.append(req) |
|
|
|
script_string = macro_from_requests(reqs) |
|
fname = MacroTemplate.template_filename('macro', macro_name) |
|
with open(fname, 'w') as f: |
|
f.write(script_string) |
|
print("Macro written to {}".format(fname)) |
|
|
|
def load_macros_cmd(client, args): |
|
global macro_dict |
|
|
|
load_dir = '.' |
|
if len(args) > 0: |
|
load_dir = args[0] |
|
|
|
loaded_macros, loaded_int_macros = load_macros(load_dir) |
|
for macro in loaded_macros: |
|
macro_dict[macro.name] = macro |
|
print("Loaded {} ({})".format(macro.name, macro.file_name)) |
|
|
|
def complete_run_macro(text, line, begidx, endidx): |
|
from ..util import autocomplete_starts_with |
|
|
|
global macro_dict |
|
strs = [k for k,v in macro_dict.iteritems()] |
|
return autocomplete_startswith(text, strs) |
|
|
|
def run_macro(client, args): |
|
global macro_dict |
|
if len(args) == 0: |
|
print("usage: rma [macro name]") |
|
return |
|
macro = macro_dict[args[0]] |
|
macro.execute(client, args[1:]) |
|
|
|
def load_cmds(cmd): |
|
cmd.set_cmds({ |
|
'generate_macro': (generate_macro, None), |
|
'load_macros': (load_macros_cmd, None), |
|
'run_macro': (run_macro, complete_run_macro), |
|
}) |
|
cmd.add_aliases([ |
|
('generate_macro', 'gma'), |
|
('load_macros', 'lma'), |
|
('run_macro', 'rma'), |
|
])
|
|
|