packages feed

ddc-war-0.2.1.1: DDC/War/Job.hs

{-# LANGUAGE ExistentialQuantification #-}
{-# OPTIONS -fno-warn-orphans #-}
module DDC.War.Job where
import DDC.War.Driver.Base
import qualified DDC.War.Job.CompileDCE as CompileDCE
import qualified DDC.War.Job.CompileDS  as CompileDS
import qualified DDC.War.Job.CompileHS  as CompileHS
import qualified DDC.War.Job.Diff       as Diff
import qualified DDC.War.Job.RunDCX     as RunDCX
import qualified DDC.War.Job.RunExe     as RunExe
import qualified DDC.War.Job.Shell      as Shell
import BuildBox.Pretty


instance Spec CompileDCE.Spec CompileDCE.Result where
 specActionName _               = "compile"
 buildFromSpec                  = CompileDCE.build
 productOfResult _ result       
        = ProductStatus (ppr result) (CompileDCE.resultSuccess result)


instance Spec CompileDS.Spec  CompileDS.Result where
 specActionName _               = "compile"
 buildFromSpec                  = CompileDS.build
 productOfResult _ result       
        = ProductStatus (ppr result) (CompileDS.resultSuccess result)


instance Spec CompileHS.Spec  CompileHS.Result where
 specActionName _               = "compile"
 buildFromSpec                  = CompileHS.build
 productOfResult _ result
        = ProductStatus (ppr result) (CompileHS.resultSuccess result)


instance Spec Diff.Spec       Diff.Result where
 specActionName _               = "diff"
 buildFromSpec                  = Diff.build
 productOfResult _ result
  = case result of
        Diff.ResultSame                 
         -> ProductStatus (ppr result) True

        Diff.ResultDiff ref out diff    
         -> ProductDiff ref out diff


instance Spec RunDCX.Spec     RunDCX.Result where
 specActionName _               = "run"
 buildFromSpec                  = RunDCX.build
 productOfResult _ result
        = ProductStatus (ppr result) (RunDCX.resultSuccess result)


instance Spec RunExe.Spec     RunExe.Result where
 specActionName _               = "run"
 buildFromSpec                  = RunExe.build
 productOfResult _ result
        = ProductStatus (ppr result) (RunExe.resultSuccess result)


instance Spec Shell.Spec      Shell.Result where
 specActionName _               = "shell"
 buildFromSpec                  = Shell.build
 productOfResult _ result
        = ProductStatus (ppr result) (Shell.resultSuccess result)