MCPcopy Create free account
hub / github.com/antirez/freakwan / exec_user_command

Method exec_user_command

clictrl.py:92–130  ·  view source on GitHub ↗
(self,cmd,send_reply)

Source from the content-addressed store, hash-verified

90 # Otherwise what we get from Bluetooth UART, we just send as
91 # a message.
92 def exec_user_command(self,cmd,send_reply):
93 cmd = str(cmd).strip()
94 if len(cmd) == 0: return
95
96 self.fw.serial_log("CLI: %s" % cmd)
97 if cmd[0] == '!':
98 # Command call.
99 argv = self.split_arguments(cmd[1:])
100 argc = len(argv)
101 if argc == 0: return
102 method_name = 'cmd_'+argv[0]
103 if not hasattr(self.__class__,method_name):
104 send_reply("Unknown command: "+argv[0])
105 return
106
107 # Call the method logically bound to the command name.
108 method = getattr(self.__class__, method_name)
109 if method(self,argv,argc,send_reply) == False:
110 send_reply("Wrong number of arguments for: "+argv[0])
111 elif cmd[0] == '#':
112 # Encrypted message.
113 idx = cmd.find(' ')
114 key_name = cmd[1:idx]
115 text = cmd[idx+1:]
116 if not self.fw.keychain.has_key(key_name):
117 send_reply("No such key '"+str(key_name)+"'")
118 else:
119 msg = Message(nick=self.fw.config['nick'], text=text, key_name=key_name)
120 self.fw.send_asynchronously(msg,max_delay=0,num_tx=3,relay=True)
121 self.fw.scroller.print("#"+key_name+" you> "+msg.text)
122 self.fw.refresh_view()
123 else:
124 # Plain text message.
125 key_name = self.default_key
126 group = "" if not key_name else "#"+key_name+" "
127 msg = Message(nick=self.fw.config['nick'], text=cmd, key_name=key_name)
128 self.fw.send_asynchronously(msg,max_delay=0,num_tx=3,relay=True)
129 self.fw.scroller.print(group+"you> "+msg.text)
130 self.fw.refresh_view()
131
132 def handle_bool_setting(self,field,descr,argv,argc,send_reply):
133 if argc > 2: return False

Callers 4

ble_receive_callbackMethod · 0.80
irc_receive_callbackMethod · 0.80
receive_from_serialMethod · 0.80

Calls 7

split_argumentsMethod · 0.95
MessageClass · 0.85
serial_logMethod · 0.80
has_keyMethod · 0.80
send_asynchronouslyMethod · 0.80
refresh_viewMethod · 0.80
printMethod · 0.45

Tested by

no test coverage detected