made parser flake8 compliant

This commit is contained in:
Kevin Froman 2019-12-19 04:32:40 -06:00
parent 4b6fdbdd0a
commit 6d123b93fc
3 changed files with 92 additions and 58 deletions

View File

@ -1,9 +1,17 @@
'''
"""
Onionr - Private P2P Communication
This module loads in the Onionr arguments and their help messages
'''
'''
"""
import sys
import os
import logger
import onionrexceptions
import onionrplugins
from onionrplugins import onionrpluginapi
from . import arguments, recommend
"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
@ -16,19 +24,14 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
import sys
import os
"""
from etc import onionrvalues
import logger, onionrexceptions
import onionrplugins
from onionrplugins import onionrpluginapi
from . import arguments, recommend
plugin_command = lambda cmd: 'on_%s_cmd' % (cmd,)
def plugin_command(cmd):
return f'on_{cmd}_cmd'
def register_plugin_commands(cmd)->bool:
def register_plugin_commands(cmd) -> bool:
plugin_cmd = plugin_command(cmd)
for pl in onionrplugins.get_enabled_plugins():
pl = onionrplugins.get_plugin(pl)
@ -37,10 +40,17 @@ def register_plugin_commands(cmd)->bool:
return True
return False
def _show_term(msg: str):
logger.info(msg, terminal=True)
def register():
"""Registers commands and handles help command processing"""
def get_help_message(cmd: str, default: str = 'No help available for this command'):
def get_help_message(cmd: str,
default: str = 'No help available for this command'):
"""Return help message for a given command, supports plugin commands"""
pl_cmd = plugin_command(cmd)
for pl in onionrplugins.get_enabled_plugins():
pl = onionrplugins.get_plugin(pl)
@ -49,14 +59,14 @@ def register():
return getattr(pl, pl_cmd).onionr_help
except AttributeError:
pass
for i in arguments.get_arguments():
for alias in i:
try:
return arguments.get_help(cmd)
except AttributeError:
pass
return default # Return the help string
return default # Return the help string
PROGRAM_NAME = "onionr"
@ -71,8 +81,9 @@ def register():
if cmd.replace('--', '').lower() == 'help': is_help_cmd = True
try:
try:
if not cmd in ('start', 'details', 'show-details') : os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
try:
if cmd not in ('start', 'details', 'show-details'):
os.chdir(os.environ['ORIG_ONIONR_RUN_DIR'])
except KeyError: pass
try:
arguments.get_func(cmd)()
@ -81,29 +92,35 @@ def register():
if not register_plugin_commands(cmd) and not is_help_cmd:
recommend.recommend()
sys.exit(3)
if is_help_cmd:
try:
sys.argv[2]
except IndexError:
for i in arguments.get_arguments():
logger.info('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i), get_help_message(i[0])), terminal=True)
_show_term('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i),
get_help_message(i[0])))
for pl in onionrplugins.get_enabled_plugins():
pl = onionrplugins.get_plugin(pl)
if hasattr(pl, 'ONIONR_COMMANDS'):
print('')
try:
logger.info('%s commands:' % (pl.plugin_name,), terminal=True)
_show_term('%s commands:' % (pl.plugin_name,))
except AttributeError:
logger.info('%s commands:' % (pl.__name__,), terminal=True)
_show_term('%s commands:' % (pl.__name__,))
for plugin_cmd in pl.ONIONR_COMMANDS:
logger.info('%s %s: %s' % (PROGRAM_NAME, plugin_cmd, get_help_message(plugin_cmd)), terminal=True)
_show_term('%s %s: %s' %
(PROGRAM_NAME,
plugin_cmd,
get_help_message(plugin_cmd)),)
print('')
else:
try:
logger.info('%s %s: %s' % (PROGRAM_NAME, sys.argv[2], get_help_message(sys.argv[2])), terminal=True)
_show_term('%s %s: %s' % (PROGRAM_NAME,
sys.argv[2],
get_help_message(sys.argv[2])))
except KeyError:
logger.error('%s: command does not exist.' % [sys.argv[2]], terminal=True)
logger.error('%s: command does not exist.' % [sys.argv[2]],
terminal=True)
sys.exit(3)
return

View File

@ -1,9 +1,27 @@
'''
"""
Onionr - Private P2P Communication
Sets CLI arguments for Onionr
'''
'''
"""
from typing import Callable
from .. import onionrstatistics, version, daemonlaunch, keyadders
from .. import openwebinterface
from .. import banblocks # Command to blacklist a block by its hash
from .. import filecommands # commands to share files with onionr
from .. import exportblocks # commands to export blocks
from .. import pubkeymanager # commands to add or change id
from .. import resettor # cmds to reset the tor data folder/transport keypair
from .. import resetplugins # command to reinstall default plugins
from .. import softreset # command to delete onionr blocks
from .. import restartonionr # command to restart Onionr
from .. import runtimetestcmd
from .. import motdcreator
from .. import sitecreator
import onionrexceptions
from onionrutils import importnewblocks # func to import new blocks
"""
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
@ -16,30 +34,15 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
from typing import Callable
"""
from .. import onionrstatistics, version, daemonlaunch, keyadders, openwebinterface
from .. import banblocks # Command to blacklist a block by its hash
from .. import filecommands # commands to share files with onionr
from .. import exportblocks # commands to export blocks
from .. import pubkeymanager # commands to add or change id
from .. import resettor # commands to reset the tor data directory or transport keypair
from .. import resetplugins # command to reinstall default plugins
from .. import softreset # command to delete onionr blocks
from .. import restartonionr # command to restart Onionr
from .. import runtimetestcmd
from .. import motdcreator
from .. import sitecreator
import onionrexceptions
from onionrutils import importnewblocks # func to import new blocks
from onionrplugins import onionrevents as events
def get_arguments()->dict:
"""This is a function because we need to be able to dynamically modify them with plugins"""
def get_arguments() -> dict:
"""This is a function because we need to be able
to dynamically modify them with plugins"""
args = {
('blacklist', 'blacklist-block', 'remove-block', 'removeblock', 'banblock', 'ban-block'): banblocks.ban_block,
('blacklist', 'blacklist-block', 'remove-block',
'removeblock', 'banblock', 'ban-block'): banblocks.ban_block,
('details', 'info'): onionrstatistics.show_details,
('stats', 'statistics'): onionrstatistics.show_stats,
('version',): version.version,
@ -47,14 +50,17 @@ def get_arguments()->dict:
('stop', 'kill'): daemonlaunch.kill_daemon,
('restart',): restartonionr.restart,
('add-address', 'addaddress', 'addadder'): keyadders.add_address,
('openhome', 'gui', 'openweb', 'open-home', 'open-web'): openwebinterface.open_home,
('openhome', 'gui', 'openweb',
'open-home', 'open-web'): openwebinterface.open_home,
('get-url', 'url', 'get-web'): openwebinterface.get_url,
('addhtml', 'add-html'): filecommands.add_html,
('addsite', 'add-site', 'update-site', 'updatesite'): sitecreator.create_multipage_site,
('addsite', 'add-site',
'update-site', 'updatesite'): sitecreator.create_multipage_site,
('addfile', 'add-file'): filecommands.add_file,
('get-file', 'getfile'): filecommands.get_file,
('export-block', 'exportblock'): exportblocks.export_block,
('importblocks', 'import-blocks', 'import-block'): importnewblocks.import_new_blocks,
('importblocks',
'import-blocks', 'import-block'): importnewblocks.import_new_blocks,
('addid', 'add-id'): pubkeymanager.add_ID,
('changeid', 'change-id'): pubkeymanager.change_ID,
('add-vanity', 'addvanity'): pubkeymanager.add_vanity,
@ -68,21 +74,28 @@ def get_arguments()->dict:
}
return args
def get_help(arg: str) -> str:
"""Returns the help info string from a given command"""
arguments = get_arguments()
# Iterate the command alias tuples
for argument in arguments:
# Return the help message if its found in a command alias tuple
if arg in argument: return arguments[argument].onionr_help
if arg in argument:
return arguments[argument].onionr_help
raise KeyError
def get_func(argument: str) -> Callable:
"""Returns the function for a given command argument"""
argument = argument.lower()
args = get_arguments()
for arg in args.keys(): # Iterate command alias sets
if argument in arg: # If our argument is in the current alias set, return the command function
for arg in args.keys(): # Iterate command alias sets
"""
If our argument is in the current alias set,
return the command function
"""
if argument in arg:
return args[arg]
raise onionrexceptions.NotFound

View File

@ -3,6 +3,7 @@ from difflib import SequenceMatcher
import logger
from . import arguments
def recommend(print_default: bool = True):
tried = sys.argv[1]
args = arguments.get_arguments()
@ -10,6 +11,9 @@ def recommend(print_default: bool = True):
for key in args.keys():
for word in key:
if SequenceMatcher(None, tried, word).ratio() >= 0.75:
logger.warn('%s "%s", did you mean "%s"?' % (print_message, tried, word), terminal=True)
logger.warn(f'{print_message} "{tried}", '
+ 'did you mean "{word}"?',
terminal=True)
return
if print_default: logger.error('%s "%s"' % (print_message, tried), terminal=True)
if print_default: logger.error('%s "%s"' %
(print_message, tried), terminal=True)