in scripts/generator.py [0:0]
def main() -> None:
args = argument_parser()
if not args.semconv_version:
raise KeyError("OTel Semantic Conventions version has not been provided as a config option '--semconv-version'")
ecs_generated_version: str = read_version(args.ref)
print('Running generator. ECS version ' + ecs_generated_version)
# default location to save files
out_dir = 'generated'
docs_dir = 'docs/reference'
if args.out:
default_dirs = False
out_dir = os.path.join(args.out, out_dir)
docs_dir = os.path.join(args.out, docs_dir)
else:
default_dirs = True
ecs_helpers.make_dirs(out_dir)
# To debug issues in the gradual building up of the nested structure, insert
# statements like this after any step of interest.
# ecs_helpers.yaml_dump('ecs.yml', fields)
# Detect usage of experimental changes to tweak artifact version label
if args.include and loader.EXPERIMENTAL_SCHEMA_DIR in args.include:
ecs_generated_version += "+exp"
print('Experimental ECS version ' + ecs_generated_version)
fields: dict[str, FieldEntry] = loader.load_schemas(ref=args.ref, included_files=args.include)
cleaner.clean(fields, strict=args.strict)
finalizer.finalize(fields)
fields, docs_only_fields = subset_filter.filter(fields, args.subset, out_dir)
fields = exclude_filter.exclude(fields, args.exclude)
otel_generator = otel.OTelGenerator(args.semconv_version)
otel_generator.validate_otel_mapping(fields)
nested, flat = intermediate_files.generate(fields, os.path.join(out_dir, 'ecs'), default_dirs)
if args.intermediate_only:
exit()
csv_generator.generate(flat, ecs_generated_version, out_dir)
es_template.generate(nested, ecs_generated_version, out_dir, args.mapping_settings, args.template_settings)
es_template.generate_legacy(flat, ecs_generated_version, out_dir,
args.mapping_settings, args.template_settings_legacy)
beats.generate(nested, ecs_generated_version, out_dir)
if (args.include or args.subset or args.exclude) and not args.force_docs:
exit()
ecs_helpers.make_dirs(docs_dir)
docs_only_nested = intermediate_files.generate_nested_fields(docs_only_fields)
markdown_fields.generate(nested, docs_only_nested, ecs_generated_version,
args.semconv_version, otel_generator, docs_dir)