...

Text file src/github.com/Azure/azure-sdk-for-go/eng/common/pipelines/templates/steps/mashup-doc-index.yml

Documentation: github.com/Azure/azure-sdk-for-go/eng/common/pipelines/templates/steps

     1parameters: 
     2  TargetFolder: ''
     3
     4steps:
     5  - task: PythonScript@0
     6    displayName: MashUp Generated Index Site so its served from default site location
     7    inputs:
     8      scriptSource: inline
     9      script: |
    10        import argparse
    11        import os
    12        import logging
    13        import re
    14        import shutil
    15        from io import open
    16
    17        SITE_INDEX = r'${{ parameters.SourceDirectory }}\docfx_project\_site'
    18        TOC_HTML_REGEX = r"\.\./toc.html"
    19        NAV_TOC_HTML_REGEX = r"api/"
    20        PREV_DIR_REGEX = r"\.\./"
    21
    22        def locate_htmlfiles(directory):
    23            html_set = []
    24            for root, dirs, files in os.walk(directory):
    25                for file in files:
    26                    html_set.append(os.path.join(root, file))
    27            return html_set
    28    
    29        def process_html(content):
    30            content = re.sub(TOC_HTML_REGEX, 'navtoc.html', content)
    31            content = re.sub(PREV_DIR_REGEX, '', content)
    32            return content
    33    
    34        def process_navtoc(content):
    35            content = re.sub(NAV_TOC_HTML_REGEX, '', content)
    36            return content
    37
    38        if __name__ == "__main__":
    39            html_files = locate_htmlfiles(os.path.join(SITE_INDEX, 'api'))
    40            navtoc_location = os.path.join(SITE_INDEX, 'toc.html')
    41
    42            # Process the main toc.html and rename it to navtoc.html
    43            try:
    44                logging.info(
    45                    "Process {}.".format(navtoc_location)
    46                )
    47                with open(navtoc_location, "r", encoding="utf8") as navtoc_stream:
    48                    navtoc_content = navtoc_stream.read()
    49                new_navtoc_content = process_navtoc(navtoc_content)
    50                logging.info("Process {}.".format(navtoc_content))
    51                with open(navtoc_location, "w", encoding="utf8") as html_stream:
    52                    html_stream.write(new_navtoc_content)
    53            except Exception as e:
    54                logging.error(e)
    55                exit(1)
    56
    57            # Rename main toc.html to navtoc.html
    58            os.rename(navtoc_location, os.path.join(SITE_INDEX, 'navtoc.html'))
    59
    60            # Process all html in api directory
    61            for html_location in html_files:
    62                try:
    63                    logging.info(
    64                        "Process {}.".format(html_location)
    65                    )
    66                    with open(html_location, "r", encoding="utf8") as html_stream:
    67                        html_content = html_stream.read()
    68                    new_content = process_html(html_content)
    69                    logging.info("Process {}.".format(html_location))
    70                    with open(html_location, "w", encoding="utf8") as html_stream:
    71                        html_stream.write(new_content)
    72                except Exception as e:
    73                    logging.error(e)
    74                    exit(1)
    75    
    76            # Move all files from api to main site home directory
    77            for html_location in html_files:
    78                shutil.copy(html_location, SITE_INDEX)
    79    
    80            # Delete API Directory
    81            shutil.rmtree(os.path.join(SITE_INDEX, 'api'))

View as plain text