Source code for kvalikirstu2.main
""" A module for using the application from the command line.
"""
import logging
import sys
from kvalikirstu2 import argument_parser
from kvalikirstu2 import kvali_interface
from kvalikirstu2.localization import _
logger = logging.getLogger("kvalikirstu2.main")
[docs]def main():
"""The main function for the command line application.
"""
try:
settings = argument_parser.Settings()
settings.set_up_cli_settings(sys.argv[1:])
args = argument_parser.get_args()
if args.save_settings:
argument_parser.save_config(args.save_settings)
if args.parse:
parse_study(args)
elif args.generate:
generate_index(args)
elif args.citreq:
generate_citreq(args)
elif args.convert:
convert(args)
elif args.add_text:
add_text(args)
elif args.rename_files:
rename_files(args)
elif args.rename_headers:
rename_headers(args)
elif args.setup_external_file_study:
setup_external_file_study(args)
elif args.print_dafs:
_print_data_files(args)
elif args.langcode:
_mark_language_codes(args)
elif args.replace:
_replace_text(args)
elif args.restore is not None:
_restore_backup(args)
else:
argument_parser.print_help()
except Exception as exc:
logger.exception("Exception: ", exc_info=True)
raise exc
[docs]def parse_study(args):
"""Parses the study files, and prints some information about the study.
:param args: The arguments for the application.
"""
logger.info('Parsing study...')
kvali_interface.set_study_path(args.path)
if args.headers:
header_map = {}
for header in args.headers:
header_map[header] = True
kvali_interface.set_selected_headers(header_map)
kvali_interface.generate_tempfiles()
logger.info('Parsing completed.')
[docs]def generate_index(args):
"""Loads a study, and generates the index.
:param args: The arguments for the application.
"""
logger.info('Generating index file...')
kvali_interface.set_study_path(args.path)
kvali_interface.generate_output()
logger.info('Index file completed.')
[docs]def generate_citreq(args):
"""Generates a citation requirement for the given folder.
:param args: The arguments for the application.
"""
logger.info('Generating citation requirements...')
kvali_interface.set_study_path(args.path)
kvali_interface.generate_citreq()
logger.info('Citation requirements generated.')
[docs]def add_text(args):
"""Adds string to the start of every data file.
:param args: The arguments for the application.
"""
logger.info('Adding text to data files...')
kvali_interface.set_study_path(args.path)
kvali_interface.add_text_to_dafs(args.add_text)
logger.info('Text added.')
[docs]def rename_files(args):
"""Renames files in study folder.
:param args: The arguments for the application.
"""
logger.info('Renaming study folder files...')
kvali_interface.set_study_path(args.path)
kvali_interface.rename_daf_files()
logger.info('Study folder files renamed.')
[docs]def convert(args):
"""Convert data files to default encoding.
:param args: The arguments for the application.
"""
logger.info("Converting data files...")
kvali_interface.set_study_path(args.path)
if args.convert == 'odt':
items = kvali_interface.convert_to_odt()
elif args.convert == 'txt':
items = kvali_interface.convert_to_txt()
# items = chain(items[0], items[1])
elif args.convert == 'encoding':
items = kvali_interface.convert_txt_encoding()
else:
raise ValueError(_('Argument "%s" not recognized as a conversion.') % args.convert)
for item in items:
logger.info('%s converted.', item)
[docs]def setup_external_file_study(args):
""" Sets up an external file study.
"""
kvali_interface.set_study_path(args.path)
kvali_interface.setup_external_file_study(list(args.headers))
def _print_data_files(args):
"""Prints files found in the data folder.
:param args: The arguments for the application.
"""
kvali_interface.set_study_path(args.path)
dafs = kvali_interface.get_daf_data()
for daf in dafs:
print('-----%s: %s-----' % (_('File'), daf.filepath))
print('-----%s: %s-----' % (_('Language code'), daf.langcode))
print('-----%s-----' % (_('Content')))
print(daf.content)
print('')
def _replace_text(args):
"""Replaces text in txt and odt files.
"""
replace = args.replace
if len(replace) != 2:
print("--replace takes exactly two arguments!")
kvali_interface.set_study_path(args.path)
kvali_interface.replace_text(replace[0], replace[1])
def _restore_backup(args):
"""Restores a backup from the given index.
"""
kvali_interface.set_study_path(args.path)
kvali_interface.restore_backup(args.restore)
def _mark_language_codes(args):
"""Marks files with language codes.
:param args: The arguments for the application.
"""
kvali_interface.set_study_path(args.path)
mapping = {}
for path in args.files:
mapping[path] = args.langcode
kvali_interface.add_language_codes(mapping)
if __name__ == "__main__":
main()