source: trunk/base/src/port1.0/portextract.tcl @ 1638

Last change on this file since 1638 was 1638, checked in by landonf (Landon Fuller), 18 years ago

Standardized return values for targets
Added msgcat calls to allow for target localization
Updated copyright date

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.3 KB
Line 
1# et:ts=4
2# portextract.tcl
3#
4# Copyright (c) 2002 - 2003 Apple Computer, Inc.
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10# 1. Redistributions of source code must retain the above copyright
11#    notice, this list of conditions and the following disclaimer.
12# 2. Redistributions in binary form must reproduce the above copyright
13#    notice, this list of conditions and the following disclaimer in the
14#    documentation and/or other materials provided with the distribution.
15# 3. Neither the name of Apple Computer, Inc. nor the names of its contributors
16#    may be used to endorse or promote products derived from this software
17#    without specific prior written permission.
18#
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29# POSSIBILITY OF SUCH DAMAGE.
30#
31
32package provide portextract 1.0
33package require portutil 1.0
34
35set com.apple.extract [target_new com.apple.extract extract_main]
36${com.apple.extract} set init extract_init
37${com.apple.extract} provides extract
38${com.apple.extract} requires fetch checksum
39${com.apple.extract} deplist depends_extract
40${com.apple.extract} set prerun extract_start
41
42# define options
43options extract.only
44commands extract
45
46# Set up defaults
47# XXX call out to code in portutil.tcl XXX
48# This cleans the distfiles list of all site tags
49default extract.only {[disttagclean $distfiles]}
50
51default extract.dir {${workpath}}
52default extract.cmd gzip
53default extract.pre_args -dc
54default extract.post_args {{| tar -xf -}}
55
56set UI_PREFIX "---> "
57
58proc extract_init {args} {
59    global extract.only extract.cmd extract.pre_args extract.post_args distfiles use_bzip2 use_zip workpath
60
61    if [info exists use_bzip2] {
62        set extract.cmd bzip2
63    } elseif [info exists use_zip] {
64        set extract.cmd unzip
65        set extract.pre_args -q
66        set extract.post_args "-d $workpath"
67    }
68}
69
70proc extract_start {args} {
71    global UI_PREFIX portname
72
73    ui_msg "$UI_PREFIX [format [msgcat::mc "Extracting %s"] $portname]"
74}
75
76proc extract_main {args} {
77    global portname distname distpath distfiles use_bzip2 extract.only extract.cmd extract.before_args extract.after_args extract.args UI_PREFIX
78
79    if {![info exists distfiles] && ![info exists extract.only]} {
80        # nothing to do
81        return 0
82    }
83
84    foreach distfile ${extract.only} {
85        ui_info "$UI_PREFIX [format [msgcat::mc "Extracting %s"] $distfile] ... " -nonewline
86        set extract.args "$distpath/$distfile"
87        if [catch {system "[command extract]"} result] {
88            return -code error "$result"
89        }
90        ui_info [msgcat::mc "Done"]
91    }
92    return 0
93}
Note: See TracBrowser for help on using the repository browser.