summaryrefslogtreecommitdiffstats
path: root/src/main/swm/common/utils/findreplace.sh
blob: efd8a779085775c97f0ff111b35fd80feccc4022 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
#*******************************************************************************
#  ============LICENSE_START=======================================================
#  org.onap.dmaap
#  ================================================================================
#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
#  ================================================================================
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#        http://www.apache.org/licenses/LICENSE-2.0
#  
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#  ============LICENSE_END=========================================================
#
#  ECOMP is a trademark and service mark of AT&T Intellectual Property.
#  
#*******************************************************************************
# Copyright 2011 AT&T Intellectual Properties
##############################################################################
# findreplace.sh <template> <destination>
#
#     This script searches a provided file for templatized variable names
#     in the format __varname__ and, if found in the current environment
#     replaces those.  Once complete, it will move the final copy of the file
#     to <destination>.
#
##############################################################################
TEMPLATE=${1:?"Template file path required"}
DESTINATION=${2:?"Destination file path required"}

if [ ! -f "${TEMPLATE}" ]; then
    echo "ERROR: Specified template file does not exist: ${TEMPLATE}"
    exit 100
fi

DIRECTORY=`dirname ${DESTINATION}`
if [ ! -d "${DIRECTORY}" ]; then
    echo "ERROR: Destination directory does not exist: ${DIRECTORY}"
    exit 200
fi

SED_SCR=/tmp/sed.$$
echo "{" > ${SED_SCR}

# create a sed script for replacing variables from current environment
for  i in `env | awk -F= '{ print $1}'`; do
    if [ "$i" = "IFS" ] ; then
       continue;
    fi

    VALUE=`eval echo '$'${i}` || {
        echo 'WARNING: Unable to format '${i}' for sed replacement'
        continue;
    }
    
    for x in '@' '^' '&' '?' '#' '~' '%' '|' '+' '/'; do
        echo ${VALUE} | grep "$x" 2>/dev/null 1>/dev/null
        if [ $? != 0 ]; then
            CCHAR="$x"
            break
        fi
    done
    
    if [ -z "${CCHAR}" ]; then
        echo "WARNING: Unable to find a suitable sed replacement character for ${VALUE}, will ignore setting ${KEY} in templates"
        continue;
    fi
    
    echo "      s${CCHAR}__${i}__${CCHAR}${VALUE}${CCHAR}g" >> ${SED_SCR}
done

sed -e 's/\\\@/\\\\@/g' ${SED_SCR} > ${SED_SCR}.1 || exit 300

if [ -f ${DESTINATION} ]; then
	TIMESTAMP=`date +%Y%m%d%H%M%S`
	o_dir=`dirname ${DESTINATION}`
	o_file=`basename ${DESTINATION}`
    mv ${DESTINATION} ${o_dir}/bu.${o_file}.${TIMESTAMP}
fi

mv -f ${SED_SCR}.1 ${SED_SCR} || exit 400

echo "}" >> ${SED_SCR} || exit 500

sed -f ${SED_SCR} ${TEMPLATE} > ${DESTINATION} || exit 600

rm -f $SED_SCR

exit 0