• 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
7############################
8# Design Pattern - Builder, using BASH
9# 0. watch configuration
10# 1. ask name
11# 2. ask email
12#  i. write back to configuration
13# 3. ask file type
14#  i. ask deployment
15# 4. ask file name
16# 5. copy templates
17# 6. replace the keywords
18
19############################
20# Variable Dictionary
21MCLINKER_CONFIG_DIR=$HOME/.bold
22AUTHOR=
23EMAIL=
24CLASS_NAME=
25BRIEF=
26FILE_TYPE=
27
28# 0. watch configuration
29if [ -d "${MCLINKER_CONFIG_DIR}" ]; then
30	if [ -f "${MCLINKER_CONFIG_DIR}/config" ]; then
31		source ${MCLINKER_CONFIG_DIR}/config
32	fi
33else
34	mkdir ${MCLINKER_CONFIG_DIR}
35fi
36
37# 1. ask name
38#  i. write back to configuration
39if [ -z "${AUTHOR}" ]; then
40	echo -n "name? ";
41	read AUTHOR
42	echo "AUTHOR=\"${AUTHOR}\"" >> ${MCLINKER_CONFIG_DIR}/config
43fi
44
45# 2. ask email
46#  i. write back to configuration
47if [ -z "${EMAIL}" ]; then
48	echo -n "e-mail? ";
49	read EMAIL
50	echo "EMAIL=\"${EMAIL}\"" >> ${MCLINKER_CONFIG_DIR}/config
51fi
52
53# 3. ask file type
54echo "What type of files you want to create?";
55echo " 1) normal source code"
56echo " 2) test case"
57
58while [ -z "${FILE_TYPE}" ]; do
59	echo -n "your choice? ";
60	read FILE_TYPE
61
62	case "$FILE_TYPE" in
63	1 ) source ${MCLINKERTOP}/scripts/normal_files.sh;
64		FILE_TYPE="normal";
65		;;
66	2 ) source ${MCLINKERTOP}/scripts/test_files.sh;
67		FILE_TYPE="testcase";
68		;;
69	* ) FILE_TYPE="" ;;
70	esac
71done
72
73# 3.i ask deployment
74if [ "${FILE_TYPE}" = "normal" ]; then
75	echo "Where you what to deploy?";
76	echo " 1) ADT"
77	echo " 2) MC"
78	echo " 3) Target"
79	echo " 4) CodeGen"
80	echo " 5) Support"
81	echo " 6) LD"
82
83	while [ -z "${DEPLOYMENT}" ]; do
84		echo -n "your choice? ";
85		read DEPLOYMENT
86
87		case "${DEPLOYMENT}" in
88		1 ) DEPLOYMENT="ADT";;
89		2 ) DEPLOYMENT="MC";;
90		3 ) DEPLOYMENT="Target";;
91		4 ) DEPLOYMENT="CodeGen";;
92		5 ) DEPLOYMENT="Support";;
93		6 ) DEPLOYMENT="LD";;
94		* ) DEPLOYMENT="";;
95		esac
96	done
97fi
98
99# 3.ii ask Target
100if [ "${DEPLOYMENT}" = "Target" ]; then
101	echo "What is your Target?";
102	echo " 1) Target"
103	echo " 2) Target/ARM"
104	echo " 3) Target/X86"
105	echo " 4) Target/Mips"
106
107	while [ -z "${TARGET}" ]; do
108		echo -n "your choice? ";
109		read TARGET
110		case "${TARGET}" in
111		1 ) TARGET=".";;
112		2 ) TARGET="ARM"
113		    source ${MCLINKERTOP}/scripts/target_files.sh;
114			;;
115		3 ) TARGET="X86"
116		    source ${MCLINKERTOP}/scripts/target_files.sh;
117			;;
118		4 ) TARGET="Mips"
119		    source ${MCLINKERTOP}/scripts/target_files.sh;
120			;;
121		* ) TARGET="";;
122		esac
123	done
124	DEPLOYMENT="${DEPLOYMENT}/${TARGET}"
125fi
126
127# 4. ask file name
128ask_filename
129read CLASS_NAME
130
131ask_brief ${CLASS_NAME}
132read BRIEF
133
134# 5. copy the templates
135TARGET_FILE=$(copy_template_header ${CLASS_NAME} ${DEPLOYMENT})
136
137# 6. replace the keywords
138replace_author  ${TARGET_FILE} ${AUTHOR}
139repalce_email ${TARGET_FILE} ${EMAIL}
140replace_class ${TARGET_FILE} ${CLASS_NAME}
141replace_brief ${TARGET_FILE} ${BRIEF}
142
143# 5. copy the templates
144TARGET_FILE=$(copy_template_impl ${CLASS_NAME} ${DEPLOYMENT})
145
146# 6. replace the keywords
147replace_author  ${TARGET_FILE} ${AUTHOR}
148repalce_email ${TARGET_FILE} ${EMAIL}
149replace_class ${TARGET_FILE} ${CLASS_NAME}
150replace_brief ${TARGET_FILE} ${BRIEF}
151