[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