#!/bin/bash # # (c)2006, Laurence Withers. Released under the GNU GPL. See file # COPYING for details. # # Used to create a new project. You pass it the template parameters, it # does the rest. # Sanity checks if [ $# -ne 5 ] then echo "Wrong number of arguments. Expecting:" echo " ./install.sh @P@ @PC@ @HEADER_NAME@" echo " dest_dir directory in which project subdir will be created" echo " @P@ package name (e.g. \"libnmc\")" echo " @PC@ C identifier version of @P@, used in header etc." echo " @HEADER_NAME@ name of header (e.g. \"lw-support\" or \"nmc\")" exit 1 fi cd "$(dirname $0)" TEMPLATE=$(dirname "$(pwd)")/skel # Get arguments, include standard functions source scripts/functions.sh || exit 1 DEST_DIR="$1"; shift P="$1"; shift PC="$1"; shift HEADER_NAME="$1"; shift # Copy to destination directory. Deal with the case where the user has # specified the name of the resulting directory, and the case where the # user simply specified where the directory should be created. echo "Copying ${TEMPLATE} directory..." do_cmd cp -rp "${TEMPLATE}" "${DEST_DIR}" || exit 1 cd "${DEST_DIR}" if [ -d "${TEMPLATE}" ] then mv "${TEMPLATE}" "${P}" cd "${P}" fi print_success "Done: $(pwd)" # Move the project files to something more sensible mv project.kdevelop ${P}.kdevelop mv project.kdevelop.filelist ${P}.kdevelop.filelist # Build sed script echo "Changing variables..." echo " Building script" SED_SCRIPT="script.sed" for param in P PC HEADER_NAME do echo "s,@${param}@,${!param},g" >> "${SED_SCRIPT}" done # Create a list of all the files. echo " Building list of files" ALL_FILES=$(find . -type f -not -name script.sed) # Run sed script on all files. echo " Running script" for f in ${ALL_FILES} do do_cmd sed -f "${SED_SCRIPT}" -i "${f}" || exit 1 done print_success "Done" # Print the todo list echo echo " ======== TODO list ========" grep -Hn @TODO@ ${ALL_FILES} print_success "Done" # Clean up rm "${SED_SCRIPT}"