@@ -6,6 +6,7 @@ module GitHub.Tools.AutoMerge
6
6
, trustedAuthors
7
7
) where
8
8
9
+ import Control.Monad (unless )
9
10
import qualified Data.ByteString.Char8 as BS8
10
11
import Data.Text (Text )
11
12
import qualified Data.Text as Text
@@ -26,11 +27,12 @@ trustedAuthors :: [Text]
26
27
trustedAuthors =
27
28
[ " Green-Sky"
28
29
, " JFreegman"
29
- , " TokTok "
30
+ , " dependabot[bot] "
30
31
, " iphydf"
31
32
, " nurupo"
32
33
, " robinlinden"
33
34
, " sudden6"
35
+ , " toktok-releaser"
34
36
, " zugz"
35
37
]
36
38
@@ -68,9 +70,13 @@ autoMerge token ownerName PullRequestInfo{prRepoName, prUser, prBranch, prOrigin
68
70
setCurrentDirectory workDir
69
71
70
72
71
- mergeable :: PullRequestInfo -> Bool
72
- mergeable PullRequestInfo {prState, prTrustworthy, prUser} =
73
- prState == " clean" && (prTrustworthy || prUser `elem` trustedAuthors)
73
+ clean :: PullRequestInfo -> Bool
74
+ clean PullRequestInfo {prState} = prState == " clean"
75
+
76
+
77
+ trustworthy :: PullRequestInfo -> Bool
78
+ trustworthy PullRequestInfo {prTrustworthy, prUser} =
79
+ prTrustworthy || prUser `elem` trustedAuthors
74
80
75
81
76
82
autoMergePullRequest
@@ -81,16 +87,21 @@ autoMergePullRequest
81
87
autoMergePullRequest token ownerName repoName = do
82
88
let auth = Just . GitHub. OAuth . BS8. pack $ token
83
89
mgr <- newManager tlsManagerSettings
84
- pulls <- (V. toList <$>
85
- request auth mgr (GitHub. pullRequestsForR ownerName repoName GitHub. stateOpen GitHub. FetchAll ))
86
- >>= fmap (map $ makePullRequestInfo repoName) . getPrInfos auth mgr ownerName repoName
87
- putStrLn $ " found " <> show (length pulls) <> " pulls"
90
+ pulls <- request auth mgr (GitHub. pullRequestsForR ownerName repoName GitHub. stateOpen GitHub. FetchAll )
91
+ >>= (fmap (map $ makePullRequestInfo repoName) . getPrInfos auth mgr ownerName repoName) . V. toList
92
+ putStrLn $ " found " <> show (length pulls) <> " pulls in " <> Text. unpack (GitHub. untagName repoName)
93
+
94
+ let cleanPulls = filter clean pulls
95
+ putStrLn $ " out of these, " <> show (length cleanPulls) <> " are clean pulls"
88
96
89
- let mergeablePulls = filter mergeable pulls
90
- putStrLn $ " selected " <> show (length mergeablePulls) <> " mergeable pulls:"
91
- mapM_ print mergeablePulls
97
+ let trustworthyPulls = filter trustworthy cleanPulls
98
+ if null trustworthyPulls
99
+ then putStrLn " no clean, trustworthy pulls found"
100
+ else do
101
+ putStrLn $ " selected " <> show (length trustworthyPulls) <> " clean, trustworthy pulls:"
102
+ mapM_ print trustworthyPulls
92
103
93
- mapM_ (autoMerge token ownerName) mergeablePulls
104
+ mapM_ (autoMerge token ownerName) trustworthyPulls
94
105
95
106
96
107
autoMergeAll
@@ -100,5 +111,5 @@ autoMergeAll
100
111
-> IO ()
101
112
autoMergeAll orgName ownerName token = do
102
113
let auth = Just . GitHub. OAuth . BS8. pack $ token
103
- pulls <- filter mergeable . concat <$> getPullInfos orgName ownerName auth
104
- mapM_ (autoMerge token ownerName) pulls
114
+ trustworthyPulls <- filter ( \ p -> clean p && trustworthy p) . concat <$> getPullInfos orgName ownerName auth
115
+ mapM_ (autoMerge token ownerName) trustworthyPulls
0 commit comments