diff --git a/.fixme-new/config b/.fixme-new/config index 2b0c6ad0..468696ee 100644 --- a/.fixme-new/config +++ b/.fixme-new/config @@ -9,6 +9,17 @@ fixme-prefix TODO: fixme-git-scan-filter-days 30 +fixme-attribs assigned workflow + +fixme-attribs resolution cat scope + +fixme-value-set workflow new backlog wip test fixed done + +fixme-value-set cat bug feat refactor + +fixme-value-set scope mvp-0 mvp-1 backlog + + fixme-files **/*.txt docs/devlog.md fixme-files **/*.hs diff --git a/fixme-new/lib/Fixme/Run.hs b/fixme-new/lib/Fixme/Run.hs index 283bc728..39120285 100644 --- a/fixme-new/lib/Fixme/Run.hs +++ b/fixme-new/lib/Fixme/Run.hs @@ -414,6 +414,9 @@ printEnv = do <&> HM.toList <&> fmap (over _2 HS.toList) + attr <- asks fixmeEnvAttribs >>= readTVarIO <&> HS.toList + vals <- asks fixmeEnvAttribValues >>= readTVarIO <&> HM.toList + for_ tags $ \m -> do liftIO $ print $ "fixme-prefix" <+> pretty m @@ -431,6 +434,12 @@ printEnv = do liftIO $ print $ "fixme-file-comments" <+> dquotes (pretty ft) <+> dquotes (pretty comm) + for_ attr $ \a -> do + liftIO $ print $ "fixme-attribs" + <+> pretty a + + for_ vals$ \(v, vs) -> do + liftIO $ print $ "fixme-value-set" <+> pretty v <+> hsep (fmap pretty (HS.toList vs)) help :: FixmePerks m => m () help = do @@ -484,6 +493,16 @@ run what = do let co = fmap Text.pack xs & HS.fromList atomically $ modifyTVar t (<> co) + ListVal (SymbolVal "fixme-attribs" : StringLikeList xs) -> do + ta <- asks fixmeEnvAttribs + atomically $ modifyTVar ta (<> HS.fromList (fmap fromString xs)) + + ListVal (SymbolVal "fixme-value-set" : StringLike n : StringLikeList xs) -> do + t <- asks fixmeEnvAttribValues + let name = fromString n + let vals = fmap fromString xs & HS.fromList + atomically $ modifyTVar t (HM.insertWith (<>) name vals) + Init -> init ScanGitLocal args -> scanGitLocal args Nothing diff --git a/fixme-new/lib/Fixme/Types.hs b/fixme-new/lib/Fixme/Types.hs index 58659187..fb763499 100644 --- a/fixme-new/lib/Fixme/Types.hs +++ b/fixme-new/lib/Fixme/Types.hs @@ -46,7 +46,7 @@ newtype FixmeAttrName = FixmeAttrName { fromFixmeAttrName :: Text } newtype FixmeAttrVal = FixmeAttrVal { fromFixmeAttrVal :: Text } - deriving newtype (Eq,Ord,Show,IsString,ToField,FromField) + deriving newtype (Eq,Ord,Show,IsString,Hashable,ToField,FromField) deriving stock (Data,Generic) newtype FixmeTimestamp = FixmeTimestamp Word64 @@ -83,6 +83,8 @@ data FixmeEnv = { fixmeEnvGitDir :: Maybe FilePath , fixmeEnvFileMask :: TVar [FilePattern] , fixmeEnvTags :: TVar (HashSet FixmeTag) + , fixmeEnvAttribs :: TVar (HashSet FixmeAttrName) + , fixmeEnvAttribValues :: TVar (HashMap FixmeAttrName (HashSet FixmeAttrVal)) , fixmeEnvDefComments :: TVar (HashSet Text) , fixmeEnvFileComments :: TVar (HashMap FilePath (HashSet Text)) , fixmeEnvGitScanDays :: TVar (Maybe Integer) @@ -130,6 +132,8 @@ runFixmeCLI m = do <$> newTVarIO mempty <*> newTVarIO mempty <*> newTVarIO mempty + <*> newTVarIO mempty + <*> newTVarIO mempty <*> newTVarIO defCommentMap <*> newTVarIO Nothing