43 lines
1.1 KiB
Haskell
43 lines
1.1 KiB
Haskell
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
|