Home | History | Annotate | Download | only in bin
      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
     21 MCLINKER_CONFIG_DIR=$HOME/.bold
     22 AUTHOR=
     23 EMAIL=
     24 CLASS_NAME=
     25 BRIEF=
     26 FILE_TYPE=
     27 
     28 # 0. watch configuration
     29 if [ -d "${MCLINKER_CONFIG_DIR}" ]; then
     30 	if [ -f "${MCLINKER_CONFIG_DIR}/config" ]; then
     31 		source ${MCLINKER_CONFIG_DIR}/config
     32 	fi
     33 else
     34 	mkdir ${MCLINKER_CONFIG_DIR}
     35 fi
     36 
     37 # 1. ask name
     38 #  i. write back to configuration
     39 if [ -z "${AUTHOR}" ]; then
     40 	echo -n "name? ";
     41 	read AUTHOR
     42 	echo "AUTHOR=\"${AUTHOR}\"" >> ${MCLINKER_CONFIG_DIR}/config
     43 fi
     44 
     45 # 2. ask email
     46 #  i. write back to configuration
     47 if [ -z "${EMAIL}" ]; then
     48 	echo -n "e-mail? ";
     49 	read EMAIL
     50 	echo "EMAIL=\"${EMAIL}\"" >> ${MCLINKER_CONFIG_DIR}/config
     51 fi
     52 
     53 # 3. ask file type
     54 echo "What type of files you want to create?";
     55 echo " 1) normal source code"
     56 echo " 2) test case"
     57 
     58 while [ -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
     71 done
     72 
     73 # 3.i ask deployment
     74 if [ "${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
     97 fi
     98 
     99 # 3.ii ask Target
    100 if [ "${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}"
    125 fi
    126 
    127 # 4. ask file name
    128 ask_filename
    129 read CLASS_NAME
    130 
    131 ask_brief ${CLASS_NAME}
    132 read BRIEF
    133 
    134 # 5. copy the templates
    135 TARGET_FILE=$(copy_template_header ${CLASS_NAME} ${DEPLOYMENT})
    136 
    137 # 6. replace the keywords
    138 replace_author  ${TARGET_FILE} ${AUTHOR}
    139 repalce_email ${TARGET_FILE} ${EMAIL} 
    140 replace_class ${TARGET_FILE} ${CLASS_NAME} 
    141 replace_brief ${TARGET_FILE} ${BRIEF}
    142 
    143 # 5. copy the templates
    144 TARGET_FILE=$(copy_template_impl ${CLASS_NAME} ${DEPLOYMENT})
    145 
    146 # 6. replace the keywords
    147 replace_author  ${TARGET_FILE} ${AUTHOR}
    148 repalce_email ${TARGET_FILE} ${EMAIL} 
    149 replace_class ${TARGET_FILE} ${CLASS_NAME} 
    150 replace_brief ${TARGET_FILE} ${BRIEF}
    151