from lsst.sconsUtils.state import env, targets
from lsst.sconsUtils.utils import libraryLoaderEnvironment


generic_coadd = env.Command(
    "generic_coadd_plots.yaml",
    "generic_coadd_plots.in",
    " ".join(
        [
            libraryLoaderEnvironment(),
            "python",
            "-m",
            "lsst.analysis.drp.pipelineBuilder",
            "$SOURCE",
            "analysis_coadd_plots",
        ]
    ),
)

generic_visit = env.Command(
    "generic_visit_plots.yaml",
    "generic_visit_plots.in",
    " ".join(
        [
            libraryLoaderEnvironment(),
            "python",
            "-m",
            "lsst.analysis.drp.pipelineBuilder",
            "$SOURCE",
            "analysis_visit_plots",
        ]
    ),
)

analysis_pipeline = env.Command(
    "analysis_drp_plots.yaml",
    "analysis_drp_plots.in",
    " ".join(
        [
            libraryLoaderEnvironment(),
            "python",
            "-m",
            "lsst.analysis.drp.pipelineBuilder",
            "$SOURCE",
        ]
    ),
)
env.Depends(analysis_pipeline, ("generic_visit_plots.yaml", "generic_coadd_plots.yaml"))

# Imsim commands
imsim_coadd = env.Command(
    "LSSTCam-imSim/dc2_coadd_plots.yaml",
    "LSSTCam-imSim/dc2_coadd_plots.in",
    " ".join(
        [
            libraryLoaderEnvironment(),
            "python",
            "-m",
            "lsst.analysis.drp.pipelineBuilder",
            "$SOURCE",
            "imsim_analysis_coadd_plots",
        ]
    ),
)
env.Depends(imsim_coadd, "analysis_drp_plots.yaml")

imsim_pipeline = env.Command(
    "LSSTCam-imSim/analysis_drp_plots.yaml",
    "LSSTCam-imSim/analysis_drp_plots.in",
    " ".join(
        [
            libraryLoaderEnvironment(),
            "python",
            "-m",
            "lsst.analysis.drp.pipelineBuilder",
            "$SOURCE",
        ]
    ),
)
env.Depends(imsim_pipeline, "LSSTCam-imSim/dc2_coadd_plots.yaml")


targets.setdefault("pipelines", []).extend(
    [generic_coadd, generic_visit, analysis_pipeline, imsim_coadd, imsim_pipeline]
)

env.AlwaysBuild(targets["pipelines"])
env.Requires(targets['pipelines'], targets["version"])
env.Requires(targets['tests'], targets["pipelines"])
