<pre style='margin:0'>
Zero King (l2dy) pushed a commit to branch master
in repository mpbot-github.

</pre>
<p><a href="https://github.com/macports/mpbot-github/commit/61c263e7feec97193ce6c21f5a8e410c70da3fa6">https://github.com/macports/mpbot-github/commit/61c263e7feec97193ce6c21f5a8e410c70da3fa6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 61c263e  Recognize changes in files directory
</span>61c263e is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 61c263e7feec97193ce6c21f5a8e410c70da3fa6
</span>Author: Zero King <l2dy@macports.org>
AuthorDate: Tue Jan 8 11:30:15 2019 +0000

<span style='display:block; white-space:pre;color:#404040;'>    Recognize changes in files directory
</span>---
 ci/portlist.go               | 18 +++++++++++++++---
 pr/githubapi/pull_request.go | 17 +++++++++++++----
 pr/webhook/pull_request.go   |  4 ++--
 3 files changed, 30 insertions(+), 9 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/ci/portlist.go b/ci/portlist.go
</span><span style='display:block; white-space:pre;color:#808080;'>index 58e7026..47da43b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/ci/portlist.go
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/ci/portlist.go
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,7 +6,7 @@ import (
</span>   "regexp"
 )
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-// List second part of path of Portfiles that was changed in the PR.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// List second part of path of Portfiles (or port files) that was changed in the PR.
</span> func GetChangedPortList() ([]string, error) {
        gitCmd := exec.Command("git", "diff", "--name-status", "macports/master...HEAD", "--")
        stdout, err := gitCmd.StdoutPipe()
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,11 +17,23 @@ func GetChangedPortList() ([]string, error) {
</span>           return nil, err
        }
        ports := make([]string, 0, 1)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        gitRegexp := regexp.MustCompile(`[AM]\t[^\._/][^/]*/([^/]+)/Portfile`) // Ignore hidden and _* top directories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   portsFound := make(map[string]bool)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Ignore hidden and _* top directories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   portGrep := regexp.MustCompile(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           `[AM]\t[^\._/][^/]*/([^/]+)/(Portfile|files/)`)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   renameGrep := regexp.MustCompile(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           `R[0-9]*\t[^\t]*\t[^\._/][^/]*/([^/]+)/(Portfile|files/)`)
</span>   stdoutScanner := bufio.NewScanner(stdout)
        for stdoutScanner.Scan() {
                line := stdoutScanner.Text()
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                if match := gitRegexp.FindStringSubmatch(line); match != nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           var match []string
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if match = portGrep.FindStringSubmatch(line); match == nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           } else if match = renameGrep.FindStringSubmatch(line); match == nil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if _, ok := portsFound[match[1]]; !ok {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   portsFound[match[1]] = true
</span>                   ports = append(ports, match[1])
                }
        }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/pr/githubapi/pull_request.go b/pr/githubapi/pull_request.go
</span><span style='display:block; white-space:pre;color:#808080;'>index dae0b0f..03aad94 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/pr/githubapi/pull_request.go
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/pr/githubapi/pull_request.go
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,16 +33,25 @@ func (client *githubClient) ListChangedPortsAndFiles(owner, repo string, number
</span>           opt.Page = resp.NextPage
        }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        portfileRegexp := regexp.MustCompile(`[^\._/][^/]*/([^/]+)/Portfile`) // Ignore hidden and _* top directories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   portGrep := regexp.MustCompile(`[^\._/][^/]*/([^/]+)/(Portfile|files/)`) // Ignore hidden and _* top directories
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   portsFound := make(map[string]int)
</span>   for _, file := range allFiles {
                fileName := *file.Filename
                if *file.Status == "renamed" {
                        fileName = *file.PreviousFilename
                }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                match := portfileRegexp.FindStringSubmatch(fileName)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           match := portGrep.FindStringSubmatch(fileName)
</span>           if match != nil {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        ports = append(ports, match[1])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   commitFiles = append(commitFiles, file)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   if idx, ok := portsFound[match[1]]; !ok {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ports = append(ports, match[1])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           commitFiles = append(commitFiles, file)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           portsFound[match[1]] = len(ports) - 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if match[2] == "Portfile" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                   commitFiles[idx] = file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   }
</span>           }
        }
        return
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/pr/webhook/pull_request.go b/pr/webhook/pull_request.go
</span><span style='display:block; white-space:pre;color:#808080;'>index cc4e7b1..c3e5cc9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/pr/webhook/pull_request.go
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/pr/webhook/pull_request.go
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -61,8 +61,8 @@ func (receiver *Receiver) processPullRequest(event *github.PullRequestEvent) {
</span>   for i, port := range ports {
                portMaintainer, err := receiver.dbHelper.GetPortMaintainer(port)
                if err != nil {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        // TODO: handle submission of duplicate ports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if err.Error() == "port not found" && *files[i].Status == "added" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   // TODO: warn about submission of duplicate ports in different category
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   if err.Error() == "port not found" && !strings.Contains(*files[i].Filename, "/files/") && *files[i].Status == "added" {
</span>                           isSubmission = true
                                continue
                        }
</pre><pre style='margin:0'>

</pre>