hackedteam/core-android-market

View on GitHub
src/libbson/boost/boost_1_53_0/tools/regression/xsl_reports/utils/libxslt.py

Summary

Maintainability
A
1 hr
Test Coverage

# Copyright (c) MetaCommunications, Inc. 2003-2007
#
# Distributed under the Boost Software License, Version 1.0. 
# (See accompanying file LICENSE_1_0.txt or copy at 
# http://www.boost.org/LICENSE_1_0.txt)

import utils.makedirs
import utils.rename
import os.path
import os
import sys


def xslt_param( path, replace_spaces = 1 ):
    path = path.replace( '\\', '/' )
    if sys.platform == 'win32' and replace_spaces:
        path = path.replace( ' ', '%20' )
    return path


def libxslt( log, xml_file, xsl_file, output_file, parameters = None ):

    utils.makedirs( os.path.dirname( output_file ) )
    
    if sys.platform == 'win32':
        os.chdir( os.path.dirname( xsl_file ) )

    transform_command = 'xsltproc'
    transform_command = transform_command + ' -o ' + '"%s"' % xslt_param( output_file )

    if parameters is not None:
         for i in parameters:
             if parameters[i]:
                 parameters[i] = xslt_param( parameters[i] )
                 transform_command = transform_command + ' --param %s "\'%s\'" ' % ( i, parameters[ i ] )

    transform_command = transform_command + ' "%s" ' % xslt_param( xsl_file )
    transform_command = transform_command + ' "%s" ' % xslt_param( xml_file )
    log( transform_command )
    rc = os.system( transform_command )
    if rc != 0:
        raise Exception( '"%s" failed with return code %d' % ( transform_command, rc ) )

    output_file = xslt_param( output_file, 0 )
    xlst_output_file = xslt_param( output_file )
    if output_file != xlst_output_file and os.path.exists( xlst_output_file ):
        utils.rename( log, xlst_output_file, output_file )