diff --git a/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs b/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs index 6ee54b8e..e68463f9 100644 --- a/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs +++ b/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs @@ -31,6 +31,7 @@ import Data.Config.Suckless.Script hiding (internalEntries) import Control.Monad.Trans.Maybe import Control.Monad.Trans.Cont import Data.ByteString.Char8 qualified as BS8 +import Data.ByteString.Lazy qualified as LBS import Data.Text qualified as Text import Lens.Micro.Platform @@ -170,6 +171,19 @@ internalEntries = do -- TODO: re-implement-all-on-top-of-opaque + entry $ bindMatch "hbs2:hash" $ \syn -> do + i <- case syn of + [ListVal (StringLikeList xs)] -> pure xs + StringLikeList xs -> pure xs + e -> throwIO (BadFormException @c (mkList e)) + + r <- forM i $ \f -> do + liftIO (LBS.readFile f) + <&> hashObject @HbSync + <&> mkSym @c . show . pretty + + pure $ mkList r + -- TODO: move-somewhere entry $ bindMatch "rm" $ nil_ \case [ StringLike p ] -> rm p diff --git a/hbs2-core/lib/HBS2/Actors/Peer.hs b/hbs2-core/lib/HBS2/Actors/Peer.hs index 5b65cb6d..885a3891 100644 --- a/hbs2-core/lib/HBS2/Actors/Peer.hs +++ b/hbs2-core/lib/HBS2/Actors/Peer.hs @@ -29,7 +29,8 @@ import Control.Monad.Trans.Maybe import Control.Monad.Trans.Cont -- import Control.Concurrent.Async import Control.Monad.Reader -import Control.Monad.Writer.CPS qualified as CPS +-- import Control.Monad.Writer.CPS qualified as CPS +import Control.Monad.Writer qualified as CPS import Data.ByteString.Lazy (ByteString) import Data.Cache (Cache) import Data.Cache qualified as Cache