|
12 | 12 | import yaml |
13 | 13 |
|
14 | 14 |
|
15 | | -def parse_apitypes(path): |
16 | | - """Parse apitypes.generated.yml to get resource types.""" |
17 | | - data = yaml.safe_load(path.read_text()) |
18 | | - return {resource: type_name for resource, type_name in data.items() if type_name} |
| 15 | +def parse_apitypes(generated_path, override_path): |
| 16 | + """Parse apitypes.generated.yml and override with apitypes.yml.""" |
| 17 | + result = yaml.safe_load(generated_path.read_text()) or {} |
| 18 | + |
| 19 | + # Override with non-generated apitypes.yml (null values remove entries) |
| 20 | + override_data = yaml.safe_load(override_path.read_text()) or {} |
| 21 | + for resource, type_name in override_data.items(): |
| 22 | + if type_name: |
| 23 | + result[resource] = type_name |
| 24 | + else: |
| 25 | + result.pop(resource, None) |
| 26 | + |
| 27 | + return result |
19 | 28 |
|
20 | 29 |
|
21 | 30 | def parse_out_fields(path): |
@@ -139,11 +148,11 @@ def main(): |
139 | 148 | parser = argparse.ArgumentParser(description="Generate resources YAML from OpenAPI schema") |
140 | 149 | parser.add_argument("apischema", type=Path, help="Path to OpenAPI schema JSON file") |
141 | 150 | parser.add_argument("apitypes", type=Path, help="Path to apitypes.generated.yml file") |
142 | | - # TODO: add non-generated apitypes.yml here once the need to override generated ones arises |
| 151 | + parser.add_argument("apitypes_override", type=Path, help="Path to apitypes.yml override file") |
143 | 152 | parser.add_argument("out_fields", type=Path, help="Path to out.fields.txt file") |
144 | 153 | args = parser.parse_args() |
145 | 154 |
|
146 | | - resource_types = parse_apitypes(args.apitypes) |
| 155 | + resource_types = parse_apitypes(args.apitypes, args.apitypes_override) |
147 | 156 | state_fields = parse_out_fields(args.out_fields) |
148 | 157 | schemas = json.loads(args.apischema.read_text()).get("components", {}).get("schemas", {}) |
149 | 158 |
|
|
0 commit comments