try to build all plugins
This commit is contained in:
parent
c9bdb637ce
commit
618d7f6cb4
3
.gitignore
vendored
3
.gitignore
vendored
@ -50,3 +50,6 @@ Thumbs.db
|
|||||||
|
|
||||||
#hs
|
#hs
|
||||||
.stack*
|
.stack*
|
||||||
|
|
||||||
|
# fuck you, cabal, fuck you
|
||||||
|
dist-newstyle
|
@ -22,7 +22,9 @@ library
|
|||||||
base >= 4.7 && < 5,
|
base >= 4.7 && < 5,
|
||||||
stm,
|
stm,
|
||||||
containers,
|
containers,
|
||||||
text
|
text,
|
||||||
|
plugins >= 1.6.0,
|
||||||
|
directory
|
||||||
ghc-options:
|
ghc-options:
|
||||||
-O2
|
-O2
|
||||||
-threaded
|
-threaded
|
||||||
@ -34,7 +36,9 @@ executable GypsFulvus
|
|||||||
base >= 4.7 && < 5,
|
base >= 4.7 && < 5,
|
||||||
stm,
|
stm,
|
||||||
containers,
|
containers,
|
||||||
text
|
text,
|
||||||
|
plugins >= 1.6.0,
|
||||||
|
directory
|
||||||
ghc-options:
|
ghc-options:
|
||||||
-O2
|
-O2
|
||||||
-threaded
|
-threaded
|
||||||
|
1
plugins/STDIO/Plugin.hs
Normal file
1
plugins/STDIO/Plugin.hs
Normal file
@ -0,0 +1 @@
|
|||||||
|
main = putStrLn "HELLO WORLD"
|
@ -6,6 +6,7 @@ import qualified Data.Map as M
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Control.Concurrent(ThreadId, forkIO, killThread)
|
import Control.Concurrent(ThreadId, forkIO, killThread)
|
||||||
import GypsFulvus.PluginStuff
|
import GypsFulvus.PluginStuff
|
||||||
|
import Control.Monad(liftM)
|
||||||
data Placeholder = Placeholder
|
data Placeholder = Placeholder
|
||||||
data CommandMap = CommandMap (M.Map T.Text Placeholder)
|
data CommandMap = CommandMap (M.Map T.Text Placeholder)
|
||||||
data CommandWorkspace = CommandWorkspace Placeholder
|
data CommandWorkspace = CommandWorkspace Placeholder
|
||||||
@ -36,15 +37,16 @@ execMain :: IO ()
|
|||||||
execMain = do
|
execMain = do
|
||||||
collectorChannel <- atomically newTChan -- normal channel for dumping any user input
|
collectorChannel <- atomically newTChan -- normal channel for dumping any user input
|
||||||
consumerBroadcastChannel <- atomically newBroadcastTChan
|
consumerBroadcastChannel <- atomically newBroadcastTChan
|
||||||
loadCommsPlugins collectorChannel
|
|
||||||
availableCommandMap <- atomically $ newTMVar CommandMap
|
|
||||||
loadLabourPlugins availableCommandMap
|
|
||||||
sharedCommandWorkspace <- atomically $ newTMVar CommandWorkspace
|
|
||||||
sharedTaskQueue <- atomically $ newTChan
|
|
||||||
dispatchTID <- forkIO $ dispatchCommands sharedCommandWorkspace sharedTaskQueue
|
|
||||||
broadcastTID <- forkIO $ broadcastToConsumers consumerBroadcastChannel sharedCommandWorkspace sharedTaskQueue
|
|
||||||
collectorTID <- forkIO $ collectInputs collectorChannel availableCommandMap sharedCommandWorkspace sharedTaskQueue
|
|
||||||
|
|
||||||
canary <- atomically $ newTMVar False -- simple 'should I exit' canary
|
canary <- atomically $ newTMVar False -- simple 'should I exit' canary
|
||||||
|
forkIO $ loadCommsPlugins canary collectorChannel
|
||||||
|
-- availableCommandMap <- atomically $ newTMVar CommandMap
|
||||||
|
-- loadLabourPlugins availableCommandMap
|
||||||
|
-- sharedCommandWorkspace <- atomically $ newTMVar CommandWorkspace
|
||||||
|
-- sharedTaskQueue <- atomically $ newTChan
|
||||||
|
-- dispatchTID <- forkIO $ dispatchCommands sharedCommandWorkspace sharedTaskQueue
|
||||||
|
-- broadcastTID <- forkIO $ broadcastToConsumers consumerBroadcastChannel sharedCommandWorkspace sharedTaskQueue
|
||||||
|
-- collectorTID <- forkIO $ collectInputs collectorChannel availableCommandMap sharedCommandWorkspace sharedTaskQueue
|
||||||
|
-- myTIDs = [dispatchTID,broadcastTID,collectorTID]
|
||||||
|
let myTIDs = []
|
||||||
runForever canary
|
runForever canary
|
||||||
mapM_ killThread [dispatchTID, broadcastTID, collectorTID]
|
mapM_ killThread myTIDs
|
||||||
|
@ -1,7 +1,48 @@
|
|||||||
module GypsFulvus.PluginStuff(loadCommsPlugins, loadLabourPlugins) where
|
module GypsFulvus.PluginStuff(loadCommsPlugins) where
|
||||||
|
import Control.Monad
|
||||||
|
import System.Directory
|
||||||
|
import System.Plugins.Make
|
||||||
|
import Data.Maybe
|
||||||
|
import Control.Concurrent.STM
|
||||||
|
import Control.Concurrent.STM.TMVar
|
||||||
|
|
||||||
|
pluginPath :: IO FilePath
|
||||||
|
pluginPath = getXdgDirectory XdgData "gypsfulvus/plugins" >>= makeAbsolute
|
||||||
|
|
||||||
|
|
||||||
|
configPath :: IO FilePath
|
||||||
|
configPath = getXdgDirectory XdgConfig "gypsfulvus"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- load all the plugins for IO (e.g. IRC, stdio, maybe matrix procol, telnet, whatever)
|
-- load all the plugins for IO (e.g. IRC, stdio, maybe matrix procol, telnet, whatever)
|
||||||
loadCommsPlugins collectorChannel = undefined
|
|
||||||
|
|
||||||
|
|
||||||
|
loadCommsPlugins canary collectorChannel =
|
||||||
|
let potentialPlugins = pluginPath >>= \pp -> listDirectory pp >>= filterM (\fuku -> doesDirectoryExist (pp ++ "/" ++ fuku)) >>= mapM (\fuku -> return (pp ++ "/" ++ fuku))
|
||||||
|
in do
|
||||||
|
pluginPath >>= putStrLn
|
||||||
|
pluginPath >>= listDirectory >>= mapM putStrLn
|
||||||
|
pluginPath >>= \pp -> listDirectory pp >>= filterM (\fuku -> putStrLn (pp ++ "/" ++ fuku) >> doesDirectoryExist (pp ++ "/" ++ fuku))
|
||||||
|
pp <- potentialPlugins
|
||||||
|
mapM_ putStrLn pp
|
||||||
|
ff <- mapM (\d -> findFile [d] "Plugin.hs") pp
|
||||||
|
let rff = map (fromMaybe "") $ filter (/= Nothing) ff
|
||||||
|
s <- mapM (\hng -> makeAll hng ["-v","-dynamic"]) rff
|
||||||
|
mapM (\s' -> case s' of
|
||||||
|
MakeSuccess _ p -> putStrLn p
|
||||||
|
MakeFailure e -> do
|
||||||
|
putStrLn $ show e
|
||||||
|
|
||||||
|
return ()) s
|
||||||
|
_ <- atomically $ swapTMVar canary True
|
||||||
|
-- I don't actually want to quit here but I don't like errors from STM heuristics when the canary is GCed
|
||||||
|
|
||||||
|
return ()
|
||||||
|
|
||||||
|
|
||||||
-- load all the routines that the bot can run (e.g. run tcl code, calculator, youtube, etc.)
|
-- load all the routines that the bot can run (e.g. run tcl code, calculator, youtube, etc.)
|
||||||
loadLabourPlugins availableCommandMap = undefined
|
loadLabourPlugins availableCommandMap = undefined
|
||||||
-- thread to pass any work to be done
|
-- thread to pass any work to be done
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
#
|
#
|
||||||
# resolver: ./custom-snapshot.yaml
|
# resolver: ./custom-snapshot.yaml
|
||||||
# resolver: https://example.com/snapshots/2018-01-01.yaml
|
# resolver: https://example.com/snapshots/2018-01-01.yaml
|
||||||
resolver: lts-16.13
|
#resolver: lts-16.13
|
||||||
|
resolver: lts-14.27
|
||||||
# User packages to be built.
|
# User packages to be built.
|
||||||
# Various formats can be used as shown in the example below.
|
# Various formats can be used as shown in the example below.
|
||||||
#
|
#
|
||||||
@ -34,7 +34,8 @@ packages:
|
|||||||
# These entries can reference officially published versions as well as
|
# These entries can reference officially published versions as well as
|
||||||
# forks / in-progress versions pinned to a git hash. For example:
|
# forks / in-progress versions pinned to a git hash. For example:
|
||||||
#
|
#
|
||||||
# extra-deps:
|
extra-deps:
|
||||||
|
- plugins-1.6.0
|
||||||
# - acme-missiles-0.3
|
# - acme-missiles-0.3
|
||||||
# - git: https://github.com/commercialhaskell/stack.git
|
# - git: https://github.com/commercialhaskell/stack.git
|
||||||
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
|
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
|
||||||
|
@ -3,10 +3,17 @@
|
|||||||
# For more information, please see the documentation at:
|
# For more information, please see the documentation at:
|
||||||
# https://docs.haskellstack.org/en/stable/lock_files
|
# https://docs.haskellstack.org/en/stable/lock_files
|
||||||
|
|
||||||
packages: []
|
packages:
|
||||||
|
- completed:
|
||||||
|
hackage: plugins-1.6.0@sha256:5eb50363b5f7a5539d91db5ce245adc2fd5bec634c58ad8c9498fcfd1c183d69,2531
|
||||||
|
pantry-tree:
|
||||||
|
size: 1526
|
||||||
|
sha256: 2805b6d574a4603833a17ce18974f7fbbdafba3db281dd3400422e3a36cb5762
|
||||||
|
original:
|
||||||
|
hackage: plugins-1.6.0
|
||||||
snapshots:
|
snapshots:
|
||||||
- completed:
|
- completed:
|
||||||
size: 532381
|
size: 524996
|
||||||
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/13.yaml
|
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/14/27.yaml
|
||||||
sha256: 6ee17f7996e5bc75ae4406250841f1362ad4196418a4d90a0615ff4f26ac98df
|
sha256: 7ea31a280c56bf36ff591a7397cc384d0dff622e7f9e4225b47d8980f019a0f0
|
||||||
original: lts-16.13
|
original: lts-14.27
|
||||||
|
Loading…
x
Reference in New Issue
Block a user