<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository macports-contrib.

</pre>
<p><a href="https://github.com/macports/macports-contrib/commit/3b0c86f78a1e035953b85e45b59b6599eed6a892">https://github.com/macports/macports-contrib/commit/3b0c86f78a1e035953b85e45b59b6599eed6a892</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3b0c86f78a1e035953b85e45b59b6599eed6a892
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Tue Mar 27 06:51:47 2018 +0200

<span style='display:block; white-space:pre;color:#404040;'>    cargo2port: New port snippet generator for cargo
</span>---
 cargo2port/cargo2port.tcl | 86 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/cargo2port/cargo2port.tcl b/cargo2port/cargo2port.tcl
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..fb360b1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/cargo2port/cargo2port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,86 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/opt/local/bin/port-tclsh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Copyright (c) 2018 The MacPorts Project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# modification, are permitted provided that the following conditions are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# met:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 2. Redistributions in binary form must reproduce the above copyright
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    notice, this list of conditions and the following disclaimer in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    documentation and/or other materials provided with the distribution.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 3. Neither the name of Apple Computer, Inc. nor the names of its
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    contributors may be used to endorse or promote products derived from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#    this software without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</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;'>+# This is a helper tool meant to be used to generate the cargo.crates option
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# for the cargo 1.0 port group.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/macports/macports-ports/blob/master/_resources/port1.0/group/cargo-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+package require inifile
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# helper functions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc dequote {str} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [string trim $str "\""]
</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;'>+# main
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {$argc != 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts stderr "Usage: [file tail $argv0] <path/to/Cargo.lock>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    exit 1
</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;'>+set crates {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set maxlen_name 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set maxlen_version 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set fd [ini::open [lindex $argv 0] "r"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set metadata [ini::get $fd metadata]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ini::close $fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach {key value} $metadata {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set key [dequote $key]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![regexp "^checksum (.*) (.*) " $key -> name version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        error "regex did not match: $key"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set checksum [dequote $value]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lappend crates [list $name $version $checksum]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set maxlen_name    [expr max($maxlen_name, [string length $name])]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set maxlen_version [expr max($maxlen_version, [string length $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;'>+# sort
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set crates [lsort -index 0 $crates]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# print result
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts -nonewline "cargo.crates"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach crate $crates {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts " \\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set name [lindex $crate 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set version [lindex $crate 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set checksum [lindex $crate 2]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts -nonewline [format "    %-*s  %-*s  %s" $maxlen_name $name $maxlen_version $version $checksum]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+puts ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+exit 0
</span></pre><pre style='margin:0'>

</pre>