packages feed

trace-embrace 1.2.0 → 1.3.0

raw patch · 4 files changed

+68/−39 lines, 4 filesdep +add-dependent-file

Dependencies added: add-dependent-file

Files

changelog.md view
@@ -1,5 +1,9 @@ # trace-embrace changelog +## Version 1.3.0 2026-02-26+  * fix rebuild bug with add-dependent-file package+  * fix trace-embrace.yaml duplication (created HLS)+ ## Version 1.2.0 2025-06-05   * support GHC-9.12.2 
src/Debug/TraceEmbrace/Config/Load.hs view
@@ -2,25 +2,29 @@ {-# LANGUAGE OverloadedStrings #-} module Debug.TraceEmbrace.Config.Load where +import AddDependentFile ( addDependentFile, getPackageRoot, (</>) ) import Control.Concurrent-import Control.Exception-import Data.Cache.LRU as LRU-import Data.Char+    ( MVar, newMVar, takeMVar, putMVar, modifyMVar )+import Control.Exception ( catch, bracket )+import Data.Cache.LRU as LRU ( LRU, newLRU, lookup, insert )+import Data.Char ( toUpper, isDigit, isAlphaNum ) import Data.Generics.Labels ()-import Data.IORef+import Data.IORef ( IORef, newIORef, readIORef, atomicWriteIORef ) import Data.List qualified as L import Data.RadixTree.Word8.Strict qualified as T import Data.Yaml as Y+    ( decodeFileThrow, encodeFile, prettyPrintParseException ) import Debug.Trace (traceIO) import Debug.TraceEmbrace.Config.Type import Debug.TraceEmbrace.Config.Validation-import Language.Haskell.TH-import Language.Haskell.TH.Syntax-import Refined-import System.Directory+    ( refineS, required, SeparatorValidator )+import Language.Haskell.TH ( Q, Loc(loc_package), runIO )+import Language.Haskell.TH.Syntax ( Lift )+import Refined ( IdPred, Refined, NonEmpty, unrefine, refineTH )+import System.Directory ( doesFileExist ) import System.Environment (lookupEnv)-import System.IO-import System.IO.Unsafe+import System.IO ( Handle )+import System.IO.Unsafe ( unsafePerformIO )   validateTraceMessageFormat ::@@ -78,8 +82,8 @@ defaultYamlConfig :: YamlConfigMaybe defaultYamlConfig = newYamlConfig { version = Nothing } -loadYamlConfig :: IO YamlConfig-loadYamlConfig = do+loadYamlConfig :: FilePath -> IO YamlConfig+loadYamlConfig fp = do   doesFileExist fp >>= \case     True ->       configFromJust . (<> defaultYamlConfig) =<< catch (Y.decodeFileThrow fp) badYaml@@ -98,7 +102,6 @@     badYaml e =       fail $ "Fail to parse " <> show fp <> "file due:\n" <> prettyPrintParseException e       <> "\nRename or delete existing config file to get default config."-    fp = traceEmbraceConfigFileName  traceEmbraceConfigFileName :: FilePath traceEmbraceConfigFileName = "trace-embrace.yaml"@@ -133,26 +136,26 @@ {-# NOINLINE configReadToken #-}  getConfig :: Q TraceEmbraceConfig-getConfig = do-  c <- runIO readConfigRef >>= loadIfNothing-  runIO (doesFileExist traceEmbraceConfigFileName) >>= \case-    True -> addDependentFile traceEmbraceConfigFileName-    False -> reportWarning $ "Config File is missing - skip dependency"-  pure c+getConfig = runIO readConfigRef >>= loadIfNothing   where     readConfigRef = readIORef traceEmbraceConfigRef     loadIfNothing = \case-      Nothing -> runIO $ do-        bracket (takeMVar configReadToken)-          (putMVar configReadToken)-          (\() ->-             readConfigRef >>= \case-               Just c ->-                 pure c-               Nothing -> do-                 c <- yaml2Config <$> loadYamlConfig-                 (atomicWriteIORef traceEmbraceConfigRef (Just c))-                 pure c)+      Nothing -> do+        ymConfPath <- (</> traceEmbraceConfigFileName) <$> getPackageRoot+        r <- runIO $ do+          bracket (takeMVar configReadToken)+            (putMVar configReadToken)+            (\() ->+               readConfigRef >>= \case+                 Just c ->+                   pure c+                 Nothing -> do+                   c <- yaml2Config <$> loadYamlConfig ymConfPath+                   (atomicWriteIORef traceEmbraceConfigRef (Just c))+                   pure c)+        addDependentFile ymConfPath++        pure r       Just c -> pure c  traceAll :: [LeveledModulePrefix]
trace-embrace.cabal view
@@ -1,6 +1,6 @@ cabal-version:   3.0 name:            trace-embrace-version:         1.2.0+version:         1.3.0 license:         BSD-3-Clause license-file:    LICENSE category:        Development@@ -341,7 +341,8 @@     A trace line for the snippet above would be:          Module:fun: 7 get; x#: 1#-+extra-source-files:+  trace-embrace.yaml tested-with:   GHC == 9.10.1, GHC == 9.12.2 extra-doc-files:@@ -376,13 +377,14 @@   import: base   hs-source-dirs: src   build-depends:-    cpphs < 2,-    deepseq < 1.8,-    ghc < 9.13,-    haddock-use-refs < 2,-    radix-tree < 2,-    tagged < 1,-    transformers < 1+    , cpphs < 2+    , add-dependent-file < 1+    , deepseq < 1.8+    , ghc < 9.13+    , haddock-use-refs < 2+    , radix-tree < 2+    , tagged < 1+    , transformers < 1    exposed-modules:     Debug.TraceEmbrace
+ trace-embrace.yaml view
@@ -0,0 +1,20 @@+levels:+- '-'+mode:+  tag: TraceStd+runtimeLevelsOverrideEnvVar:+  tag: CapsPackageName+traceMessage:+  entrySeparator: '; '+  keyValueSeparator: ': '+  retValPrefix: ' => '+  traceLinePattern:+  - tag: FullyQualifiedModule+  - contents: '::'+    tag: Delimiter+  - tag: FunctionName+  - contents: ': '+    tag: Delimiter+  - tag: LiteralMessage+  - tag: Variables+version: 1