def __init__(self, setup_parser=True): EnebooToolsInterface.__init__(self, False) self.patch_qs_rewrite = "warn" self.patch_xml_style_name = "legacy1" self.patch_qs_style_name = "legacy" self.diff_xml_search_move = False self.patch_name = None if setup_parser: self.setup_parser()
def __init__(self, setup_parser = True): EnebooToolsInterface.__init__(self, False) self.patch_qs_rewrite = "warn" self.patch_xml_style_name = "legacy1" self.patch_qs_style_name = "legacy" self.diff_xml_search_move = False self.patch_name = None if setup_parser: self.setup_parser()
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.checksum_action = self.parser.declare_action( name="checksum", args=[], options=[], min_argcount=0, description=u"Computa un fichero .checksum para un módulo", call_function=self.do_checksum, ) self.addcert_action = self.parser.declare_action( name="addcert", args=["pemfile"], options=[], min_argcount=1, description= u"Agrega un certificado en formato PEM a la lista de certificados", call_function=self.do_addcert, ) self.addcert_action.set_help_arg( pemfile="Certificado que agregar a la lista de certificados", ) self.addsignature_action = self.parser.declare_action( name="sign", args=["certpem", "pkeypem"], options=[], min_argcount=2, description= u"Agrega una firma a la lista de firmas usando un fichero PEM para leer certificado y otro para la clave privada", call_function=self.do_addsignature, ) self.addsignature_action.set_help_arg( certpem="Certificado para usar en la firma", pkeypem="Clave privada para usar en la firma", ) self.check_action = self.parser.declare_action( name="check", args=[], options=[], min_argcount=0, description= u"Realiza comprobaciones varias sobre las firmas existentes", call_function=self.do_check, )
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.create_action = self.parser.declare_action( name = "create", args = ["modulefolder"], options = [], description = u"Lee la carpeta $modulefolder, examina los módulos y los empaqueta", call_function = self.do_create, ) self.create_action.set_help_arg( modulefolder = "Carpeta que leer para empaquetar su contenido", ) self.create_action = self.parser.declare_action( name = "unpack", args = ["packagefile"], options = [], description = u"Lee el fichero $packagefile y desempaqueta los módulos en una carpeta", call_function = self.do_unpack, ) self.create_action.set_help_arg( packagefile = "Fichero que leer para extraer su contenido", ) self.split_action = self.parser.declare_action( name = "split", args = ["packagefile"], options = [], description = u"Lee el fichero $packagefile y genera una carpeta con su contenido", call_function = self.do_split, ) self.split_action.set_help_arg( packagefile = "Fichero que leer para extraer su contenido", ) self.join_action = self.parser.declare_action( name = "join", args = ["packagefolder"], options = [], description = u"Lee la carpeta $packagefolder y genera un fichero empaquetando su contenido", call_function = self.do_join, ) self.join_action.set_help_arg( packagefolder = "Carpeta que leer para empaquetar su contenido", )
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.checksum_action = self.parser.declare_action( name = "checksum", args = [], options = [], min_argcount = 0, description = u"Computa un fichero .checksum para un módulo", call_function = self.do_checksum, ) self.addcert_action = self.parser.declare_action( name = "addcert", args = ["pemfile"], options = [], min_argcount = 1, description = u"Agrega un certificado en formato PEM a la lista de certificados", call_function = self.do_addcert, ) self.addcert_action.set_help_arg( pemfile = "Certificado que agregar a la lista de certificados", ) self.addsignature_action = self.parser.declare_action( name = "sign", args = ["certpem", "pkeypem"], options = [], min_argcount = 2, description = u"Agrega una firma a la lista de firmas usando un fichero PEM para leer certificado y otro para la clave privada", call_function = self.do_addsignature, ) self.addsignature_action.set_help_arg( certpem = "Certificado para usar en la firma", pkeypem = "Clave privada para usar en la firma", ) self.check_action = self.parser.declare_action( name = "check", args = [], options = [], min_argcount = 0, description = u"Realiza comprobaciones varias sobre las firmas existentes", call_function = self.do_check, )
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.create_action = self.parser.declare_action( name="create", args=["modulefolder"], options=[], description= u"Lee la carpeta $modulefolder, examina los módulos y los empaqueta", call_function=self.do_create, ) self.create_action.set_help_arg( modulefolder="Carpeta que leer para empaquetar su contenido", ) self.create_action = self.parser.declare_action( name="unpack", args=["packagefile"], options=[], description= u"Lee el fichero $packagefile y desempaqueta los módulos en una carpeta", call_function=self.do_unpack, ) self.create_action.set_help_arg( packagefile="Fichero que leer para extraer su contenido", ) self.split_action = self.parser.declare_action( name="split", args=["packagefile"], options=[], description= u"Lee el fichero $packagefile y genera una carpeta con su contenido", call_function=self.do_split, ) self.split_action.set_help_arg( packagefile="Fichero que leer para extraer su contenido", ) self.join_action = self.parser.declare_action( name="join", args=["packagefolder"], options=[], description= u"Lee la carpeta $packagefolder y genera un fichero empaquetando su contenido", call_function=self.do_join, ) self.join_action.set_help_arg( packagefolder="Carpeta que leer para empaquetar su contenido", )
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.parser.declare_option( name = "patch-qs-rewrite", description = u"indica si al aplicar un parche de QS se debe sobreescribir o no las clases existentes ( reverse / predelete / yes / warn / no / abort ) ", level = "action", variable = "VALUE", call_function = self.set_patch_qs_rewrite ) self.parser.declare_option( name = "patch-name", description = u"Indica el nombre del parche que se usará en lugar de autodetectarlo.", level = "action", variable = "NAME", call_function = self.set_patch_name ) self.parser.declare_option( name = "patch-dest", description = u"Donde guardar un fichero de parche", level = "action", variable = "FILENAME", call_function = self.set_patch_dest ) self.parser.declare_option( name = "enable-diff-xml-search-move", description = u"Activa la búsqueda de movimientos de bloques XML. Puede ser un poco más lento y puede generar parches incompatibles con otras herramientas.", level = "action", call_function = self.enable_diff_xml_search_move ) self.parser.declare_option( name = "patch-xml-style", description = u"Usar otro estilo para generar parches XML (ver mergetools/etc/patch-styles/)", variable = "NAME", level = "action", call_function = self.set_patch_xml_style ) self.parser.declare_option( name = "patch-qs-style", description = u"Usar otro estilo para generar parches QS (legacy|qsdir)", variable = "NAME", level = "action", call_function = self.set_patch_qs_style ) self.parser.declare_option( name = "clean-patch", description = u"provoca que el parche generado sea de tipo limpieza", level = "action", # ( action | parser ) variable = None, call_function = self.set_clean_patch ) self.build_project_action = self.parser.declare_action( name = "build-project", args = ["buildxml"], options = [], description = u"Lee el fichero $buildxml y realiza las operaciones que se determinan", call_function = self.do_build_project, ) self.build_project_action.set_help_arg( buildxml = "Fichero del que leer las instrucciones", ) self.folder_diff_action = self.parser.declare_action( name = "folder-diff", args = ["patchdir","basedir","finaldir"], options = ["patch-name", "patch-qs-style", "patch-xml-style"], description = u"Genera en $patchdir una colección de parches de la diferencia entre las carpetas $basedir y $finaldir", call_function = self.do_folder_diff, ) self.folder_diff_action.set_help_arg( patchdir = "Carpeta donde guardar las diferencias", basedir = "Carpeta a leer como referencia", finaldir = "Carpeta a comparar", ) self.folder_patch_action = self.parser.declare_action( name = "folder-patch", args = ["patchdir","basedir","finaldir"], options = ["patch-name"], description = u"Aplica los parches en $patchdir a la carpeta $basedir y genera $finaldir", call_function = self.do_folder_patch, ) self.folder_patch_action.set_help_arg( patchdir = "Carpeta donde leer las diferencias", basedir = "Carpeta a leer como referencia", finaldir = "Carpeta a aplicar los cambios", ) self.file_diff_action = self.parser.declare_action( name = "file-diff", args = ["ext","base","final"], description = u"Genera un parche de fichero $ext de la diferencia entre el fichero $base y $final", options = ['output-file','clean-patch'], call_function = self.do_file_diff, min_file_list = 0, # por defecto es 0 max_file_list = 0, # por defecto es 0, -1 indica sin límite. min_argcount = -1 # cantidad de argumentos obligatorios. por defecto -1 ) self.file_diff_action.set_help_arg( ext = "Tipo de fichero a procesar: QS / XML", base = "Fichero original", final = "Fichero final", ) self.file_patch_action = self.parser.declare_action( name = "file-patch", args = ["ext","patch","base"], description = u"Aplica un parche de fichero $ext especificado por $patch al fichero $base", options = ['output-file','patch-qs-rewrite',"enable-diff-xml-search-move","patch-xml-style"], call_function = self.do_file_patch, ) self.file_patch_action.set_help_arg( ext = "Tipo de fichero a procesar: QS / XML", base = "Fichero original", patch = "Parche a aplicar sobre $base", ) self.file_check_action = self.parser.declare_action( name = "file-check", args = ["check","filename"], description = u"Analiza un fichero $filename en busca de errores usando el algoritmo de comprobación $check", options = ['patch-dest'], call_function = self.do_file_check, ) self.file_check_action.set_help_arg( check = "Tipo de análisis a realizar: qs-classes / ...", filename = "Fichero a analizar", ) self.qs_extract_action = self.parser.declare_action( name = "qs-extract", args = ["final","classlist"], description = u"Extrae del fichero $final las clases indicadas en $classlist", options = ['output-file'], call_function = self.do_qs_extract, ) self.qs_extract_action.set_help_arg( final = "Fichero QS que contiene las clases a extraer", classlist = "Lista de clases a extraer, separadas por coma y sin espacios: class1,class2,...", ) self.qs_split_action = self.parser.declare_action( name = "qs-split", args = ["final"], description = u"Separa el fichero $final en subficheros en una carpeta", options = [], call_function = self.do_qs_split, ) self.qs_split_action.set_help_arg( final = "Fichero QS", ) self.qs_join_action = self.parser.declare_action( name = "qs-join", args = ["folder"], description = u"Une la carpeta $folder en un fichero", options = [], call_function = self.do_qs_join, ) self.qs_join_action.set_help_arg( folder = "Carpeta con los subficheros QS", )
def __init__(self, setup_parser = True): EnebooToolsInterface.__init__(self, False) if setup_parser: self.setup_parser()
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.parser.declare_option( name="patch-qs-rewrite", description= u"indica si al aplicar un parche de QS se debe sobreescribir o no las clases existentes ( reverse / predelete / yes / warn / no / abort ) ", level="action", variable="VALUE", call_function=self.set_patch_qs_rewrite) self.parser.declare_option( name="patch-py-rewrite", description= u"indica si al aplicar un parche de PY se debe sobreescribir o no las clases existentes ( reverse / predelete / yes / warn / no / abort ) ", level="action", variable="VALUE", call_function=self.set_patch_py_rewrite) self.parser.declare_option( name="patch-test-rewrite", description= u"indica si al aplicar un parche de PY_test se debe sobreescribir o no las clases existentes ( reverse / predelete / yes / warn / no / abort ) ", level="action", variable="VALUE", call_function=self.set_patch_test_rewrite) self.parser.declare_option( name="patch-model-rewrite", description= u"indica si al aplicar un parche de PY_model se debe sobreescribir o no las clases existentes ( reverse / predelete / yes / warn / no / abort ) ", level="action", variable="VALUE", call_function=self.set_patch_model_rewrite) self.parser.declare_option( name="patch-name", description= u"Indica el nombre del parche que se usará en lugar de autodetectarlo.", level="action", variable="NAME", call_function=self.set_patch_name) self.parser.declare_option( name="patch-dest", description=u"Donde guardar un fichero de parche", level="action", variable="FILENAME", call_function=self.set_patch_dest) self.parser.declare_option( name="enable-diff-xml-search-move", description= u"Activa la búsqueda de movimientos de bloques XML. Puede ser un poco más lento y puede generar parches incompatibles con otras herramientas.", level="action", call_function=self.enable_diff_xml_search_move) self.parser.declare_option( name="patch-xml-style", description= u"Usar otro estilo para generar parches XML (ver mergetools/etc/patch-styles/)", variable="NAME", level="action", call_function=self.set_patch_xml_style) self.parser.declare_option( name="patch-qs-style", description= u"Usar otro estilo para generar parches QS (legacy|qsdir)", variable="NAME", level="action", call_function=self.set_patch_qs_style) self.parser.declare_option( name="patch-py-style", description= u"Usar otro estilo para generar parches PY (legacy|pydir)", variable="NAME", level="action", call_function=self.set_patch_py_style) self.parser.declare_option( name="patch-test-style", description= u"Usar otro estilo para generar parches PY_test (legacy|testdir)", variable="NAME", level="action", call_function=self.set_patch_test_style) self.parser.declare_option( name="patch-model-style", description= u"Usar otro estilo para generar parches PY_model (legacy|modeldir)", variable="NAME", level="action", call_function=self.set_patch_model_style) self.parser.declare_option( name="clean-patch", description=u"provoca que el parche generado sea de tipo limpieza", level="action", # ( action | parser ) variable=None, call_function=self.set_clean_patch) self.build_project_action = self.parser.declare_action( name="build-project", args=["buildxml"], options=[], description= u"Lee el fichero $buildxml y realiza las operaciones que se determinan", call_function=self.do_build_project, ) self.build_project_action.set_help_arg( buildxml="Fichero del que leer las instrucciones", ) self.folder_diff_action = self.parser.declare_action( name="folder-diff", args=["patchdir", "basedir", "finaldir"], options=["patch-name", "patch-qs-style", "patch-xml-style"], description= u"Genera en $patchdir una colección de parches de la diferencia entre las carpetas $basedir y $finaldir", call_function=self.do_folder_diff, ) self.folder_diff_action = self.parser.declare_action( name="folder-diff", args=["patchdir", "basedir", "finaldir"], options=[ "patch-name", "patch-py-style", "patch-test-style", "patch-xml-style" ], description= u"Genera en $patchdir una colección de parches de la diferencia entre las carpetas $basedir y $finaldir", call_function=self.do_folder_diff, ) self.folder_diff_action = self.parser.declare_action( name="folder-diff", args=["patchdir", "basedir", "finaldir"], options=[ "patch-name", "patch-py-style", "patch-model-style", "patch-xml-style" ], description= u"Genera en $patchdir una colección de parches de la diferencia entre las carpetas $basedir y $finaldir", call_function=self.do_folder_diff, ) self.folder_diff_action.set_help_arg( patchdir="Carpeta donde guardar las diferencias", basedir="Carpeta a leer como referencia", finaldir="Carpeta a comparar", ) self.folder_patch_action = self.parser.declare_action( name="folder-patch", args=["patchdir", "basedir", "finaldir"], options=["patch-name"], description= u"Aplica los parches en $patchdir a la carpeta $basedir y genera $finaldir", call_function=self.do_folder_patch, ) self.folder_patch_action.set_help_arg( patchdir="Carpeta donde leer las diferencias", basedir="Carpeta a leer como referencia", finaldir="Carpeta a aplicar los cambios", ) self.file_diff_action = self.parser.declare_action( name="file-diff", args=["ext", "base", "final"], description= u"Genera un parche de fichero $ext de la diferencia entre el fichero $base y $final", options=['output-file', 'clean-patch'], call_function=self.do_file_diff, min_file_list=0, # por defecto es 0 max_file_list=0, # por defecto es 0, -1 indica sin límite. min_argcount= -1 # cantidad de argumentos obligatorios. por defecto -1 ) self.file_diff_action.set_help_arg( ext="Tipo de fichero a procesar: QS / XML / PY / PY_test", base="Fichero original", final="Fichero final", ) self.file_patch_action = self.parser.declare_action( name="file-patch", args=["ext", "base", "patch"], description= u"Aplica un parche de fichero $ext especificado por $patch al fichero $base", options=[ 'output-file', 'patch-qs-rewrite', 'patch-py-rewrite', 'patch-test-rewrite', "enable-diff-xml-search-move", "patch-xml-style" ], call_function=self.do_file_patch, ) self.file_patch_action.set_help_arg( ext="Tipo de fichero a procesar: QS / XML / PY / PY_test", base="Fichero original", patch="Parche a aplicar sobre $base", ) self.file_diff_action.set_help_arg( ext="Tipo de fichero a procesar: QS / XML / PY / PY_model", base="Fichero original", final="Fichero final", ) self.file_patch_action = self.parser.declare_action( name="file-patch", args=["ext", "base", "patch"], description= u"Aplica un parche de fichero $ext especificado por $patch al fichero $base", options=[ 'output-file', 'patch-qs-rewrite', 'patch-py-rewrite', 'patch-model-rewrite', "enable-diff-xml-search-move", "patch-xml-style" ], call_function=self.do_file_patch, ) self.file_patch_action.set_help_arg( ext="Tipo de fichero a procesar: QS / XML / PY / PY_model", base="Fichero original", patch="Parche a aplicar sobre $base", ) self.file_check_action = self.parser.declare_action( name="file-check", args=["check", "filename"], description= u"Analiza un fichero $filename en busca de errores usando el algoritmo de comprobación $check", options=['patch-dest'], call_function=self.do_file_check, ) self.file_check_action.set_help_arg( check="Tipo de análisis a realizar: qs-classes / ...", filename="Fichero a analizar", ) self.qs_extract_action = self.parser.declare_action( name="qs-extract", args=["final", "classlist"], description= u"Extrae del fichero $final las clases indicadas en $classlist", options=['output-file'], call_function=self.do_qs_extract, ) self.py_extract_action = self.parser.declare_action( name="py-extract", args=["final", "classlist"], description= u"Extrae del fichero $final las clases indicadas en $classlist", options=['output-file'], call_function=self.do_py_extract, ) self.test_extract_action = self.parser.declare_action( name="test-extract", args=["final", "classlist"], description= u"Extrae del fichero $final las clases indicadas en $classlist", options=['output-file'], call_function=self.do_test_extract, ) self.model_extract_action = self.parser.declare_action( name="model-extract", args=["final", "classlist"], description= u"Extrae del fichero $final las clases indicadas en $classlist", options=['output-file'], call_function=self.do_model_extract, ) self.qs_extract_action.set_help_arg( final="Fichero QS que contiene las clases a extraer", classlist= "Lista de clases a extraer, separadas por coma y sin espacios: class1,class2,...", ) self.py_extract_action.set_help_arg( final="Fichero PY que contiene las clases a extraer", classlist= "Lista de clases a extraer, separadas por coma y sin espacios: class1,class2,...", ) self.test_extract_action.set_help_arg( final="Fichero PY_test que contiene las clases a extraer", classlist= "Lista de clases a extraer, separadas por coma y sin espacios: class1,class2,...", ) self.model_extract_action.set_help_arg( final="Fichero PY_model que contiene las clases a extraer", classlist= "Lista de clases a extraer, separadas por coma y sin espacios: class1,class2,...", ) self.qs_split_action = self.parser.declare_action( name="qs-split", args=["final"], description= u"Separa el fichero $final en subficheros en una carpeta", options=[], call_function=self.do_qs_split, ) self.qs_split_action.set_help_arg(final="Fichero QS", ) self.qs_join_action = self.parser.declare_action( name="qs-join", args=["folder"], description=u"Une la carpeta $folder en un fichero", options=[], call_function=self.do_qs_join, ) self.qs_join_action.set_help_arg( folder="Carpeta con los subficheros QS", ) self.py_split_action = self.parser.declare_action( name="py-split", args=["final"], description= u"Separa el fichero $final en subficheros en una carpeta", options=[], call_function=self.do_py_split, ) self.py_split_action.set_help_arg(final="Fichero PY", ) self.test_split_action = self.parser.declare_action( name="test-split", args=["final"], description= u"Separa el fichero $final en subficheros en una carpeta", options=[], call_function=self.do_test_split, ) self.test_split_action.set_help_arg(final="Fichero PY_test", ) self.model_split_action = self.parser.declare_action( name="model-split", args=["final"], description= u"Separa el fichero $final en subficheros en una carpeta", options=[], call_function=self.do_model_split, ) self.model_split_action.set_help_arg(final="Fichero PY_model", ) self.py_join_action = self.parser.declare_action( name="py-join", args=["folder"], description=u"Une la carpeta $folder en un fichero", options=[], call_function=self.do_py_join, ) self.py_join_action.set_help_arg( folder="Carpeta con los subficheros PY", ) self.test_join_action = self.parser.declare_action( name="test-join", args=["folder"], description=u"Une la carpeta $folder en un fichero", options=[], call_function=self.do_test_join, ) self.test_join_action.set_help_arg( folder="Carpeta con los subficheros PY_test", ) self.model_join_action = self.parser.declare_action( name="model-join", args=["folder"], description=u"Une la carpeta $folder en un fichero", options=[], call_function=self.do_model_join, ) self.model_join_action.set_help_arg( folder="Carpeta con los subficheros PY_model", )
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.new_action = self.parser.declare_action( name = "new", args = ["subfoldername","description","patchurl"], options = [], min_argcount = 0, description = u"Crea una nueva plantilla de funcionalidad", call_function = self.do_new, ) self.new_action.set_help_arg( subfoldername = "Nombre de la subcarpeta que será creada. Debe seguir la plantilla extA999-codename.", description = "Nombre descriptivo para la funcionalidad", patchurl = "Ruta para importar un parche", ) self.build_action = self.parser.declare_action( name = "build", args = ["feat","target"], options = [], description = u"Construye el objetivo $target de la funcionalidad $feat", call_function = self.do_build, ) self.build_action.set_help_arg( target = "Objetivo a construir", feat = "Funcionalidad a construir", ) self.save_fullpatch_action = self.parser.declare_action( name = "save-fullpatch", args = ["feat"], options = [], description = u"Para la funcionalidad $feat guarda los cambios como parche completo", call_function = self.do_save_fullpatch, ) self.build_action.set_help_arg( feat = "Funcionalidad a construir", ) self.test_deps_action = self.parser.declare_action( name = "test-deps", args = ["feat"], options = [], description = u"Para la funcionalidad $feat analiza qué dependencias faltan", call_function = self.do_test_deps, ) self.test_deps_action.set_help_arg( feat = "Funcionalidad a analizar", ) self.dbupdate_action = self.parser.declare_action( name = "dbupdate", args = [], options = [], description = u"Actualiza la base de datos de módulos y extensiones existentes", call_function = self.do_dbupdate, ) self.list_objects_action = self.parser.declare_action( name = "list-objects", args = [], options = [], description = u"Lista los objetos (módulos y funcionalidades) en la base de datos", call_function = self.do_list_objects, ) self.howto_build_action = self.parser.declare_action( name = "howto-build", args = ["feat","target"], options = [], description = u"Explica los pasos a seguir para construir el objetivo $target de la funcionalidad $feat", call_function = self.do_howto_build, ) self.howto_build_action.set_help_arg( target = "Objetivo a construir", feat = "Funcionalidad a construir", )
def __init__(self, setup_parser=True): EnebooToolsInterface.__init__(self, False) if setup_parser: self.setup_parser()
def setup_parser(self): EnebooToolsInterface.setup_parser(self) self.new_action = self.parser.declare_action( name="new", args=["subfoldername", "description", "patchurl"], options=[], min_argcount=0, description=u"Crea una nueva plantilla de funcionalidad", call_function=self.do_new, ) self.new_action.set_help_arg( subfoldername= "Nombre de la subcarpeta que será creada. Debe seguir la plantilla extA999-codename.", description="Nombre descriptivo para la funcionalidad", patchurl="Ruta para importar un parche", ) self.build_action = self.parser.declare_action( name="build", args=["feat", "target"], options=[], description= u"Construye el objetivo $target de la funcionalidad $feat", call_function=self.do_build, ) self.build_action.set_help_arg( target="Objetivo a construir", feat="Funcionalidad a construir", ) self.save_fullpatch_action = self.parser.declare_action( name="save-fullpatch", args=["feat"], options=[], description= u"Para la funcionalidad $feat guarda los cambios como parche completo", call_function=self.do_save_fullpatch, ) self.build_action.set_help_arg(feat="Funcionalidad a construir", ) self.test_deps_action = self.parser.declare_action( name="test-deps", args=["feat"], options=[], description= u"Para la funcionalidad $feat analiza qué dependencias faltan", call_function=self.do_test_deps, ) self.test_deps_action.set_help_arg(feat="Funcionalidad a analizar", ) self.dbupdate_action = self.parser.declare_action( name="dbupdate", args=[], options=[], description= u"Actualiza la base de datos de módulos y extensiones existentes", call_function=self.do_dbupdate, ) self.list_objects_action = self.parser.declare_action( name="list-objects", args=[], options=[], description= u"Lista los objetos (módulos y funcionalidades) en la base de datos", call_function=self.do_list_objects, ) self.howto_build_action = self.parser.declare_action( name="howto-build", args=["feat", "target"], options=[], description= u"Explica los pasos a seguir para construir el objetivo $target de la funcionalidad $feat", call_function=self.do_howto_build, ) self.howto_build_action.set_help_arg( target="Objetivo a construir", feat="Funcionalidad a construir", )