plugins: Switch exec and upload to async/await.
This commit is contained in:
parent
6be1a233e4
commit
3006569ef5
2 changed files with 6 additions and 8 deletions
|
@ -47,16 +47,15 @@ class Plugin(BasePlugin):
|
||||||
help='Execute a shell command and prints the result in the information buffer. The command should be ONE argument, that means it should be between \"\". The first argument (before the command) can be -o or -O. If -o is specified, it sends the result in the current conversation. If -O is specified, it sends the command and its result in the current conversation.\nExample: /exec -O \"uptime\" will send “uptime\n20:36:19 up 3:47, 4 users, load average: 0.09, 0.13, 0.09” in the current conversation.',
|
help='Execute a shell command and prints the result in the information buffer. The command should be ONE argument, that means it should be between \"\". The first argument (before the command) can be -o or -O. If -o is specified, it sends the result in the current conversation. If -O is specified, it sends the command and its result in the current conversation.\nExample: /exec -O \"uptime\" will send “uptime\n20:36:19 up 3:47, 4 users, load average: 0.09, 0.13, 0.09” in the current conversation.',
|
||||||
short='Execute a command')
|
short='Execute a command')
|
||||||
|
|
||||||
@asyncio.coroutine
|
async def async_exec(self, command, arg):
|
||||||
def async_exec(self, command, arg):
|
|
||||||
create = asyncio.create_subprocess_exec('sh', '-c', command,
|
create = asyncio.create_subprocess_exec('sh', '-c', command,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
try:
|
try:
|
||||||
process = yield from create
|
process = await create
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
self.api.information('Failed to execute command: %s' % (e,), 'Error')
|
self.api.information('Failed to execute command: %s' % (e,), 'Error')
|
||||||
return
|
return
|
||||||
stdout, stderr = yield from process.communicate()
|
stdout, stderr = await process.communicate()
|
||||||
result = stdout.decode('utf-8')
|
result = stdout.decode('utf-8')
|
||||||
stderr = stderr.decode('utf-8')
|
stderr = stderr.decode('utf-8')
|
||||||
if arg == '-o':
|
if arg == '-o':
|
||||||
|
@ -69,7 +68,7 @@ class Plugin(BasePlugin):
|
||||||
self.api.information('%s:\n%s' % (command, result), 'Info')
|
self.api.information('%s:\n%s' % (command, result), 'Info')
|
||||||
if stderr:
|
if stderr:
|
||||||
self.api.information('stderr for %s:\n%s' % (command, stderr), 'Info')
|
self.api.information('stderr for %s:\n%s' % (command, stderr), 'Info')
|
||||||
yield from process.wait()
|
await process.wait()
|
||||||
|
|
||||||
def command_exec(self, args):
|
def command_exec(self, args):
|
||||||
args = common.shell_split(args)
|
args = common.shell_split(args)
|
||||||
|
|
|
@ -38,10 +38,9 @@ class Plugin(BasePlugin):
|
||||||
short='Upload a file',
|
short='Upload a file',
|
||||||
completion=self.completion_filename)
|
completion=self.completion_filename)
|
||||||
|
|
||||||
@asyncio.coroutine
|
async def async_upload(self, filename):
|
||||||
def async_upload(self, filename):
|
|
||||||
try:
|
try:
|
||||||
url = yield from self.core.xmpp['xep_0363'].upload_file(filename)
|
url = await self.core.xmpp['xep_0363'].upload_file(filename)
|
||||||
except Exception:
|
except Exception:
|
||||||
exception = traceback.format_exc()
|
exception = traceback.format_exc()
|
||||||
self.api.information('Failed to upload file: %s' % exception, 'Error')
|
self.api.information('Failed to upload file: %s' % exception, 'Error')
|
||||||
|
|
Loading…
Reference in a new issue