• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
7function ask_filename
8{
9	echo -n "What is the class name? ";
10}
11
12function ask_brief
13{
14	CLASS_NAME=$1
15	echo "Please brief the class ${CLASS_NAME}: "
16}
17
18function 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
53function 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
88function 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
98function 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
124function 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
136function 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