mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
64 lines
1.9 KiB
Python
Executable File
64 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# utils/PathSanitizingFileCheck -*- python -*-
|
|
#
|
|
# This source file is part of the Swift.org open source project
|
|
#
|
|
# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
# Licensed under Apache License v2.0 with Runtime Library Exception
|
|
#
|
|
# See https://swift.org/LICENSE.txt for license information
|
|
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
description="""
|
|
PathSanitizingFileCheck is a wrapper around LLVM's FileCheck. In addition
|
|
to all FileCheck features, PathSanitizingFileCheck can replace given
|
|
strings in the input with other strings. This feature is used to replace
|
|
paths to the source and build directories with path-independent
|
|
constants.""")
|
|
|
|
parser.add_argument(
|
|
"--sanitize",
|
|
help="replace the given string with another string",
|
|
metavar="REPLACEMENT=SOURCE",
|
|
action="append",
|
|
dest="sanitize_strings",
|
|
default=[])
|
|
|
|
parser.add_argument(
|
|
"--use-filecheck",
|
|
help="path to LLVM FileCheck executable",
|
|
metavar="PATH",
|
|
action="store",
|
|
dest="file_check_path",
|
|
default="FileCheck")
|
|
|
|
args, unknown_args = parser.parse_known_args()
|
|
|
|
stdin = sys.stdin.read()
|
|
for s in args.sanitize_strings:
|
|
replacement, pattern = s.split('=', 1)
|
|
stdin = stdin.replace(pattern, replacement)
|
|
|
|
p = subprocess.Popen(
|
|
[args.file_check_path] + unknown_args, stdin=subprocess.PIPE)
|
|
stdout, stderr = p.communicate(stdin)
|
|
if stdout is not None:
|
|
print(stdout)
|
|
if stderr is not None:
|
|
print(stderr, file=sys.stderr)
|
|
return p.wait()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
exit(main())
|