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 rename_headers(args): """Rename headers in data files. :param args: The arguments for the application. """ logger.info('Converting data files...') kvali_interface.set_study_path(args.path) kvali_interface.rename_headers_in_data_files() logger.info('Headers renamed.')
[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()