Sat, 11 Apr 2015 21:02:54 +0300
- fixed a derp in commitsdb
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1 | import os |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
2 | import re |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
3 | import time |
73
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
4 | from configfile import Config |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
5 | |
65
20bd76353eb5
- modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents:
62
diff
changeset
|
6 | Modules = {} |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
7 | Commands = {} |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
8 | Hooks = {} |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
9 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
10 | class CommandError (Exception): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
11 | def __init__ (self, value): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
12 | self.value = value |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
13 | def __str__ (self): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
14 | return self.value |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
15 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
16 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
17 | # init_data() |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
18 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
19 | # Initializes command module data |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
20 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
21 | def init_data(): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
22 | global Commands |
65
20bd76353eb5
- modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents:
62
diff
changeset
|
23 | global Modules |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
24 | files = os.listdir ('.') |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
25 | numHooks = 0 |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
26 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
27 | for fn in files: |
65
20bd76353eb5
- modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents:
62
diff
changeset
|
28 | if fn[0:4] != 'mod_' or fn[-3:] != '.py': |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
29 | continue |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
30 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
31 | fn = fn[0:-3] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
32 | globals = {} |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
33 | module = __import__ (fn) |
65
20bd76353eb5
- modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents:
62
diff
changeset
|
34 | Modules[fn] = module |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
35 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
36 | for cmd in module.ModuleData['commands']: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
37 | if cmd['args'] == None: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
38 | cmd['args'] = '' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
39 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
40 | cmd['module'] = module |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
41 | cmd['regex'] = make_regex (cmd['args']) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
42 | cmd['argnames'] = [] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
43 | Commands[cmd['name']] = cmd |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
44 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
45 | for argname in cmd['args'].split (' '): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
46 | argname = argname[1:-1] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
47 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
48 | if argname[-3:] == '...': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
49 | argname = argname[0:-3] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
50 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
51 | if argname == '': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
52 | continue |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
53 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
54 | cmd['argnames'].append (argname) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
55 | |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
56 | if 'hooks' in module.ModuleData: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
57 | for key, hooks in module.ModuleData['hooks'].iteritems(): |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
58 | for hook in hooks: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
59 | if key not in Hooks: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
60 | Hooks[key] = [] |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
61 | |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
62 | Hooks[key].append ({'name': hook, 'func': getattr (module, hook)}) |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
63 | numHooks += 1 |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
64 | |
65
20bd76353eb5
- modularized the configuration and made it more systematic
Teemu Piippo <crimsondusk64@gmail.com>
parents:
62
diff
changeset
|
65 | print "Loaded module %s" % fn |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
66 | |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
67 | print ('Loaded %d commands and %d hooks in %d modules' % |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
68 | (len (Commands), numHooks, len (Modules))) |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
69 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
70 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
71 | # command_error (message) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
72 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
73 | # Raises a command error |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
74 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
75 | def command_error (message): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
76 | raise CommandError (message) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
77 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
78 | # |
102
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
79 | # is_available (cmd, ident, host) |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
80 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
81 | # Is the given command available to the given user? |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
82 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
83 | def is_available (cmd, ident, host): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
84 | if cmd['level'] == 'admin' \ |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
85 | and not "%s@%s" % (ident, host) in Config.get_value ('admins', default=[]): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
86 | return False |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
87 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
88 | return True |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
89 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
90 | # |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
91 | # response_function |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
92 | # |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
93 | g_responsePages = [[]] |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
94 | g_responsePageNum = 0 |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
95 | g_lastConfirm = 0 |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
96 | g_confirmCommand = None |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
97 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
98 | class Confirmxeption (Exception): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
99 | def __init__ (self, id, value): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
100 | self.id = id |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
101 | self.message = value |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
102 | def __str__ (self): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
103 | return self.message |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
104 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
105 | def response_function (message): |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
106 | global g_responsePages |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
107 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
108 | if len (g_responsePages[-1]) > 4: |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
109 | g_responsePages.append ([message]) |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
110 | else: |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
111 | g_responsePages[-1].append (message) |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
112 | |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
113 | def confirm_function (id, message): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
114 | raise Confirmxeption (id, message) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
115 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
116 | def print_responses (commandObject): |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
117 | global g_responsePages |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
118 | global g_responsePageNum |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
119 | bot = commandObject['bot'] |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
120 | replyto = commandObject['replyto'] |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
121 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
122 | # Check bounds |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
123 | if g_responsePageNum >= len (g_responsePages): |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
124 | bot.privmsg (replyto, "No more messages.") |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
125 | return |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
126 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
127 | # Print this page |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
128 | for line in g_responsePages[g_responsePageNum]: |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
129 | bot.privmsg (replyto, line) |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
130 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
131 | # Advance page cursor |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
132 | g_responsePageNum += 1 |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
133 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
134 | # If this was not the last page, tell the user there's more |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
135 | if g_responsePageNum != len (g_responsePages): |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
136 | num = (len (g_responsePages) - g_responsePageNum) |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
137 | bot.privmsg (replyto, "%d more page%s, use .more to continue output" \ |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
138 | % (num, 's' if num != 1 else '')) |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
139 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
140 | # |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
141 | # check_same_caller (comm1, comm2) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
142 | # |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
143 | # Are the two commands called by the same person? |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
144 | # |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
145 | def check_same_caller (comm1, comm2): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
146 | return comm1['bot'].name == comm2['bot'].name \ |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
147 | and comm1['sender'] == comm2['sender'] \ |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
148 | and comm1['ident'] == comm2['ident'] \ |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
149 | and comm1['host'] == comm2['host'] |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
150 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
151 | def exec_command (commandObject): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
152 | global g_lastConfirm |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
153 | global g_confirmCommand |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
154 | cmdname = commandObject['cmdname'] |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
155 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
156 | try: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
157 | func = getattr (commandObject['module'], 'cmd_' + cmdname) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
158 | except AttributeError: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
159 | command_error ('command "%s" is not defined!' % cmdname) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
160 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
161 | try: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
162 | func (**commandObject) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
163 | except Confirmxeption as e: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
164 | if time.time() - g_lastConfirm < 15 and g_confirmCommand != None: |
121
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
165 | command_error ('''another confirm is underway''') |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
166 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
167 | g_lastConfirm = time.time() |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
168 | response_function (str (e) + ' (.yes/.no)') |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
169 | commandObject['confirmed'] = e.id |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
170 | g_confirmCommand = commandObject |
121
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
171 | except Exception as e: |
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
172 | command_error (str (e)) |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
173 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
174 | # |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
175 | # call_command (bot, message, cmdname, **kvargs) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
176 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
177 | # Calls a cobalt command |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
178 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
179 | def call_command (bot, message, cmdname, **kvargs): |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
180 | global g_responsePages |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
181 | global g_responsePageNum |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
182 | |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
183 | try: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
184 | cmd = Commands[cmdname] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
185 | except KeyError: |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
186 | return |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
187 | |
102
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
188 | if not is_available (cmd, kvargs['ident'], kvargs['host']): |
73
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
189 | command_error ("you may not use %s" % cmdname) |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
190 | |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
191 | match = re.compile (cmd['regex']).match (message) |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
192 | |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
193 | if match == None: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
194 | # didn't match |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
195 | command_error ('invalid arguments\nusage: %s %s' % (cmd['name'], cmd['args'])) |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
196 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
197 | # .more is special as it is an interface to the page system. |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
198 | # Anything else resets it. |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
199 | if cmdname != 'more': |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
200 | g_responsePages = [[]] |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
201 | g_responsePageNum = 0 |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
202 | |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
203 | i = 1 |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
204 | args = {} |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
205 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
206 | for argname in cmd['argnames']: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
207 | args[argname] = match.group (i) |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
208 | i += 1 |
115 | 209 | |
210 | print "ModuleCore: %s called by %s" % (cmdname, kvargs['sender']) | |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
211 | commandObject = kvargs |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
212 | commandObject['bot'] = bot |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
213 | commandObject['cmdname'] = cmdname |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
214 | commandObject['args'] = args |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
215 | commandObject['reply'] = response_function |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
216 | commandObject['confirm'] = confirm_function |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
217 | commandObject['confirmed'] = 0 |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
218 | commandObject['commandObject'] = commandObject |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
219 | commandObject['info'] = cmd |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
220 | commandObject['module'] = cmd['module'] |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
221 | commandObject['error'] = command_error |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
222 | exec_command (commandObject) |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
223 | |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
224 | # Print the first page of responses. |
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
225 | if cmdname != 'more': |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
226 | print_responses (commandObject) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
227 | |
118
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
228 | def call_hook (bot, hookname, **kvargs): |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
229 | global g_responsePages |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
230 | global g_responsePageNum |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
231 | hookObject = kvargs |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
232 | hookObject['bot'] = bot |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
233 | g_responsePages = [[]] |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
234 | g_responsePageNum = 0 |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
235 | |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
236 | if 'replyto' in hookObject: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
237 | hookObject['reply'] = response_function |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
238 | |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
239 | if hookname in Hooks: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
240 | for hook in Hooks[hookname]: |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
241 | hook['func'] (**hookObject) |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
242 | |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
243 | print_responses (hookObject) |
dbf49689af0d
- added bridging functionality
Teemu Piippo <crimsondusk64@gmail.com>
parents:
117
diff
changeset
|
244 | |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
245 | def confirm (cmd, yes): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
246 | global g_confirmCommand |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
247 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
248 | if g_confirmCommand == None: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
249 | cmd['reply'] ('%s to what?' % cmd['cmdname']) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
250 | return |
113
08e9b1c1b324
- added page system to prevent commands from printing too much output
Teemu Piippo <crimsondusk64@gmail.com>
parents:
102
diff
changeset
|
251 | |
117
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
252 | if not check_same_caller (cmd, g_confirmCommand): |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
253 | return |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
254 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
255 | if yes: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
256 | exec_command (g_confirmCommand) |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
257 | else: |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
258 | cmd['reply'] ('okay then') |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
259 | |
6c0609395889
- added a confirm system, probably useful in the future
Teemu Piippo <crimsondusk64@gmail.com>
parents:
115
diff
changeset
|
260 | g_confirmCommand = None |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
261 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
262 | # |
102
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
263 | # get_available_commands |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
264 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
265 | # Gets a list of commands available to the given user |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
266 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
267 | def get_available_commands (ident, host): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
268 | result=[] |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
269 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
270 | for cmdname,cmd in Commands.iteritems(): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
271 | if not is_available (cmd, ident, host): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
272 | continue |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
273 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
274 | result.append (cmdname) |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
275 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
276 | return result |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
277 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
278 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
279 | # get_command_by_name |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
280 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
281 | # Gets a command by name |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
282 | # |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
283 | def get_command_by_name (name): |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
284 | try: |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
285 | return Commands[name] |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
286 | except: |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
287 | return None |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
288 | |
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
289 | # |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
290 | # make_regex |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
291 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
292 | # Takes the argument list and returns a corresponding regular expression |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
293 | # |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
294 | def make_regex (arglist): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
295 | if arglist == None: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
296 | return '^.+$' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
297 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
298 | gotoptional = False |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
299 | gotvariadic = False |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
300 | regex = '' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
301 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
302 | for arg in arglist.split (' '): |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
303 | if gotvariadic: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
304 | raise CommandError ('variadic argument is not last') |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
305 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
306 | if arg == '': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
307 | continue |
73
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
308 | |
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
309 | gotliteral = False |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
310 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
311 | if arg[0] == '[' and arg[-1] == ']': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
312 | arg = arg[1:-1] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
313 | gotoptional = True |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
314 | elif arg[0] == '<' and arg[-1] == '>': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
315 | if gotoptional: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
316 | raise CommandError ('mandatory argument after optional one') |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
317 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
318 | arg = arg[1:-1] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
319 | else: |
73
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
320 | gotliteral = True |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
321 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
322 | if arg[-3:] == '...': |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
323 | gotvariadic = True |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
324 | arg = arg[0:-3] |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
325 | |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
326 | if gotoptional == False: |
121
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
327 | regex += r'\s+' |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
328 | else: |
121
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
329 | regex += r'\s*' |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
330 | |
73
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
331 | if gotliteral: |
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
332 | regex += arg |
d67cc4fbc3f1
- modularization complete!!
Teemu Piippo <crimsondusk64@gmail.com>
parents:
65
diff
changeset
|
333 | elif gotoptional: |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
334 | if gotvariadic: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
335 | regex += r'(.*)' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
336 | else: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
337 | regex += r'([^ ]*)' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
338 | else: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
339 | if gotvariadic: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
340 | regex += r'(.+)' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
341 | else: |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
342 | regex += r'([^ ]+)' |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
343 | #fi |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
344 | #done |
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
345 | |
121
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
346 | if not gotvariadic: |
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
347 | regex += r'\s*' |
ac07779f788d
- reworked mercurial repository handling, removed hardcoded values
Teemu Piippo <crimsondusk64@gmail.com>
parents:
118
diff
changeset
|
348 | |
62
052a8a1e3d7d
- revamped commands, added a much more modular system. not everything migrated yet
Teemu Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
349 | return '^[^ ]+%s$' % regex |
102
2bad379cd416
- added .help and .commands
Teemu Piippo <crimsondusk64@gmail.com>
parents:
73
diff
changeset
|
350 | #enddef |