blob: cebf37c89f900f56665c2b82e4798083e7944d4c [file] [log] [blame]
#!/usr/bin/env python3.8
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import os
import sys
from pathlib import Path
FUCHSIA_DIR = Path(os.environ["FUCHSIA_DIR"])
def main(args):
"""Given a newline separate list of files as stdin (probably generated by
using a tool like `find` or similar), check to see if we can add a
`deprecated_syntax` token to them, and do so if one does not already exist.
For example, when the pwd is root, and we are building to out/default in
this repo, we would pipe the result of
find ./out/default/. -name "*.fidl" -type f | xargs readlink -f
into this script.
"""
root_path = Path(args.root)
for filepath in sys.stdin:
path = Path(filepath.strip())
if not path.is_file():
continue
relpath = str(path.relative_to(root_path))
if relpath.startswith('out/default') or relpath.startswith('prebuilt/'):
continue
if relpath.endswith('goodformat.test.fidl'):
continue
with open(path, 'r') as f:
lines = f.readlines()
# already converted from a previous run; skip
if any(l.startswith('deprecated_syntax;') for l in lines):
continue
lib_line = None
for i, line in enumerate(lines):
is_comment = line.startswith(
'//') and not line.startswith('///')
if not is_comment:
lib_line = i
break
if lib_line is None:
print(path)
lines.insert(lib_line, 'deprecated_syntax;\n')
with open(path, 'w') as f:
f.writelines(lines)
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description='Add `deprecated_syntax` token '
'to all FIDL files in GN-ified a '
'repo.')
parser.add_argument(
'root', help='The root path of the repo being converted')
main(parser.parse_args())