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