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