# Tests in: ../../../../src/json-schema-checks

fs = import('fs')

# Find json-schema-for-humans if available
json_schema_for_humans = find_program('generate-schema-doc', required : false)

# Configuration for json-schema-for-humans
json_schema_config = files('json-schema-for-humans-config.yaml')

schemas = [
  'file-system-object-v1',
  'hash-v1',
  'content-address-v1',
  'store-path-v1',
  'signature-v2',
  'store-object-info-v3',
  'derivation-v4',
  'derivation-resolved-v4',
  'derivation-options-v1',
  'deriving-path-v1',
  'build-trace-entry-v3',
  'build-result-v1',
  'store-v1',
]

schema_files = files()
foreach schema_name : schemas
  schema_files += files('schema' / schema_name + '.yaml')
endforeach


schema_outputs = []
foreach schema_name : schemas
  schema_outputs += schema_name + '.md'
endforeach

json_schema_generated_files = []

if json_schema_for_humans.found()
  # Generate markdown documentation from JSON schema
  # Note: output must be just a filename, not a path
  gen_file = custom_target(
    schema_name + '-schema-docs.tmp',
    command : [
      json_schema_for_humans,
      '--config-file',
      json_schema_config,
      meson.current_source_dir() / 'schema',
      meson.current_build_dir(),
    ],
    input : schema_files + [
      json_schema_config,
    ],
    output : schema_outputs,
    capture : false,
    build_by_default : true,
  )

  idx = 0
  foreach schema_name : schemas
    #schema_file = 'schema' / schema_name + '.yaml'

    # There is one so-so hack, and one horrible hack being done here.
    sedded_file = custom_target(
      schema_name + '-schema-docs',
      command : [
        'sed',
        '-f',
        # Out of line to avoid https://github.com/mesonbuild/meson/issues/1564
        files('fixup-json-schema-generated-doc.sed'),
        '@INPUT@',
      ],
      capture : true,
      input : gen_file[idx],
      output : schema_name + '-fixed.md',
    )
    idx += 1
    json_schema_generated_files += [ sedded_file ]
  endforeach
else
  warning(
    'json-schema-for-humans not found, skipping JSON schema documentation generation',
  )
endif
