@ -22,6 +22,8 @@ from os import path
from fcntl import ioctl
from array import array
import threading
import argparse
import re
from calculate . lib . utils . colortext import get_terminal_print
from calculate . lib . utils . colortext . palette import TextState
@ -198,28 +200,39 @@ def local_method(metaclass, args, unknown_args):
method_name = args . method
method_view_name = method_name + ' _view '
if args . method and args . help :
view_obj = ViewParams ( )
view_obj . step = None
view_obj . expert = True
view_obj . brief = None
view_obj . onlyhelp = True
view_obj . help_set = True
view_obj . dispatch_usenew = args . no_questions
try :
view = getattr ( metaObject , method_view_name ) ( 0 , view_obj )
except AttributeError :
colorPrint . printERROR ( _ ( ' Method not found: ' ) + method_view_name )
return 1
try :
method_parser = get_method_argparser ( view , args , cl_core = True )
except Exception :
# import traceback
# for i in apply(traceback.format_exception, sys.exc_info()):
# sys.stderr.write(i)
# sys.stderr.flush()
metaObject . clear_cache ( 0 , method_name )
return 1
method_parser . print_help ( )
force_param = args . no_questions or has_force_arg ( unknown_args )
while True :
view_obj = ViewParams ( )
view_obj . step = None
view_obj . expert = True
view_obj . brief = None
view_obj . onlyhelp = True
view_obj . help_set = True
view_obj . dispatch_usenew = \
force_param
try :
view = getattr ( metaObject , method_view_name ) ( 0 , view_obj )
except AttributeError :
colorPrint . printERROR ( _ ( ' Method not found: ' ) + method_view_name )
return 1
try :
method_parser = get_method_argparser ( view , args , cl_core = True )
except Exception :
# import traceback
# for i in apply(traceback.format_exception, sys.exc_info()):
# sys.stderr.write(i)
# sys.stderr.flush()
metaObject . clear_cache ( 0 , method_name )
return 1
_unknown_args = method_parser . fixBoolVariables ( unknown_args )
_args , _unknown_args = method_parser . parse_known_args ( _unknown_args )
if ( view_obj . dispatch_usenew == _args . no_questions
or args . no_questions ) :
method_parser . print_help ( )
break
else :
force_param = _args . no_questions
metaObject . clear_cache ( 0 , method_name )
else :
try :
call_method ( metaObject , args , unknown_args , colorPrint )
@ -250,26 +263,41 @@ def call_method(metaObject, args, unknown_args, colorPrint):
metaObject . gui_progress = args . gui_progress
metaObject . gui_warning = args . gui_warning
metaObject . no_questions = False
dispatch_usenew = args . no_questions
view_obj = ViewInfo ( )
view_obj . step = None
view_obj . expert = True
view_obj . brief = None
view_obj . onlyhelp = True
view_obj . help_set = False
view_obj . dispatch_usenew = dispatch_usenew
view = None
method_parser = None
dispatch_usenew = args . no_questions or has_force_arg ( unknown_args )
while True :
view_obj = ViewInfo ( )
view_obj . step = None
view_obj . expert = True
view_obj . brief = None
view_obj . onlyhelp = True
view_obj . help_set = False
view_obj . dispatch_usenew = dispatch_usenew
try :
view = getattr ( metaObject , method_view_name ) ( 0 , view_obj )
except AttributeError :
colorPrint . printERROR ( _ ( ' Method not found: ' ) + method_name )
return None
method_parser = get_method_argparser ( view , args , cl_core = True )
_unknown_args = method_parser . fixBoolVariables ( unknown_args )
_args , _unknown_args = method_parser . parse_known_args ( _unknown_args )
if ( view_obj . dispatch_usenew == _args . no_questions or
args . no_questions ) :
break
else :
dispatch_usenew = _args . no_questions
metaObject . clear_cache ( 0 , method_name )
no_questions = dispatch_usenew
try :
view = getattr ( metaObject , method_view_name ) ( 0 , view_obj )
except AttributeError :
colorPrint . printERROR ( _ ( ' Method not found: ' ) + method_name )
return None
method_parser = get_method_argparser ( view , args , cl_core = True )
param_object = create_param_object ( view )
try :
unknown_args = method_parser . fixBoolVariables ( unknown_args )
args , unknown_args = method_parser . parse_known_args ( unknown_args )
no_questions = args . no_questions
metaObject . no_questions = no_questions
except SystemExit :
return 1
@ -612,3 +640,27 @@ class Methods(LocalCall.Common, object):
def __init__ ( self ) :
LocalCall . Common . __init__ ( self , False , False , False , False )
def has_force_arg ( args ) :
"""
Содержат ли аргумент force . Предварительное определение , так как на 100 %
невозможно определить является ли - sf двумя опциями - s , - f или это одна
опция - s с о значением " f "
: param args :
: return :
"""
force_parser = argparse . ArgumentParser ( add_help = False )
force_parser . add_argument (
' -f ' , ' --force ' , default = False , dest = ' force ' , action = " store_true " )
_args , _drop = force_parser . parse_known_args ( args )
if _args . force :
return True
re_force = re . compile ( " ^--force|-[a-zA-Z0-9]*f[a-zA-Z0-9]*$ " )
for arg in args :
if re_force . search ( arg ) :
return True
else :
return False