Subversion Repositories DevTools

Rev

Rev 1530 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1530 dpurdie 1
####################################################################################################
2
# This is a class action script for the replace class 
3
# For each file in this class it will replace any replace tags in that file as it copies it to dest.
4
# It searches the src file for <REPLACETAG-XXX> and for each one it
5
#    Looks for Environment var XXX and if it exists it is used to replace the tag in the file
6
#    otherwise it prints a warning if the Var does not exist.
7
# If no tags are found in the file it is simply copied to dest
8
# These environment vars are setup by pkginfo or request script
9
# Just need to make sure that these vars match the XXX portion of the REPLACETAG
10
####################################################################################################
11
 
12
getList()
13
{
14
    sed -n '
15
    :start
16
    /<REPLACETAG/{
17
        :leading
18
        /^<REPLACETAG/!{
19
            # while replace tag not at beginning of line remove leading chars
20
            s/^<\{0,1\}[^<]*//
21
            b leading
22
        }
23
        # we now should have replace tag at start of line
24
        # save line
25
        h
26
        # print 1st REPLACETAG, ie remove all after tag and print line
27
        s/^<\(REPLACETAG[^>]*\)>.*$/\1/p
28
        #restore orignial line & remove printed replace & jump to start to see if any more on same line
29
        x
30
        s/^<REPLACETAG[^>]*>\(.*\)$/\1/
31
        b start
32
    }' $1 | sort | uniq | awk 'BEGIN { ORS=" " } { print $0 }'
33
}
34
 
35
Warn=
36
 
37
while read src dest
38
do  
39
    if [ "$src" != "/dev/null" ]; then
40
        # Get list of REPLACETAG- in current file
41
        LIST=`getList $src`
42
        Msg=
43
        sedArgs=
44
 
45
        for tag in $LIST
46
        do
47
            # Remove REPLACETAG- from front of tag to get the enviroment var name
48
            var=`echo $tag | sed 's|^REPLACETAG-||'`
49
            # now eval the name and expand the var to get contents into repl
50
            repl=`eval echo \\$$var`
51
 
52
            if [ -n "$repl" ]; then
53
                Msg="$Msg    [$tag=$repl]\n"
54
                sedArgs="$sedArgs -e 's|<$tag>|$repl|g'"
55
            else
56
                Warn="$Warn===>WARNING: Install Environment Var [$var] does not exist for replacement in [$dest]\n"
57
            fi
58
        done
59
 
60
        installf -c replace $PKGINST $dest f
61
        if [ -n "$sedArgs" ]; then
62
            printf "$dest <Replacements as follows>\n$Msg"
63
            eval sed $sedArgs $src > $dest
64
        else
65
            printf "$dest <No Replacements Found>\n$Msg"
66
            cp $src $dest
67
        fi
68
    fi
69
done
70
 
71
if [ "$1" = "ENDOFCLASS" ]; then
1570 gchristi 72
#   Dont do the -f option here as it stops the package from setting the modtimes of the
73
#   resultant files to the value in the pkgmap file. 
74
#   The files are already in pkgmap and pkgadd will do its own finalise on completion
75
#    installf -f -c replace $PKGINST
1530 dpurdie 76
    echo "Replacements Completed"
77
    if [ -n "$Warn" ]; then
78
        printf "$Warn"
79
    fi
80
fi
81
 
82
 
83
 
84
 
85
 
86
 
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94
 
95
 
96
 
97
 
98
 
99
 
100
 
101
 
102
 
103
 
104