#! /usr/bin/env python

import waves

env = Environment()
env.AddMethod(waves.scons_extensions.parameter_study_write, "ParameterStudyWrite")

schema = {"one": [1, 2]}
# Use the builder API to determine file names
generator = waves.parameter_generators.CartesianProduct(
    schema,
)
env.ParameterStudyWrite(
    generator,
    output_file="build/api/api.h5",
)
env.ParameterStudyWrite(
    generator,
    output_directory="build/api",
)
env.ParameterStudyWrite(
    generator,
    output_file="build/api/api.yaml",
    output_file_type="yaml",
)
env.ParameterStudyWrite(
    generator,
    output_directory="build/api",
    output_file_type="yaml",
)

# Use the builder API to determine file names and the SConscript call to determine directories
env.SConscript("SConscript", variant_dir="build/sconscript", exports={"env": env, "generator": generator})

# Use the class attributes to determine file names, H5
one_file = waves.parameter_generators.CartesianProduct(
    schema,
    output_file="build/attribute/one_file.h5",
)
two_file = waves.parameter_generators.CartesianProduct(
    schema,
    set_name_template="two_file@number.h5",
)

env.ParameterStudyWrite(
    one_file,
)
env.ParameterStudyWrite(
    two_file,
    output_directory="build/attribute",
)

# Use the class attributes to determine file names, YAML
one_file = waves.parameter_generators.CartesianProduct(
    schema,
    output_file="build/attribute/one_file.yaml",
)
two_file = waves.parameter_generators.CartesianProduct(
    schema,
    set_name_template="two_file@number.yaml",
)

yaml = env.ParameterStudyWrite(
    one_file,
    output_file_type="yaml",
)
yaml = env.ParameterStudyWrite(
    two_file,
    output_directory="build/attribute",
    output_file_type="yaml",
)
