module Load where

import API
import System.Plugins

--
-- load doesn't seem to behave nicely when using dirname on hier names
--
-- make, and maybe other places, use dirname to work out various names
-- from paths, which is invalid when hier names are used..
--

testload = do

  s  <- make "../Plugin1.hs"     ["-i../api"]
  o1 <- case s of
    MakeSuccess _ o -> return o
    MakeFailure e   -> mapM_ putStrLn e >> fail "o1"
    
  s  <- make "../Sub/Plugin2.hs" ["-i../api","-hidir.."] -- !
  o2 <- case s of
    MakeSuccess _ o -> return o
    MakeFailure e   -> mapM_ putStrLn e >> fail "o2"

  fc <- pdynload o1 ["..","../api"] [] "API.PluginAPI" "action"

  case fc of
    LoadFailure msg -> mapM_ putStrLn msg 
    LoadSuccess modul proc -> do
      let ac :: API.PluginAPI; ac = proc
      let s = proc 42
      print s

  -- will reqeust  'Plugin2', but module is actually 'Sub.Plugin2'
  print o2
  fc <- pdynload (o2) ["..","../api"] [] "API.PluginAPI" "action"
  case fc of
    LoadFailure msg -> mapM_ putStrLn msg 
    LoadSuccess modul proc -> do
      let ac :: API.PluginAPI; ac = proc
      let s = proc 42
      print s