#!/usr/bin/env python3 import argparse import zipfile import os from subprocess import call PATH_SOFFICE = 'soffice' APP_TEST = 'calc' UNOPKG = ('unopkg', 'add', '-v', '-f', '-s') PATH_SOURCE = 'source' PATH_TARGET = 'oxt' _join = os.path.join _abspath = os.path.abspath _exists = os.path.exists def _make_oxt(name): path_oxt = _join(PATH_TARGET, f'{name}.oxt') path_source = _join(PATH_SOURCE, name) if not _exists(path_source): print(f'\tNot found: {path_source}') return print('\tStart compress OXT extension...') z = zipfile.ZipFile(path_oxt, 'w', compression=zipfile.ZIP_DEFLATED) root_len = len(_abspath(path_source)) for root, dirs, files in os.walk(path_source): relative = _abspath(root)[root_len:] for f in files: fullpath = _join(root, f) file_name = _join(relative, f) z.write(fullpath, file_name, zipfile.ZIP_DEFLATED) z.close() print('\tOXT extension created successfully...') return def _install(name): path_oxt = _join(PATH_TARGET, f'{name}.oxt') if not _exists(path_oxt): print(f'\tNot found: {path_oxt}') return print('\tStart install extension...') call(UNOPKG + (path_oxt,)) print('\tInstall correctly...') print(f'\tStart LibreOffice {APP_TEST}') call((PATH_SOFFICE, f'--{APP_TEST}')) print('\tExtension make successfully...') return def main(args): print(f'Extension: {args.name}') if args.make_oxt: _make_oxt(args.name) if args.install: _install(args.name) return def _process_command_line_arguments(): parser = argparse.ArgumentParser(description='Make LibreOffice extensions') parser.add_argument('-m', '--make-oxt', action='store_true', default=False, required=False) parser.add_argument('-i', '--install', action='store_true', default=False, required=False) parser.add_argument('name') args = parser.parse_args() return args if __name__ == '__main__': args = _process_command_line_arguments() main(args)