#!/bin/bash log() { echo $@ } err() { log $@ } fatal() { err $@ exit 1 } usage() { echo "$myname [-h] [-s summary] [-d description] [-g pkg-group] name" [ "$1" ] && exit $1 } cat_Makefile() { cat <<-EOT TOPDIR = . include \$(TOPDIR)/make/proj.mk include \$(MODDIR)/make/topdir.mk EOT } cat_VERSION() { cat <<-EOT 1.0.0-0-dev EOT } cat_make_Makefile() { cat <<-EOT TOPDIR = .. include \$(TOPDIR)/make/proj.mk include \$(MODDIR)/make/make.mk EOT } cat_make_proj_mk() { cat <<-EOT # to be included from inside the project directory CVS_PROJ_DIR ?= \$(TOPDIR)/.. ifeq (\$(TARGET),mingw) FLAVOUR_PATH_PREFIX = win32/ endif MODDIR = \$(firstword \$(wildcard \$(CVS_PROJ_DIR)/jw-build /opt/\$(FLAVOUR_PATH_PREFIX)jw-build)) USE_PROJECT_LIB = false HDRDIR_SCOPE_SUFFIX = \$(PROJECT) EOT } cat_make_project_conf() { local login=`whoami | xargs getent passwd | cut -d: -f5` [ "$login" ] && login=$JANWARE_USER [ "$login" ] && login=`whoami` cat <<-EOT [summary] $summary [description] $description [global] group = "$pkg_group" subpackages = $subpackages license = Copyright (c) $login, all rights reserved jw-maintainer = $JANWARE_USER [build] libname = none [pkg.required.jw] run = jw-build-run = VERSION devel = $name-run = VERSION-REVISION, jw-build-devel = VERSION build = jw-build-devel EOT } cat_gitignore() { cat <<-EOT *.done *.dep.mk *.o *.so.* *.so *.a *.rep ld-*.conf *.ldscript *.pc $name *_generated_* *.secret local.mk EOT } # ---------------------- here we go myname=`basename $0` projdir=. summary= description= subpackages="run devel" eval set -- `getopt -- hd:s:p:g: "$@"` while [ "$1" != -- ]; do case $1 in -d) eval description=\"$2\" shift;; -s) eval summary=\"$2\" shift;; -p) eval subpackages=\"$2\" shift;; -g) eval pkg_group=\"$2\" shift;; -h) usage 0;; *) usage 1;; esac shift done shift [ -z "$description" ] && description="$summary" [ -z "$summary" ] && summary="$description" [ -z "$pkg_group" ] && pkg_group="Amusements/Teaching/Other" [ -f $projdir/Makefile ] || { fatal "$projdir doesn't contain a Makefile" } name="$1" [ -d $projdir/$name ] && { fatal "$projdir/$name already exists" } set -e mkdir -p $projdir mkdir $name cd $projdir/$name mkdir make cat_Makefile > Makefile cat_make_Makefile > make/Makefile cat_VERSION > VERSION cat_make_proj_mk > make/proj.mk cat_make_project_conf > make/project.conf cat_gitignore > .gitignore log Successfully created project template \"$name\".