File: verify-path-length.yml

package info (click to toggle)
golang-github-azure-azure-sdk-for-go 68.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 556,256 kB
  • sloc: javascript: 196; sh: 96; makefile: 7
file content (50 lines) | stat: -rw-r--r-- 2,362 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Template for all Python Scripts in this repository
parameters: 
  SourceDirectory: ''
  BasePathLength: 49

steps:
  - task: PythonScript@0
    displayName: Analyze Path Lengths
    inputs:
      scriptSource: inline
      script: |
        # Verifies Length of file path for all files in the SourceDirectory.
        # File paths and directory paths must be less than 260 and 248 characters respectively on windows OS
        # Repo users get a limited number of characters for the repo clone path. As Specified by the BasePathLength parameter.
        # Script makes sure that paths in the repo are less than 260 and 248 for files and directories respectively after adding the BasePathLength.
        import os
        import sys

        source_directory = r'${{ parameters.SourceDirectory }}'
        break_switch = False
        long_file_paths = []
        long_dir_paths = []

        def pluralize(string, plural_string, count):
            return plural_string if count > 1 else string

        print('Analyzing length of paths...')
        for root, dirs, files in os.walk('{0}'.format(source_directory)):
            for file in files:
                file_path = os.path.relpath(os.path.join(root, file), source_directory)
                if ((len(file_path) + ${{ parameters.BasePathLength }}) > 260):
                    long_file_paths.append(file_path)

                dir_path = os.path.relpath(root, source_directory)
                if ((len(dir_path) + ${{ parameters.BasePathLength }}) > 248):
                    long_dir_paths.append(dir_path)

        if (len(long_file_paths) > 0):
            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))))
            print(*long_file_paths, sep = "\n")
            break_switch = True

        if (len(long_dir_paths) > 0):
            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))))
            print(*long_dir_paths, sep = "\n")
            break_switch = True

        if break_switch == True:
            print("Some file paths are too long. Please reduce path lengths")
            exit(1)