<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3eb1c0ac4e40becb49a24a05c557d0798fb4529c">https://github.com/macports/macports-ports/commit/3eb1c0ac4e40becb49a24a05c557d0798fb4529c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3eb1c0ac4e40becb49a24a05c557d0798fb4529c
</span>Author: Aaron Madlon-Kay <amake@macports.org>
AuthorDate: Wed Sep 12 12:48:08 2018 +0900

<span style='display:block; white-space:pre;color:#404040;'>    Support Bitbucket in golang portgroup
</span>---
 _resources/port1.0/group/golang-1.0.tcl | 157 +++++++++++++++++++++++---------
 sysutils/go2port/Portfile               |   4 +-
 2 files changed, 117 insertions(+), 44 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/golang-1.0.tcl b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 3b6f804..d51d630 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/golang-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,15 +1,17 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
 #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# This PortGroup accommodates golang projects hosted at GitHub.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This PortGroup accommodates golang projects. The github-1.0 or bitbucket-1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# portgroups are automatically applied and set up for projects hosted on GitHub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# or Bitbucket.
</span> #
 # Usage:
 #
 # PortGroup     golang 1.0
 #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# github.setup  author project 1.0.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# go.setup      example.com/author/project 1.0.0 v
</span> #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# go.vendors    github.com/dep1/foo abcdef123456... \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#               github.com/dep2/bar fedcba654321...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# go.vendors    example.com/dep1/foo abcdef123456... \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#               example.com/dep2/bar fedcba654321...
</span> #
 # checksums-append \
 #               dep1-foo-${foo.version}.tar.gz \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,7 +31,69 @@
</span> # to generate a skeleton portfile with precomputed go.vendors and
 # checksums-append values.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup               github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options go.package go.domain go.author go.project go.version go.tag_prefix go.tag_suffix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go.setup {go_package go_version {go_tag_prefix ""} {go_tag_suffix ""}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global go.package go.domain go.author go.project go.version go.tag_prefix go.tag_suffix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    go.package          ${go_package}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    go.version          ${go_version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set parts [go._translate_package_id ${go_package}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    go.domain           [lindex ${parts} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    go.author           [lindex ${parts} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    go.project          [lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    switch -exact ${go.domain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        github.com {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            uplevel "PortGroup github 1.0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            github.setup ${go.author} ${go.project} ${go_version} ${go_tag_prefix} ${go_tag_suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        bitbucket.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            uplevel "PortGroup bitbucket 1.0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            bitbucket.setup ${go.author} ${go.project} ${go_version} ${go_tag_prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {!([info exists PortInfo(name)] && (${PortInfo(name)} ne ${go.project}))} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                name    ${go.project}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            version     ${go.version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go._translate_package_id {package_id} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set parts [split ${package_id} /]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set domain [lindex ${parts} 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set author [lindex ${parts} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set project [lindex ${parts} 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    switch -exact ${domain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        golang.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Use GitHub mirror
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set domain github.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set author golang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        gopkg.in {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # gopkg.in redirects to GitHub
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set domain github.com
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {${project} eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # Short format: gopkg.in/foo.v1 -> github.com/go-foo/foo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set project [go._strip_gopkg_version ${author}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set author go-${project}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # Long format: gopkg.in/foo/bar.v1 -> github.com/foo/bar
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set project [go._strip_gopkg_version ${project}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [list ${domain} ${author} ${project}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc go._strip_gopkg_version {str} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [regsub -- \\..*$ ${str} ""]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 options go.bin go.vendors
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,7 +108,7 @@ default dist_subdir     go
</span> default depends_build   port:go
 
 set gopath              ${workpath}/gopath
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default worksrcdir      {${gopath}/src/github.com/${github.author}/${github.project}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default worksrcdir      {${gopath}/src/${go.package}}
</span> 
 default build.cmd       {"${go.bin} build"}
 build.args
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -53,63 +117,72 @@ default build.env       {"GOPATH=${gopath} CC=${configure.cc}"}
</span> 
 # go.vendors name1 ver1 name2 ver2...
 # When a Gopkg.lock, glide.lock, etc. is present use go2port to generate values
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set go.vendors._internal {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set go.vendors_internal {}
</span> option_proc go.vendors handle_go_vendors
 proc handle_go_vendors {option action {value ""}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global go.vendors._internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global go.vendors_internal
</span>     if {${action} eq "set"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach {imp_name vers} ${value} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set vlist [split ${imp_name} /]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach {vpackage vers} ${value} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set vlist [go._translate_package_id ${vpackage}]
</span> 
             set vdomain [lindex ${vlist} 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set vuser [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set vname [lindex ${vlist} 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            switch -exact ${vdomain} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                github.com { set ghuser ${vuser} }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                golang.org { set ghuser golang }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                gopkg.in {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {$vname eq ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        set vname [regsub -- \\..*$ ${vuser} ""]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        set ghuser go-${vname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        set vname [regsub -- \\..*$ ${vname} ""]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        set ghuser ${vuser}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set vauthor [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set vproject [lindex ${vlist} 2]
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            # Need to use the 7-character SHA-1 suffix later to identify
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # the package when moving into the GOPATH, because the vuser
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # here may be wrong (renamed on GitHub, etc.).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # The vauthor may be wrong (the project has been renamed/changed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # ownership) so we need to use the SHA-1 suffix later to identify
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # the package when moving into the GOPATH. GitHub uses 7 digits;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Bitbucket uses 12. We take 7 and use globbing.
</span>             set sha1_short [string range ${vers} 0 6]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            lappend go.vendors._internal [list ${sha1_short} ${imp_name} ${vers}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            lappend go.vendors_internal [list ${sha1_short} ${vpackage} ${vers}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            global ${vproject}.version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ${vproject}.version ${vers}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            global ${vname}.version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set ${vname}.version ${vers}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set tag ${vauthor}-${vproject}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set fname ${ghuser}-${vname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            master_sites-append https://github.com/${ghuser}/${vname}/tarball/${vers}:${fname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            distfiles-append    ${fname}-${vers}.tar.gz:${fname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            switch -exact ${vdomain} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                github.com {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    master_sites-append https://github.com/${vauthor}/${vproject}/tarball/${vers}:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    distfiles-append    ${vauthor}-${vproject}-${vers}.tar.gz:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                bitbucket.org {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    master_sites-append https://bitbucket.org/${vauthor}/${vproject}/get:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    distfiles-append    ${vers}.tar.gz:${tag}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_error "go.vendors can't handle dependencies from ${vdomain}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    error "unsupported dependency domain"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span>         }
     }
 }
 
 # Setup build sources in GOPATH style:
 #   workpath/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#       gopath/src/github.com/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       gopath/src/example.com/
</span> #           author1/project1/
 #           author2/project2/
 #             :
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Danger! These manipulations depend heavily on the filenames resulting from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# expanding the distfiles. GitHub and Bitbucket are known to work:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# - GitHub: ${author}-${project}-${7-digit hash}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# - Bitbucket: ${author}-${project}-${12-digit hash}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Support for additional hosts not conforming to this pattern will take some
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# work.
</span> post-extract {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    file mkdir ${gopath}/src/github.com/${github.author}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    move [glob ${workpath}/${github.author}-${github.project}-*] ${worksrcpath}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file mkdir ${gopath}/src/${go.domain}/${go.author}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    move [glob ${workpath}/${go.author}-${go.project}-*] ${worksrcpath}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach vlist ${go.vendors._internal} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach vlist ${go.vendors_internal} {
</span>         set sha1_short [lindex ${vlist} 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set imp_name [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        file mkdir ${gopath}/src/[file dirname ${imp_name}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        move [glob ${workpath}/*-${sha1_short}] ${gopath}/src/${imp_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set vpackage [lindex ${vlist} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file mkdir ${gopath}/src/[file dirname ${vpackage}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        move [glob ${workpath}/*-${sha1_short}*] ${gopath}/src/${vpackage}
</span>     }
 }
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/go2port/Portfile b/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 8caecef..b4941c0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/go2port/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,7 @@
</span> PortSystem          1.0
 PortGroup           golang 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        amake go2port 66629b0a45b49873a9554807e2c5426fa02fe3bb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+go.setup            github.com/amake/go2port 66629b0a45b49873a9554807e2c5426fa02fe3bb
</span> version             20180911
 categories          sysutils macports
 platforms           darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ description         A go tool for creating MacPorts portfiles
</span> 
 long_description    ${description}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           go2port-${github.version}.tar.gz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           ${distname}${extract.suffix} \
</span>                         rmd160  3256147a10337a3bf5c83cc468d7e6ffb9343584 \
                         sha256  110b5870be1e2cb956e7e54ea68ad9165ce6167ae2688972b7306e94239cf611 \
                         size    3957
</pre><pre style='margin:0'>

</pre>