lw-build-system/scripts/module-create.sh

124 lines
2.7 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# lw-build-system/scripts/module-create.sh
#
# Copyright: ©20062010, 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