[137927] branches/gsoc15-portfile/github2port/bitbucket2port

chunyang at macports.org chunyang at macports.org
Tue Jun 23 00:24:53 PDT 2015


Revision: 137927
          https://trac.macports.org/changeset/137927
Author:   chunyang at macports.org
Date:     2015-06-23 00:24:52 -0700 (Tue, 23 Jun 2015)
Log Message:
-----------
bitbucket2port: use more procedures

Modified Paths:
--------------
    branches/gsoc15-portfile/github2port/bitbucket2port

Modified: branches/gsoc15-portfile/github2port/bitbucket2port
===================================================================
--- branches/gsoc15-portfile/github2port/bitbucket2port	2015-06-23 06:28:13 UTC (rev 137926)
+++ branches/gsoc15-portfile/github2port/bitbucket2port	2015-06-23 07:24:52 UTC (rev 137927)
@@ -1,9 +1,10 @@
-#!/usr/bin/env tclsh
+#!/usr/bin/env port-tclsh
 # -*- 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
 #
-# Generate a bitbucket group template Portfile given bitbucket homepage URL
-#
+# Generate a bitbucket group template Portfile given bitbucket homepage or tarball URL
 
+package require uri
+
 proc usage {{channel stderr}} {
     global argv0
     puts $channel "Usage: $argv0 URL"
@@ -18,18 +19,49 @@
     expr {$val ne "" ? $val : $def}
 }
 
+proc parse_tarball_name {v} {
+    set version ""
+    set tag_prefix ""
+
+    if {[regexp {[0-9]+([.-][0-9]+)+} $v version]} {
+        if {[string length $version] < [string length $v]} {
+            set tag_prefix [string range $v 0 [expr [string first $version $v] -1]]
+        }
+    }
+    return [list $version $tag_prefix]
+}
+
+proc parse_bitbucket_url {url} {
+    array set urlparts [uri::split $url]
+
+    if {![string equal $urlparts(host) bitbucket.org]} {
+        return -code error \
+            "expected bitbucket url but got \"$url\""
+    }
+
+    set path [split $urlparts(path) /]
+    set author [lindex $path 0]
+    set project [lindex $path 1]
+    set tarball [lindex $path end]
+
+    set version "version"
+    set tag_prefix ""
+
+    return [concat $author $project [parse_tarball_name $tarball]]
+}
+
 if {$argc != 1} {
     usage
     exit 1
 }
 
 set url [lindex $argv 0]
-set tmp [split $url /]
+set tmp [parse_bitbucket_url $url]
 
-set author [val_or_def [lindex $tmp 3] author]
-set project [val_or_def [lindex $tmp 3] project]
-set version 1.0
-set tag_prefix "";
+set author     [val_or_def [lindex $tmp 0] "author"]
+set project    [val_or_def [lindex $tmp 1] "project"]
+set version    [val_or_def [lindex $tmp 2] "version"]
+set tag_prefix [val_or_def [lindex $tmp 3] "tag_prefix"]
 
 puts "# -*- 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"
 puts "# \$Id\$"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150623/fcd0a002/attachment.html>


More information about the macports-changes mailing list