blob: 348d703f9fd81fcd7f578e7e1fd17506e562fbd6 [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2021 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.
"""Create a driver documentation from driver metadata."""
import json
import argparse
import os
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--name", required=True, help="A name for the driver.")
parser.add_argument(
"--driver_path", required=True, help="The path to the driver."
)
parser.add_argument(
"--doc_input", help="The input JSON documentation file."
)
parser.add_argument(
"--doc_output",
required=True,
type=argparse.FileType("w"),
help="The output JSON documentation file.",
)
args = parser.parse_args()
documentation = {
"name": args.name,
"short_description": "",
"manufacturer": "",
"families": [],
"models": [],
"areas": [],
"path": args.driver_path,
"supported_system_configurations": [],
}
if args.doc_input:
with open(args.doc_input) as doc_input_file:
doc_contents = json.load(doc_input_file)
if len(doc_contents["short_description"]) < 1:
raise Exception(
'Driver info file: {}, must include a "short_description"'.format(
args.doc_input
)
)
if len(doc_contents["short_description"]) > 80:
raise Exception(
'Driver info file: {} "short_description" must be less than 80 characters'.format(
args.doc_input
)
)
documentation["short_description"] = doc_contents[
"short_description"
]
documentation["manufacturer"] = doc_contents["manufacturer"]
documentation["families"] = doc_contents["families"]
documentation["models"] = doc_contents["models"]
if "supported_system_configurations" in doc_contents.keys():
documentation["supported_system_configurations"] = doc_contents[
"supported_system_configurations"
]
if len(doc_contents["areas"]) < 1:
raise Exception(
'Driver info file: {}, must include at least one item in "areas"'.format(
args.doc_input
)
)
documentation["areas"] = doc_contents["areas"]
json.dump(documentation, args.doc_output)
if __name__ == "__main__":
main()