# -*- coding: utf-8 -*-

# file docbook2epub.py
# This file is part of LyX, the document processor.
# Licence details can be found in the file COPYING.
#
# \author Thibaut Cuvelier
#
# Full author contact details are available in file CREDITS

# Usage:
#   python docbook2epub.py in.docbook out.epub

from __future__ import print_function

import os
import shutil
import sys
import tempfile
import zipfile
import glob

if __name__ == '__main__':
    if len(sys.argv) != 3:
        sys.exit(1)
    own_path, java_path, input, output = sys.argv
    script_folder = os.path.dirname(own_path) + '/../'

    print('Generating ePub:')
    print(own_path)
    print(input)
    print(output)

    output_dir = tempfile.mkdtemp().replace('\\', '/')
    # os.chmod(output_dir, 0o777)
    print('Temporary output directory:')
    print(output_dir)

    # Start the XSLT transformation.
    xslt = script_folder + 'docbook/epub3/chunk.xsl'
    saxon_jar = script_folder + 'scripts/saxon6.5.5.jar'
    saxon_params = 'base.dir=%s' % output_dir
    # command = '"' + java_path + '" -jar "' + saxon_jar + '" ' + input + ' ' + xslt + ' ' + saxon_params
    command = 'xsltproc ' + ' --stringparam base.dir ' + output_dir + ' ' + xslt + ' ' + input

    print('XSLT style sheet to use:')
    print(xslt)
    print('Command to execute:')
    print(command)

    if os.system('"' + command + '"') != 0:
        print('docbook2epub fails')
        shutil.rmtree(output_dir, ignore_errors=True)
        sys.exit(1)

    print('Generated ePub contents.')

    # TODO: Copy the assets to the OEBPS/images/.

    # Create the actual ePub file.
    with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as zip:
        for file in glob.glob(output_dir + '/**/*', recursive=True):
            zip.write(file, os.path.relpath(file, output_dir), compress_type=zipfile.ZIP_STORED)

    shutil.rmtree(output_dir)
    print('Generated ePub.')
