packages feed

chromatin 0.1.0.0 → 0.1.1.0

raw patch · 4 files changed

+106/−6 lines, 4 filesdep +stringsdep ~ribosomePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: strings

Dependency ranges changed: ribosome

API changes (from Hackage documentation)

+ Chromatin.Env: logError :: ComponentName -> String -> Chromatin ()
+ Chromatin.Rebuild.Init: initializeRplugins :: [ActiveRplugin] -> Chromatin ()
- Chromatin.Data.Env: _errors :: HasEnv c_anIJ => Lens' c_anIJ Errors
+ Chromatin.Data.Env: _errors :: HasEnv c_anJp => Lens' c_anJp Errors
- Chromatin.Data.Env: _installerChan :: HasEnv c_anIJ => Lens' c_anIJ (Maybe (TBMChan RebuildControl))
+ Chromatin.Data.Env: _installerChan :: HasEnv c_anJp => Lens' c_anJp (Maybe (TBMChan RebuildControl))
- Chromatin.Data.Env: _rplugins :: HasEnv c_anIJ => Lens' c_anIJ [Rplugin]
+ Chromatin.Data.Env: _rplugins :: HasEnv c_anJp => Lens' c_anJp [Rplugin]

Files

chromatin.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 560b0a26d65a7e63d7c566631d1a3e83822116adb9958225a42bbb595604065f+-- hash: a5e8b4dcc258cfd22703e2dec094e1a68592dffd9517b92197800e8551b6c940  name:           chromatin-version:        0.1.0.0+version:        0.1.1.0 synopsis:       neovim package manager description:    Please see the README on GitHub at <https://github.com/tek/chromatin-hs> category:       Neovim@@ -44,12 +44,14 @@       Chromatin.Data.RunBuiltResult       Chromatin.Data.RunExistingResult       Chromatin.Diag+      Chromatin.Env       Chromatin.Init       Chromatin.Log       Chromatin.Plugin       Chromatin.Rebuild       Chromatin.Rebuild.Build       Chromatin.Rebuild.Existing+      Chromatin.Rebuild.Init       Chromatin.Rebuild.Nonexisting       Chromatin.Run       Chromatin.Settings@@ -77,10 +79,11 @@     , parsec     , prettyprinter     , resourcet-    , ribosome+    , ribosome >=0.1.2     , split     , stm-chans     , stm-conduit+    , strings     , transformers     , typed-process     , unliftio@@ -111,10 +114,11 @@     , parsec     , prettyprinter     , resourcet-    , ribosome+    , ribosome >=0.1.2     , split     , stm-chans     , stm-conduit+    , strings     , transformers     , typed-process     , unliftio@@ -147,10 +151,11 @@     , parsec     , prettyprinter     , resourcet-    , ribosome+    , ribosome >=0.1.2     , split     , stm-chans     , stm-conduit+    , strings     , transformers     , typed-process     , unliftio@@ -189,10 +194,11 @@     , parsec     , prettyprinter     , resourcet-    , ribosome+    , ribosome >=0.1.2     , split     , stm-chans     , stm-conduit+    , strings     , transformers     , typed-process     , unliftio
+ lib/Chromatin/Env.hs view
@@ -0,0 +1,22 @@+module Chromatin.Env(+  logError,+) where++import qualified Control.Lens as Lens (over)+import qualified Data.Map.Strict as Map (adjust)+import Ribosome.Api.Exists (epochSeconds)+import qualified Ribosome.Control.Ribo as Ribo (modify)+import Ribosome.Data.Errors (Errors(Errors), Error(Error), ComponentName)+import Chromatin.Data.Chromatin (Chromatin)+import qualified Chromatin.Data.Env as Env (_errors)++storeError :: Int -> ComponentName -> [String] -> Errors -> Errors+storeError time name msg (Errors errors) =+  Errors (Map.adjust (err:) name errors)+  where+    err = Error time msg++logError :: ComponentName -> String -> Chromatin ()+logError name e = do+  time <- epochSeconds+  Ribo.modify $ Lens.over Env._errors (storeError time name [e])
lib/Chromatin/Rebuild.hs view
@@ -18,6 +18,7 @@ import Ribosome.Data.ScratchOptions (defaultScratchOptions) import Ribosome.Internal.IO (forkNeovim) import Ribosome.Scratch (showInScratch)+import Chromatin.Data.ActiveRplugin (ActiveRplugin) import Chromatin.Data.Chromatin (Chromatin) import Chromatin.Data.Env (Env) import qualified Chromatin.Data.Env as Env (installerChan, _installerChan)@@ -31,6 +32,7 @@ import Chromatin.Data.RpluginSource (RpluginSource) import Chromatin.Config (readConfig, analyzeConfigIO, RpluginModification(RpluginNew)) import Chromatin.Rebuild.Existing (handleExisting)+import Chromatin.Rebuild.Init (initializeRplugins) import Chromatin.Rebuild.Nonexisting (handleNonexisting) import qualified Chromatin.Log as Log @@ -56,6 +58,10 @@ extractFailure (RunBuiltResult.PreviousFailure stage (RebuildTask (RpluginName name) _) err) =   ("error in stage `" ++ stage ++ "` for plugin `" ++ name ++ "`:") : err +extractSuccess :: RunBuiltResult -> [ActiveRplugin]+extractSuccess (RunBuiltResult.Success arp) = [arp]+extractSuccess _ = []+ controlC :: ConduitT RebuildControl RebuildTask (Ribo (TVar Env)) () controlC = do   ctrl <- await@@ -83,6 +89,7 @@   case concatMap extractFailure result of     err@(_:_) -> void $ showInScratch err (defaultScratchOptions "chromatin-rebuild-error")     _ -> return ()+  initializeRplugins (concatMap extractSuccess result)   Log.debug $ "installer terminated: " ++ show result  forkRebuilder :: Chromatin (TBMChan RebuildControl)
+ lib/Chromatin/Rebuild/Init.hs view
@@ -0,0 +1,65 @@+module Chromatin.Rebuild.Init(+  initializeRplugins,+) where++import Control.Monad (when)+import Data.Default.Class (def)+import Data.Foldable (traverse_)+import Data.Functor (void)+import Data.Maybe (catMaybes)+import Data.Strings (strCapitalize)+import Neovim (NeovimException, vim_call_function)+import Ribosome.Api.Exists (waitForFunction)+import qualified Ribosome.Api.Exists as Exists (function)+import Chromatin.Data.ActiveRplugin (ActiveRplugin(ActiveRplugin))+import Chromatin.Data.Chromatin (Chromatin)+import Ribosome.Data.Errors (ComponentName(ComponentName))+import Chromatin.Data.Rplugin (Rplugin(Rplugin))+import Chromatin.Data.RpluginName (RpluginName(RpluginName))+import Chromatin.Env (logError)++activeRpluginName :: ActiveRplugin -> String+activeRpluginName (ActiveRplugin _ (Rplugin (RpluginName rpluginName) _)) = rpluginName++pluginRpcName :: String -> ActiveRplugin -> String+pluginRpcName rpcName rplugin =+  strCapitalize (activeRpluginName rplugin) ++ rpcName++waitForPlugin :: ActiveRplugin -> Chromatin (Maybe ActiveRplugin)+waitForPlugin rplugin = do+  result <- waitForFunction (pluginRpcName "Poll" rplugin) def+  return $ case result of+    Right _ -> Just rplugin+    Left _ -> Nothing++stageError :: ActiveRplugin -> Int -> NeovimException -> Chromatin ()+stageError rplugin stage err =+  logError (ComponentName "rebuild-init") $ "error in stage " ++ show stage ++ " of `" ++ name ++ "`" ++ show err+  where+    name = activeRpluginName rplugin++runStage :: ActiveRplugin -> Int -> String -> Chromatin ()+runStage rplugin stage func = do+  result <- void <$> vim_call_function func []+  either (stageError rplugin stage) return result++runStageInRpluginIfExists :: Int -> ActiveRplugin -> Chromatin ()+runStageInRpluginIfExists stage rplugin = do+  exists <- Exists.function func+  when exists $ runStage rplugin stage func+  where+    func = pluginRpcName ("Stage" ++ show stage) rplugin++runStageInRplugins :: [ActiveRplugin] -> Int -> Chromatin ()+runStageInRplugins rplugins stage =+  traverse_ (runStageInRpluginIfExists stage) rplugins++runStages :: [ActiveRplugin] -> Chromatin ()+runStages rplugins =+  traverse_ (runStageInRplugins rplugins) [1..5]++initializeRplugins :: [ActiveRplugin] -> Chromatin ()+initializeRplugins rplugins = do+  results <- traverse waitForPlugin rplugins+  let crmPlugins = catMaybes results+  runStages crmPlugins