blob: 0b3301ea22b518c3d6ed905d0e586eaef7d54c56 [file] [log] [blame] [edit]
# Copyright 2023 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.
"""A script for updating the Go API file for fuchsia.
"""
import argparse
import os
import subprocess
import sys
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
'--api-file',
help='The API file to update',
type=argparse.FileType('r+'),
required=True,
)
parser.add_argument(
'--go-root',
help='The GOROOT to use for checking the API ',
required=True,
)
args = parser.parse_args()
api = set(args.api_file.readlines())
result = subprocess.run(
[os.path.join(args.go_root, 'bin/go'), 'test', 'cmd/api', '-check'],
text=True,
stdout=subprocess.PIPE)
for line in result.stdout.splitlines(keepends=True):
if 'pkg syscall/zx' not in line:
continue
op = line[0]
if op == '+':
api.add(line[1:])
continue
if op == '-':
api.remove(line[1:])
continue
raise f"unexpected input: '${line}'"
args.api_file.truncate(0)
args.api_file.seek(0)
args.api_file.writelines(sorted(api))
if __name__ == '__main__':
sys.exit(main())