From fed1845ec898151b9dc0c71ea8513ad79fb44376 Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Fri, 14 Jun 2024 09:21:44 +0300 Subject: [PATCH] wip --- fixme-new/lib/Fixme/Run.hs | 5 ++++- fixme-new/lib/Fixme/Scan.hs | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/fixme-new/lib/Fixme/Run.hs b/fixme-new/lib/Fixme/Run.hs index 74630b30..754852bf 100644 --- a/fixme-new/lib/Fixme/Run.hs +++ b/fixme-new/lib/Fixme/Run.hs @@ -729,6 +729,10 @@ runForms ss = for_ ss $ \s -> do ListVal [SymbolVal "builtin:update-indexes"] -> do updateIndexes + ListVal [SymbolVal "builtin:scan-magic"] -> do + magic <- scanMagic + liftIO $ print $ pretty magic + ListVal [SymbolVal "builtin:select-fixme-hash", FixmeHashLike x] -> do w <- selectFixmeHash x liftIO $ print $ pretty w @@ -739,7 +743,6 @@ runForms ss = for_ ss $ \s -> do Left (fn,h) -> liftIO $ print $ "N" <+> pretty h <+> pretty fn Right (fn,h) -> liftIO $ print $ "E" <+> pretty h <+> pretty fn - ListVal (SymbolVal "builtin:git:extract-file-meta-data" : StringLikeList fs) -> do fxm <- gitExtractFileMetaData fs <&> HM.toList liftIO $ print $ vcat (fmap (pretty.snd) fxm) diff --git a/fixme-new/lib/Fixme/Scan.hs b/fixme-new/lib/Fixme/Scan.hs index 7c021044..386cad6b 100644 --- a/fixme-new/lib/Fixme/Scan.hs +++ b/fixme-new/lib/Fixme/Scan.hs @@ -1,5 +1,5 @@ {-# Language MultiWayIf #-} -module Fixme.Scan (scanBlob) where +module Fixme.Scan (scanBlob,scanMagic) where import Fixme.Prelude hiding (indent) import Fixme.Types @@ -52,6 +52,21 @@ data FixmeWhat = FixmeHead Int Int Text Text data P = P0 [FixmePart] | P1 Int Fixme [FixmePart] + +scanMagic :: FixmePerks m => FixmeM m HashRef +scanMagic = do + env <- ask + w <- atomically do + tagz <- fixmeEnvTags env & readTVar + co <- fixmeEnvDefComments env & readTVar + fco <- fixmeEnvFileComments env & readTVar + m <- fixmeEnvFileMask env & readTVar + a <- fixmeEnvAttribs env & readTVar + v <- fixmeEnvAttribValues env & readTVar + + pure $ serialise (tagz, co, fco, m, a, v) + pure $ HashRef $ hashObject w + scanBlob :: forall m . FixmePerks m => Maybe FilePath -- ^ filename to detect type -> ByteString -- ^ content