⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boostbook_report.py

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 PY
字号:
import ftplibimport optparseimport osimport timeimport urlparseimport utilsimport shutilimport sysimport zipfileimport xml.sax.saxutilsimport utils.libxsltdef get_date( words ):    date = words[ 5: -1 ]    t = time.localtime()    month_names = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]    year = time.localtime()[0] # If year is not secified is it the current year    month = month_names.index( date[0] ) + 1    day = int( date[1] )    hours = 0     minutes = 0    if  date[2].find( ":" ) != -1:        ( hours, minutes ) = [ int(x) for x in date[2].split( ":" ) ]    else:        # there is no way to get seconds for not current year dates        year = int( date[2] )    return ( year, month, day, hours, minutes, 0, 0, 0, 0 )#def check_for_new_upload( target_dir, boostbook_info ):def accept_args( args ):            parser = optparse.OptionParser()    parser.add_option( '-t', '--tag', dest='tag', help="the tag for the results (i.e. 'RC_1_34_0')" )    parser.add_option( '-d', '--destination', dest='destination', help='destination directory' )    if len(args) == 0:        parser.print_help()        sys.exit( 1 )    (options, args) = parser.parse_args()    if not options.destination:        print '-d is required'        parser.print_help()        sys.exit( 1 )    return optionsdef unzip( archive_path, result_dir ):    utils.log( 'Unpacking %s into %s' % ( archive_path, result_dir ) )    z = zipfile.ZipFile( archive_path, 'r', zipfile.ZIP_DEFLATED )     for f in z.infolist():        dir = os.path.join( result_dir, os.path.dirname( f.filename ) )        if not os.path.exists( dir ):            os.makedirs( dir )        result = open( os.path.join( result_dir, f.filename ), 'wb' )        result.write( z.read( f.filename ) )        result.close()    z.close()def boostbook_report( options ):    site = 'fx.meta-comm.com'    site_path = '/boost-regression/%s' % options.tag        utils.log( 'Opening %s ...' % site )    f = ftplib.FTP( site )    f.login()    utils.log( '   cd %s ...' % site_path )    f.cwd( site_path )        utils.log( '   dir' )    lines = []    f.dir( lambda x: lines.append( x ) )    word_lines = [ x.split( None, 8 ) for x in lines ]    boostbook_info = [ ( l[-1], get_date( l ) ) for l in word_lines if l[-1] == "BoostBook.zip" ]    if len( boostbook_info ) > 0:        boostbook_info = boostbook_info[0]        utils.log( 'BoostBook found! (%s)' % ( boostbook_info, ) )        local_copy = os.path.join( options.destination,'BoostBook-%s.zip' % options.tag )                if 1:             if os.path.exists( local_copy ):                utils.log( 'Local copy exists. Checking if it is older than uploaded one...' )                uploaded_mtime = time.mktime( boostbook_info[1] )                local_mtime    = os.path.getmtime( local_copy )                utils.log( '    uploaded: %s %s, local: %s %s' %                            ( uploaded_mtime                             , boostbook_info[1]                             , local_mtime                              , time.localtime( local_mtime )) )                 modtime = time.localtime( os.path.getmtime( local_copy ) )                if uploaded_mtime <= local_mtime:                    utils.log( 'Local copy is newer: exiting' )                    sys.exit()                        if 1:            temp = os.path.join( options.destination,'BoostBook.zip' )            result = open( temp, 'wb' )            f.retrbinary( 'RETR %s' % boostbook_info[0], result.write )            result.close()                        if os.path.exists( local_copy ):                os.unlink( local_copy )            os.rename( temp, local_copy )            m = time.mktime( boostbook_info[1] )            os.utime( local_copy, ( m, m ) )        docs_name = os.path.splitext( os.path.basename( local_copy ) )[0]        if 1:            unpacked_docs_dir = os.path.join( options.destination, docs_name )            utils.log( 'Dir %s ' % unpacked_docs_dir )            if os.path.exists( unpacked_docs_dir ):                utils.log( 'Cleaning up...' )                shutil.rmtree( unpacked_docs_dir )            os.makedirs( unpacked_docs_dir )                        unzip( local_copy, unpacked_docs_dir )        utils.system( [ 'cd %s' % unpacked_docs_dir                       , 'tar -c -f ../%s.tar.gz -z --exclude=tarball *' % docs_name ] )                process_boostbook_build_log( os.path.join( unpacked_docs_dir, 'boostbook.log' ), read_timestamp( unpacked_docs_dir ) )        utils.libxslt( log                         , os.path.abspath( os.path.join( unpacked_docs_dir, 'boostbook.log.xml' ) )                         , os.path.abspath( os.path.join( os.path.dirname( __file__ ), 'xsl', 'v2', 'boostbook_log.xsl' ) )                          , os.path.abspath( os.path.join( unpacked_docs_dir, 'boostbook.log.html' ) ) )        def log( msg ):    print msg    def process_boostbook_build_log( path, timestamp ):    f = open( path + '.xml', 'w' )    g = xml.sax.saxutils.XMLGenerator( f )    lines = open( path ).read().splitlines()    output_lines = []    result = 'success'    for line in lines:        type = 'output'        if line.startswith( '...failed' ):            type = 'failure'            result='failure'        if line.startswith( 'runtime error:' ):            type = 'failure'            if line.startswith( '...skipped' ):            type = 'skipped'        output_lines.append( ( type, line ) )            g.startDocument()    g.startElement( 'build', { 'result':  result, 'timestamp': timestamp } )    for line in output_lines:        g.startElement( 'line', { 'type': line[0]} )        g.characters( line[1] )        g.endElement( 'line' )    g.endElement( 'build' )    g.endDocument()            def read_timestamp( docs_directory ):    f = open( os.path.join( docs_directory, 'timestamp' ) )    try:        return f.readline()    finally:        f.close()    def main():    options = accept_args( sys.argv[1:])    boostbook_report( options )if __name__ == '__main__':    main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -