libreoffice-extensions-by-e.../zaz.py

92 lines
2.1 KiB
Python
Executable File

#!/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)