124 lines
2.7 KiB
Bash
Executable File
124 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
||
# lw-build-system/scripts/module-create.sh
|
||
#
|
||
# Copyright: ©2006–2010, Laurence Withers
|
||
# Author: Laurence Withers <l@lwithers.me.uk>
|
||
# License: GPLv3
|
||
#
|
||
|
||
# Creates a new source module.
|
||
|
||
# save a copy of the commandline for the upgrade script
|
||
MODULE_PARAMS="$@"
|
||
|
||
|
||
|
||
# Get the directory of the repository (needed to include functions file)
|
||
cd $(dirname $0)
|
||
cd $(dirname $(pwd))
|
||
P=$(basename $(pwd))
|
||
TOP=$(pwd)
|
||
[ -z "${VERBOSE}" ] && VERBOSE="0"
|
||
source "./scripts/functions.sh" || exit 1
|
||
|
||
|
||
|
||
# Get arguments.
|
||
if [ $# -lt 3 ]
|
||
then
|
||
echo "Usage: scripts/module-create.sh <type> <lang> <name> [args]"
|
||
echo " available modules:"
|
||
for i in scripts/build.*
|
||
do
|
||
echo $i | sed "s,scripts/build\.\([^.]*\)\.\(.*\), module: \1 lang: \2,"
|
||
done
|
||
exit 1
|
||
fi
|
||
TYPE=$1
|
||
shift
|
||
LANG=$1
|
||
shift
|
||
NAME=$1
|
||
shift
|
||
TEMPLATE=scripts/build.${TYPE}.${LANG}
|
||
|
||
if [ ! -e ${TEMPLATE}/instantiate ]
|
||
then
|
||
echo "No such module type."
|
||
exit 1
|
||
fi
|
||
|
||
|
||
|
||
# function to rename a package to a bash/C identifier
|
||
get_cname() {
|
||
echo $1 | tr +-. p__
|
||
}
|
||
|
||
|
||
|
||
# function used to replace variables
|
||
# assumes that we're in the directory to replace files in
|
||
# for each argument X, it will replace @X@ with ${X}
|
||
do_parameter_subst() {
|
||
CNAME=$(get_cname ${NAME})
|
||
do_cmd source "${HOME}/.lwbuildrc" || exit 1
|
||
YEAR="`date +%Y`"
|
||
for param in P YEAR COPYRIGHT NAME CNAME AUTHOR EMAIL VIM_MODELINE KATE_MODELINE $@
|
||
do
|
||
do_cmd_redir sedscript echo "s,@${param}@,${!param},g" || exit 1
|
||
done
|
||
do_cmd find . -type f -a -not -name sedscript -exec sed -f sedscript -i {} \; || exit 1
|
||
do_cmd rm sedscript || exit 1
|
||
}
|
||
|
||
|
||
|
||
# function used to add configuration variables
|
||
# adds variables to the 'config' file; expects name and default value
|
||
# some default default values are given below
|
||
add_config_option() {
|
||
# don't add it if it already exists
|
||
grep -q "{$1}" ../../config && return 0
|
||
|
||
# add the default line
|
||
echo "[ -z \"\${$1}\" ] && $1=\"$2\"" >> ../../config
|
||
}
|
||
COPT_CC_DEFAULT="gcc"
|
||
COPT_CXX_DEFAULT="g++"
|
||
COPT_CFLAGS_DEFAULT="-g -O2 -W -Wall"
|
||
COPT_QTSTUFF_DEFAULT='-I${QTDIR}/include -L${QTDIR}/lib -lqt-mt'
|
||
|
||
|
||
if [ ! -e "src" ]
|
||
then
|
||
do_cmd mkdir src || exit 1
|
||
fi
|
||
|
||
if [ -e "src/${NAME}" ]
|
||
then
|
||
print_failure "Module 'src/${NAME}' already exists"
|
||
exit 1
|
||
fi
|
||
|
||
cleanup() {
|
||
cd ${TOP}
|
||
rm -rf "src/${NAME}"
|
||
print_failure "Removed 'src/${NAME}'"
|
||
exit 1
|
||
}
|
||
|
||
echo "Instantiating module 'src/${NAME}'..."
|
||
do_cmd cp -rL ${TEMPLATE} src/${NAME} || cleanup
|
||
do_cmd cd src/${NAME} || cleanup
|
||
do_cmd rm instantiate || cleanup
|
||
do_cmd_redir .params echo "${MODULE_PARAMS}" || cleanup
|
||
|
||
( source "../../${TEMPLATE}/instantiate" ) || cleanup
|
||
|
||
print_success "Module instantiated"
|
||
grep -r "@TODO@" .
|
||
true
|
||
|
||
# vim: syntax=sh:expandtab:ts=4:sw=4
|