| #!/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()) |