import os.path
import libtbx.load_env

Import("env")


def dispatcher_outer(name):
    return os.path.join(libtbx.env.under_build("bin"), name)


def dispatcher_inner(name):
    return os.path.join(
        libtbx.env.dist_path("dials"), "src", "dials", "command_line", "%s.py" % name.partition(".")[2]
    )


env.Append(
    BUILDERS={
        "AutoComplete": Builder(action="-$SOURCE --export-autocomplete-hints > $TARGET")
    }
)
env["ENV"]["DIALS_NOBANNER"] = "1"
for cmd in [
    "dials.find_spots",
    "dials.geometry_viewer",
    "dials.index",
    "dials.integrate",
    "dials.reciprocal_lattice_viewer",
    "dials.refine",
    "dials.reindex",
    "dials.rl_png",
    "dials.split_still_data",
]:
    ac = env.AutoComplete(cmd, [dispatcher_outer(cmd), dispatcher_inner(cmd)])
    Requires(ac, Dir(libtbx.env.under_build("lib")))
    Depends(ac, os.path.join(libtbx.env.dist_path("dials"), "src", "dials", "util", "options.py"))
    Depends(ac, os.path.join(libtbx.env.dist_path("dials"), "util", "autocomplete.sh"))
