You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by wa...@apache.org on 2020/10/28 01:01:58 UTC

[incubator-echarts-bot] 03/32: feat: 🎸 listen to comments

This is an automated email from the ASF dual-hosted git repository.

wangzx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-echarts-bot.git

commit 4526a41d164814c17ed4a20e2498d0f24caf4cba
Author: Ovilia <zw...@gmail.com>
AuthorDate: Tue Nov 20 16:08:30 2018 +0800

    feat: 🎸 listen to comments
---
 index.js              | 55 ++++++++++++++++++++++++++++++++++++++-------------
 src/coreCommitters.js | 19 ++++++++++++++++++
 src/issue.js          |  2 +-
 3 files changed, 61 insertions(+), 15 deletions(-)

diff --git a/index.js b/index.js
index 0d42caa..338360d 100644
--- a/index.js
+++ b/index.js
@@ -1,4 +1,5 @@
 const Issue = require('./src/issue');
+const coreCommitters = require('./src/coreCommitters');
 
 module.exports = app => {
     app.on(['issues.opened', 'issues.edited'], async context => {
@@ -23,25 +24,51 @@ module.exports = app => {
                 }))
                 : Promise.resolve();
 
-            const removeLabels = issue.isMeetAllRequires()
-                ? context.github.issues.deleteLabel(context.issue({
-                    name: 'waiting-for-author'
-                }))
-                : context.github.issues.deleteLabel(context.issue({
-                    name: 'waiting-for-help'
-                }));
-            removeLabels.catch(err => {
-                // Ignore error caused by not existing.
-                if (err.message !== 'Not Found') {
-                    throw(err);
-                }
-            });
+            const removeLabel = getRemoveLabel(
+                context,
+                issue.isMeetAllRequires()
+                    ? 'waiting-for-author'
+                    : 'waiting-for-help'
+            );
 
             const comment = context.github.issues.createComment(context.issue({
                 body: issue.response
             }));
 
-            return Promise.all([addLabels, removeLabels, comment]);
+            return Promise.all([addLabels, removeLabel, comment]);
+        }
+    });
+
+    app.on('issue_comment.created', async context => {
+        const commenter = context.payload.comment.user.login;
+        let removeLabel, addLabel;
+        if (coreCommitters.isCoreCommitter(commenter)) {
+            // New comment from core committers
+            removeLabel = getRemoveLabel(context, 'waiting-for-help');
+            addLabel = context.github.issues.addLabels(context.issue({
+                labels: ['waiting-for-author']
+            }));
+        }
+        else if (commenter === context.payload.issue.user.login) {
+            // New comment from issue author
+            removeLabel = getRemoveLabel(context, 'waiting-for-author');
+            addLabel = context.github.issues.addLabels(context.issue({
+                labels: ['waiting-for-help']
+            }));
+        }
+        return Promise.all([removeLabel, addLabel]);
+    });
+}
+
+function getRemoveLabel(context, name) {
+    return context.github.issues.deleteLabel(
+        context.issue({
+            name: name
+        })
+    ).catch(err => {
+        // Ignore error caused by not existing.
+        if (err.message !== 'Not Found') {
+            throw(err);
         }
     });
 }
diff --git a/src/coreCommitters.js b/src/coreCommitters.js
new file mode 100644
index 0000000..6d9cf9f
--- /dev/null
+++ b/src/coreCommitters.js
@@ -0,0 +1,19 @@
+const committers = [
+    'pissang',
+    '100pah',
+    'Ovilia',
+    'deqingli'
+];
+
+function getCoreCommitters() {
+    return committers;
+}
+
+function isCoreCommitter(user) {
+    return committers.indexOf(user) > -1;
+}
+
+module.exports = {
+    getCoreCommitters: getCoreCommitters,
+    isCoreCommitter: isCoreCommitter
+};
diff --git a/src/issue.js b/src/issue.js
index a8be8f8..73077ff 100644
--- a/src/issue.js
+++ b/src/issue.js
@@ -150,7 +150,7 @@ class Issue {
     }
 
     _matches(text) {
-        return this.body.indexOf('- [x] ' + text) > -1;
+        return this.body.indexOf('- [x] Required: ' + text) > -1;
     }
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org