made parser flake8 compliant
This commit is contained in:
parent
4b6fdbdd0a
commit
6d123b93fc
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user