92 lines
2.1 KiB
Python
92 lines
2.1 KiB
Python
|
#!/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)
|