a/trunk/wharfie/lib/actions.py b/trunk/wharfie/lib/actions.py
...
...
21
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
21
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22
# OR OTHER DEALINGS IN THE SOFTWARE.
22
# OR OTHER DEALINGS IN THE SOFTWARE.
23
#
23
#
24
################################################################################
24
################################################################################
25
25
26
from lib import makefile as make
27
from lib import files
28
26
def run(name, dep, cmd):
29
def run(name, dep, cmd):
27
    makeTarget = {
30
    makeTarget = {
28
        'comment' : "%s %s" % (cmd[0], cmd[1]),
31
        'comment' : "%s %s" % (cmd[0], cmd[1]),
29
        'name': name,
32
        'name': name,
30
        'dep': dep,
33
        'dep': dep,
...
...
40
        'hostcmd': cmd[1]
43
        'hostcmd': cmd[1]
41
    };
44
    };
42
    return makeTarget;
45
    return makeTarget;
43
46
44
def add(name, dep, cmd):
47
def add(name, dep, cmd):
45
    src,dst = cmd[1].lstrip().split(" ")
48
    if " " not in cmd[1].lstrip():
49
        print ("parse error: ADD needs two arguments. (%s)" % cmd[1].lstrip())
50
        exit(1)
51
    src,dst = cmd[1].lstrip().split(" ")
52
    isUrl = src.startswith("http://") or src.startswith("https://") or src.startswith("ftp://")
53
    src = files.input_file(src)
54
    # Overwrite potential implicite make rules for file
55
    if not isUrl:
56
        make.makeTargets.append({'name': src, 'dep': '', 'simplecmd': 'touch $@'});
46
    dep.append(src)
57
    dep.append(src)
47
    myHostCmd = '''
58
    myHostCmd = '''
48
        dest="$(pwd)";
59
        destdir="$(pwd)";
49
        cd ../;
60
        src="%s";
50
        mkdir -p $(dirname "${dest}/%s");
61
        dst="%s";
51
        cp -R --preserve=mode %s "${dest}/%s"''' % (dst, src, dst)
62
        cd ../;
63
        case "${dst}" in
64
            */)
65
                mkdir -p "${destdir}/${dst}";
66
                ;;
67
            *)
68
                mkdir -p $(dirname "${destdir}/${dst}");
69
                ;;
70
        esac;
71
        case "${src}" in
72
            *.tar)
73
                cat ${src} | (cd ${destdir}/${dst}; tar -xf -);
74
                ;;
75
            *.tar.gz)
76
                cat ${src} | (cd ${destdir}/${dst}; tar -xzf -);
77
                ;;
78
            *.tar.bz2)
79
                cat ${src} | (cd ${destdir}/${dst}; tar -xjf -);
80
                ;;
81
            *)
82
                cp -R --preserve=mode ${src} "${destdir}/${dst}";
83
                ;;
84
        esac;
85
''' % (src, dst)
52
    
86
    
53
    makeTarget = {
87
    makeTarget = {
54
        'comment' : "%s %s" % (cmd[0], cmd[1]),
88
        'comment' : "%s %s" % (cmd[0], cmd[1]),
55
        'name': name,
89
        'name': name,
56
        'dep': dep,
90
        'dep': dep,
...
...
111
        'trgcmd': myTrgCmd,
145
        'trgcmd': myTrgCmd,
112
        'hostcmd': myHostCmd,
146
        'hostcmd': myHostCmd,
113
        'temporary': True
147
        'temporary': True
114
    };
148
    };
115
149
116
150
def to(name, dep, cmd):
151
    makeTarget = {
152
        'comment' : "%s %s" % (cmd[0], cmd[1]),
153
        'name': cmd[1].lstrip(),
154
        'dep': dep,
155
        'temporary': True
156
    };
157
    return makeTarget;
158