...

Text file src/github.com/Azure/azure-sdk-for-go/eng/common/pipelines/templates/steps/verify-path-length.yml

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

     1# Template for all Python Scripts in this repository
     2parameters: 
     3  SourceDirectory: ''
     4  BasePathLength: 49
     5
     6steps:
     7  - task: PythonScript@0
     8    displayName: Analyze Path Lengths
     9    inputs:
    10      scriptSource: inline
    11      script: |
    12        # Verifies Length of file path for all files in the SourceDirectory.
    13        # File paths and directory paths must be less than 260 and 248 characters respectively on windows OS
    14        # Repo users get a limited number of characters for the repo clone path. As Specified by the BasePathLength parameter.
    15        # Script makes sure that paths in the repo are less than 260 and 248 for files and directories respectively after adding the BasePathLength.
    16        import os
    17        import sys
    18
    19        source_directory = r'${{ parameters.SourceDirectory }}'
    20        break_switch = False
    21        long_file_paths = []
    22        long_dir_paths = []
    23
    24        def pluralize(string, plural_string, count):
    25            return plural_string if count > 1 else string
    26
    27        print('Analyzing length of paths...')
    28        for root, dirs, files in os.walk('{0}'.format(source_directory)):
    29            for file in files:
    30                file_path = os.path.relpath(os.path.join(root, file), source_directory)
    31                if ((len(file_path) + ${{ parameters.BasePathLength }}) > 260):
    32                    long_file_paths.append(file_path)
    33
    34                dir_path = os.path.relpath(root, source_directory)
    35                if ((len(dir_path) + ${{ parameters.BasePathLength }}) > 248):
    36                    long_dir_paths.append(dir_path)
    37
    38        if (len(long_file_paths) > 0):
    39            print('With a base path length of {0} the following file path{1} exceed the allow path length of 260 characters'.format(${{ parameters.BasePathLength }}, pluralize('', 's', len(long_file_paths))))
    40            print(*long_file_paths, sep = "\n")
    41            break_switch = True
    42
    43        if (len(long_dir_paths) > 0):
    44            print('With a base path length of {0} the following directory path{1} exceed the allow path length of 248 characters'.format(${{ parameters.BasePathLength }}, pluralize('', 's', len(long_dir_paths))))
    45            print(*long_dir_paths, sep = "\n")
    46            break_switch = True
    47
    48        if break_switch == True:
    49            print("Some file paths are too long. Please reduce path lengths")
    50            exit(1)

View as plain text