aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Alexander Foremny <aforemny@posteo.de>2023-11-09 15:43:28 +0100
committerLibravatar Alexander Foremny <aforemny@posteo.de>2023-11-09 15:47:28 +0100
commita37d3605e40b5c9c125568045e0fb99e9796fe49 (patch)
treed2a16285cd3724580e2db5f5d04b8f217b4ac873
parent12511580c732895e8c5d045e18803a766ed733b8 (diff)
group-by -> group
-rw-r--r--anissue.cabal2
-rw-r--r--app/Issue/Group.hs (renamed from app/Issue/GroupBy.hs)24
-rw-r--r--app/Main.hs14
3 files changed, 21 insertions, 19 deletions
diff --git a/anissue.cabal b/anissue.cabal
index 51acacc..8e86631 100644
--- a/anissue.cabal
+++ b/anissue.cabal
@@ -79,7 +79,7 @@ executable anissue
History.PartialCommitInfo
Issue
Issue.Filter
- Issue.GroupBy
+ Issue.Group
Issue.Provenance
Issue.Sort
Issue.Tag
diff --git a/app/Issue/GroupBy.hs b/app/Issue/Group.hs
index 18859f2..69caf20 100644
--- a/app/Issue/GroupBy.hs
+++ b/app/Issue/Group.hs
@@ -1,5 +1,5 @@
-module Issue.GroupBy
- ( groupByArg,
+module Issue.Group
+ ( groupArg,
groupIssuesBy,
)
where
@@ -13,12 +13,12 @@ import Issue.Tag (Tag (..))
import Issue.Tag qualified as I
import Options.Applicative qualified as O
-groupByArg :: O.Parser (Maybe T.Text)
-groupByArg =
+groupArg :: O.Parser (Maybe T.Text)
+groupArg =
O.optional
( O.option
(O.maybeReader (parse . T.pack))
- ( O.long "group-by"
+ ( O.long "group"
<> O.metavar "TAG"
<> O.help "Group selected issues."
)
@@ -29,17 +29,19 @@ groupByArg =
| otherwise = Nothing
groupIssuesBy :: T.Text -> [Issue] -> Map T.Text [Issue]
-groupIssuesBy groupBy issues =
+groupIssuesBy group issues =
foldl
( \collected issue ->
foldl
(flip $ M.alter (Just . maybe [issue] (issue :)))
collected
- (groupsOfIssue groupBy issue)
+ (groupsOfIssue group issue)
)
M.empty
issues
- where
- groupsOfIssue group issue =
- mapMaybe I.tagValue $
- filter (\(Tag key _) -> key == group) (issue.tags ++ issue.internalTags)
+
+groupsOfIssue :: T.Text -> Issue -> [T.Text]
+groupsOfIssue group issue =
+ mapMaybe I.tagValue
+ . filter (\(Tag key _) -> key == group)
+ $ issue.tags ++ issue.internalTags
diff --git a/app/Main.hs b/app/Main.hs
index a51ba1e..d6a263a 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -422,7 +422,7 @@ import Issue (Issue (..))
import Issue qualified as I
import Issue.Filter (Filter, applyFilters)
import Issue.Filter qualified as I
-import Issue.GroupBy qualified as I
+import Issue.Group qualified as I
import Issue.Provenance qualified as I
import Issue.Sort (Sort, applySorts)
import Issue.Sort qualified as I
@@ -514,7 +514,7 @@ data Command
{ files :: [String],
filters :: [Filter],
sort :: [Sort],
- groupBy :: Maybe T.Text
+ group :: Maybe T.Text
}
| Log
| Show
@@ -543,7 +543,7 @@ listCmd =
<$> filesArg
<*> I.filterArg
<*> I.sortArg
- <*> I.groupByArg
+ <*> I.groupArg
logCmd :: O.Parser Command
logCmd =
@@ -586,10 +586,10 @@ main :: IO ()
main = do
settings <- readSettings
O.execParser (O.info (options <**> O.helper) O.idm) >>= \case
- Options {colorize, noPager, width, command = List {sort, filters, files, groupBy = Just groupBy}} -> do
+ Options {colorize, noPager, width, command = List {sort, filters, files, group = Just group}} -> do
let withinPath issue = if null files then True else any (\file -> file `isPrefixOf` issue.file) files
ungroupedIssues <- applySorts sort . applyFilters filters . filter withinPath . fst <$> getHistory
- let groupedIssues = I.groupIssuesBy groupBy ungroupedIssues
+ let groupedIssues = I.groupIssuesBy group ungroupedIssues
putDoc colorize noPager width
. P.vsep
. intersperse ("" :: P.Doc ann)
@@ -598,7 +598,7 @@ main = do
P.vsep $
( P.annotate P.bold . P.annotate (P.color P.Yellow) $
( ( P.annotate P.bold $
- (("@" :: P.Doc ann) <> P.pretty groupBy) <+> P.pretty name
+ (("@" :: P.Doc ann) <> P.pretty group) <+> P.pretty name
)
<+> ("(" :: P.Doc ann)
<> P.pretty (length issues)
@@ -612,7 +612,7 @@ main = do
issues
)
(M.toList groupedIssues)
- Options {internalTags, colorize, noPager, width, command = List {sort, filters, files, groupBy = Nothing}} -> do
+ Options {internalTags, colorize, noPager, width, command = List {sort, filters, files, group = Nothing}} -> do
let withinPath issue = if null files then True else any (\file -> file `isPrefixOf` issue.file) files
issues <- applySorts sort . applyFilters filters . filter withinPath . fst <$> getHistory
putDoc colorize noPager width . P.vsep $