|
|
@ -50,7 +50,7 @@ class cl_help:
|
|
|
|
self.progName словарь имена используемых программ и их номера для
|
|
|
|
self.progName словарь имена используемых программ и их номера для
|
|
|
|
доступа к переменным
|
|
|
|
доступа к переменным
|
|
|
|
Пример: {'cl-groupadd':0, 'cl-groupdel':1}
|
|
|
|
Пример: {'cl-groupadd':0, 'cl-groupdel':1}
|
|
|
|
self.data список данных для словаря, каждый эленмент словарь:
|
|
|
|
self.data список данных для справки, каждый элемент словарь:
|
|
|
|
progAccess: список номеров программ отображающих
|
|
|
|
progAccess: список номеров программ отображающих
|
|
|
|
Пример: {'progAccess':(0,),
|
|
|
|
Пример: {'progAccess':(0,),
|
|
|
|
'shortOption':"g",
|
|
|
|
'shortOption':"g",
|
|
|
@ -178,9 +178,10 @@ class cl_help:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
bef = "\n"*beforeStrChapter
|
|
|
|
bef = "\n"*beforeStrChapter
|
|
|
|
aft = "\n"*afterStrChapter
|
|
|
|
aft = "\n"*afterStrChapter
|
|
|
|
if visibleChapter:
|
|
|
|
# если блок не пустой и раздел отображаемый
|
|
|
|
|
|
|
|
if len(textChapterBloc) > 0 and visibleChapter:
|
|
|
|
help += nameChapter + ": " + bef
|
|
|
|
help += nameChapter + ": " + bef
|
|
|
|
help += textChapterBloc + aft
|
|
|
|
help += textChapterBloc + aft
|
|
|
|
return help.encode("UTF-8")
|
|
|
|
return help.encode("UTF-8")
|
|
|
|
|
|
|
|
|
|
|
|
def addChapterHelp(self, numChapter, helpTxt):
|
|
|
|
def addChapterHelp(self, numChapter, helpTxt):
|
|
|
@ -198,6 +199,15 @@ class cl_help:
|
|
|
|
self.data.append(dataHash)
|
|
|
|
self.data.append(dataHash)
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def handleCheckAccess(self,dataHash):
|
|
|
|
|
|
|
|
"""Замещаемый дополнительный обработчик проверки
|
|
|
|
|
|
|
|
доступности опции.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Входные параметры:
|
|
|
|
|
|
|
|
dataHash элементы списка данных справки (self.data)
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
def access(self,dataHash):
|
|
|
|
def access(self,dataHash):
|
|
|
|
"""Доступна ли опция вызывающей программе
|
|
|
|
"""Доступна ли опция вызывающей программе
|
|
|
|
|
|
|
|
|
|
|
@ -212,11 +222,13 @@ class cl_help:
|
|
|
|
numProg = self.progName[self.cmdName]
|
|
|
|
numProg = self.progName[self.cmdName]
|
|
|
|
if 'progAccess' in dataHash:
|
|
|
|
if 'progAccess' in dataHash:
|
|
|
|
if numProg in dataHash['progAccess']:
|
|
|
|
if numProg in dataHash['progAccess']:
|
|
|
|
return True
|
|
|
|
# вызов дополнительной проверки доступа к опции
|
|
|
|
|
|
|
|
return self.handleCheckAccess(dataHash)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
return True
|
|
|
|
# вызов дополнительной проверки доступа к опции
|
|
|
|
|
|
|
|
return self.handleCheckAccess(dataHash)
|
|
|
|
|
|
|
|
|
|
|
|
def getTypeChapter(self, nameChapter):
|
|
|
|
def getTypeChapter(self, nameChapter):
|
|
|
|
"""Получить тип раздела по его имени
|
|
|
|
"""Получить тип раздела по его имени
|
|
|
@ -247,18 +259,19 @@ class cl_help:
|
|
|
|
self.longOpt = []
|
|
|
|
self.longOpt = []
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
def getAllOpt(self,typeOpt="short", optionsChapters=False):
|
|
|
|
def getAllOpt(self,typeOpt="all", optionsChapters=False):
|
|
|
|
"""Получить все доступные опции
|
|
|
|
"""Получить все доступные опции
|
|
|
|
|
|
|
|
|
|
|
|
Параметры:
|
|
|
|
Параметры:
|
|
|
|
typeOpt 'short'/'long', вернуть короткие или длинные опции
|
|
|
|
typeOpt 'short'/'long'/'all', вернуть короткие или длинные
|
|
|
|
|
|
|
|
опции или все (возвращаются кортежем)
|
|
|
|
optionsChapters фильтр для опций по типам разделов (список,кортеж)
|
|
|
|
optionsChapters фильтр для опций по типам разделов (список,кортеж)
|
|
|
|
|
|
|
|
|
|
|
|
Возвращаемые параметры:
|
|
|
|
Возвращаемые параметры:
|
|
|
|
строка коротки или список строк длинных опций ('hb:c:wg:G:k:ms:u:')
|
|
|
|
строка коротки или список строк длинных опций ('hb:c:wg:G:k:ms:u:')
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
# Выдать все действующие опции
|
|
|
|
# Выдать все действующие опции
|
|
|
|
if typeOpt=="short":
|
|
|
|
if typeOpt=="short" or typeOpt=="all":
|
|
|
|
if len(self.shortOpt) == 0:
|
|
|
|
if len(self.shortOpt) == 0:
|
|
|
|
for par in self.data:
|
|
|
|
for par in self.data:
|
|
|
|
if optionsChapters and\
|
|
|
|
if optionsChapters and\
|
|
|
@ -270,8 +283,7 @@ class cl_help:
|
|
|
|
self.shortOpt.append(par["shortOption"]+':')
|
|
|
|
self.shortOpt.append(par["shortOption"]+':')
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.shortOpt.append(par["shortOption"])
|
|
|
|
self.shortOpt.append(par["shortOption"])
|
|
|
|
return "".join(self.shortOpt)
|
|
|
|
if typeOpt=="long" or typeOpt=="all":
|
|
|
|
if typeOpt=="long":
|
|
|
|
|
|
|
|
if len(self.longOpt) == 0:
|
|
|
|
if len(self.longOpt) == 0:
|
|
|
|
for par in self.data:
|
|
|
|
for par in self.data:
|
|
|
|
if optionsChapters and\
|
|
|
|
if optionsChapters and\
|
|
|
@ -284,7 +296,12 @@ class cl_help:
|
|
|
|
self.longOpt.append(par["longOption"]+'=')
|
|
|
|
self.longOpt.append(par["longOption"]+'=')
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self.longOpt.append(par["longOption"])
|
|
|
|
self.longOpt.append(par["longOption"])
|
|
|
|
|
|
|
|
if typeOpt=="short":
|
|
|
|
|
|
|
|
return "".join(self.shortOpt)
|
|
|
|
|
|
|
|
elif typeOpt=="long":
|
|
|
|
return self.longOpt
|
|
|
|
return self.longOpt
|
|
|
|
|
|
|
|
elif typeOpt=="all":
|
|
|
|
|
|
|
|
return ("".join(self.shortOpt),self.longOpt)
|
|
|
|
|
|
|
|
|
|
|
|
def getShortOpt(self,option):
|
|
|
|
def getShortOpt(self,option):
|
|
|
|
"""Из любой опции получить короткую опцию.
|
|
|
|
"""Из любой опции получить короткую опцию.
|
|
|
|