Home | History | Annotate | Download | only in scripts
      1 #!/bin/bash
      2 #                     The MCLinker project
      3 #
      4 # This file is distributed under the University of Illinois Open Source
      5 # License. See LICENSE.TXT for details.
      6 
      7 function ask_filename
      8 {
      9 	echo -n "What is the class name? ";
     10 }
     11 
     12 function ask_brief
     13 {
     14 	CLASS_NAME=$1
     15 	echo "Please brief the class ${CLASS_NAME}: "
     16 }
     17 
     18 function copy_template_header
     19 {
     20 	local NAME=$1
     21 	local DEPLOYMENT=$2
     22 	local TARGET_FILE="${MCLINKERTOP}/include/mcld/${DEPLOYMENT}/${NAME}.h";
     23 	local SOURCE_FILE="${MCLINKERTOP}/templates/header.h";
     24 	mkdir -p ${MCLINKERTOP}/include/mcld/${DEPLOYMENT}
     25 	cp ${SOURCE_FILE} ${TARGET_FILE}
     26 	# replace the template name by target flie name and adjust the padding of '-'
     27 	local header_str="header";
     28 	PADDING_LEN=`expr ${#header_str} - ${#NAME}`;
     29 	ABS_PADDING_LEN=${PADDING_LEN};
     30 	PADDING="";
     31 
     32 	if [ "${PADDING_LEN}" -lt "0" ]; then
     33 		ABS_PADDING_LEN=`expr ${ABS_PADDING_LEN} \* -1`;
     34 	fi
     35 	for (( i=0; i < ${ABS_PADDING_LEN}; i = i + 1 )); do
     36 		PADDING="${PADDING}-";
     37 	done
     38 
     39 	if [ "${PADDING_LEN}" -gt "0" ]; then # replace and add padding
     40 		sed -e "s/header.h /${NAME}.h ${PADDING}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     41 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     42 	elif [ "${PADDING_LEN}" -lt "0" ]; then # replace and strip padding
     43 		sed -e "s/header.h ${PADDING}/${NAME}.h /g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     44 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     45 	else # replace directly
     46 		sed -e "s/header/${NAME}/g" ${TARGET_FILE} >  ${TARGET_FILE}.tmp
     47 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     48 	fi
     49 
     50 	echo "${TARGET_FILE}";
     51 }
     52 
     53 function copy_template_impl
     54 {
     55 	local NAME=$1
     56 	local DEPLOYMENT=$2
     57 	local TARGET_FILE="${MCLINKERTOP}/lib/${DEPLOYMENT}/${NAME}.cpp";
     58 	local SOURCE_FILE="${MCLINKERTOP}/templates/impl.cpp";
     59 	mkdir -p ${MCLINKERTOP}/lib/${DEPLOYMENT}
     60 	cp ${SOURCE_FILE} ${TARGET_FILE}
     61 	# replace the template name by target flie name and adjust the padding of '-'
     62 	local impl_str="impl";
     63 	PADDING_LEN=`expr ${#impl_str} - ${#NAME}`;
     64 	ABS_PADDING_LEN=${PADDING_LEN};
     65 	PADDING="";
     66 	if [ "${PADDING_LEN}" -lt "0" ]; then
     67 		ABS_PADDING_LEN=`expr ${ABS_PADDING_LEN} \* -1`;
     68 	fi
     69 
     70 	for (( i = 0; i < ${ABS_PADDING_LEN}; i = i + 1 )); do
     71 		PADDING="${PADDING}-";
     72 	done
     73 
     74 	if [ "${PADDING_LEN}" -gt "0" ]; then # replace and add padding
     75 		sed -e "s/impl.cpp /${NAME}.cpp ${PADDING}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     76 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     77 	elif [ "${PADDING_LEN}" -lt "0" ]; then # replace and strip padding
     78 		sed -e "s/impl.cpp ${PADDING}/${NAME}.cpp /g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     79 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     80 	else # replace directly
     81 		sed -e "s/impl/${NAME}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     82 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     83 	fi
     84 
     85 	echo "${TARGET_FILE}";
     86 }
     87 
     88 function replace_author
     89 {
     90 	local TARGET_FILE=$1
     91 	shift
     92 	local AUTHOR=$*
     93 
     94 	sed -e "s/\${AUTHOR}/${AUTHOR}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
     95 	mv ${TARGET_FILE}.tmp ${TARGET_FILE}
     96 }
     97 
     98 function repalce_email
     99 {
    100 	local TARGET_FILE=$1
    101 	local EMAIL=$2
    102 	sed -e "s/\${EMAIL}/${EMAIL}/g" ${TARGET_FILE}  > ${TARGET_FILE}.tmp
    103 	mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    104 
    105 	# adjust the length of header
    106 	NEW_SPACE=`grep '>                                                    *' ${TARGET_FILE} | wc -c`
    107 	NEW_SPACE=`expr 79 - ${NEW_SPACE}`
    108 	ADDEND=">";
    109 	if [ "${NEW_SPACE}" -gt "0" ]; then # add space
    110 		for (( i=0; i<${NEW_SPACE}; i=i+1 )); do
    111 			ADDEND="${ADDEND} ";
    112 		done
    113 		sed -e "s/${EMAIL}>/${EMAIL}${ADDEND}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
    114 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    115 	elif [ "${NEW_SPACE}" -lt "0" ]; then # strip space
    116 		for (( i=${NEW_SPACE}; i<0; i=i+1 )); do
    117 			ADDEND="${ADDEND} ";
    118 		done
    119 		sed -e "s/${EMAIL}${ADDEND}/${EMAIL}>/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
    120 		mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    121 	fi
    122 }
    123 
    124 function replace_class
    125 {
    126 	local TARGET_FILE=$1
    127 	local CLASS_NAME=$2
    128 	local UPCLASS_NAME=`echo ${CLASS_NAME} | tr [:lower:] [:upper:]`
    129 
    130 	sed -e "s/\${class_name}/${CLASS_NAME}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
    131 	mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    132 	sed -e "s/\${CLASS_NAME}/${UPCLASS_NAME}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
    133 	mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    134 }
    135 
    136 function replace_brief
    137 {
    138 	local TARGET_FILE=$1
    139 	shift
    140 	local BRIEF=$*
    141 	sed -e "s/\${brief}/${BRIEF}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp
    142 	mv ${TARGET_FILE}.tmp ${TARGET_FILE}
    143 }
    144 
    145