xref: /aosp_15_r20/external/grpc-grpc/tools/distrib/check_path_length.py (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1#!/usr/bin/env python3
2
3# Copyright 2023 gRPC authors.
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#     http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17import os
18import subprocess
19
20# Maximum path length for a path in the repository before we start seeing
21# problems with Windows cloning the repository. (kind of arbitrary, less than
22# Windows actual limit, but enough that we avoid problems).
23maxlen = 150
24
25errors = 0
26for path in subprocess.check_output(["git", "ls-files"]).decode().splitlines():
27    if len(path) > maxlen:
28        print(f"Path too long: {path}")
29        errors += 1
30
31if errors:
32    print(f"Found {errors} files with paths longer than {maxlen} characters")
33    exit(1)
34