diff --git a/scripts/jw-build-create-project.sh b/scripts/jw-build-create-project.sh new file mode 100644 index 00000000..d160096b --- /dev/null +++ b/scripts/jw-build-create-project.sh @@ -0,0 +1,197 @@ +#!/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 \$(JWBDIR)/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 \$(JWBDIR)/make/make.mk + EOT +} + +cat_make_proj_mk() +{ + cat <<-EOT + # to be included from inside the project directory + + DEV_PROJECTS_DIR ?= \$(TOPDIR)/.. + ifeq (\$(TARGET),mingw) + FLAVOUR_PATH_PREFIX = win32/ + endif + JWBDIR ?= \$(firstword \$(wildcard \$(DEV_PROJECTS_DIR)/jw-build \$(BUILD_TOOLS_PREFIX)/opt/\$(FLAVOUR_PATH_PREFIX)jw-build)) + + USE_PROJECT_LIB = false + HDRDIR_SCOPE_SUFFIX = \$(PROJECT) + EOT +} + +cat_make_project_conf() +{ + local login=$JANWARE_USER + [ "$login" ] || login=`whoami` + + local fullname=`getent passwd $login | cut -d: -f5` + [ "$fullname" ] || fullname=$JANWARE_USER + [ "$fullname" ] || fullname=`whoami | xargs getent passwd | cut -d: -f5` + [ "$fullname" ] || fullname=`whoami` + + cat <<-EOT + [summary] + $summary + + [description] + $description + + [global] + group = "$pkg_group" + subpackages = $subpackages + license = Copyright (c) $fullname, all rights reserved + jw-maintainer = $JANWARE_USER + + [build] + libname = none + + [pkg.requires.jw] + devel = $name-run = VERSION-REVISION, jw-build-devel = VERSION + build = jw-build-devel + EOT +} + +cat_gitignore() +{ + cat <<-EOT + *.done + *.dist + *.dep.mk + .cache.mk + *.o + *.so.* + *.so + *.a + *.rep + ld-*.conf + *.ldscript + *.pc + $name + *_generated_* + *.secret + local.mk + .gdb_history + dist + mkspec.sh + *.out + *.orig + *.old + .feedfs_history + .exrc + *.swp + *tmp* + __init__.py + __pycache__ + EOT +} + +# ---------------------- here we go + +myname=`basename $0` +projdir=. + +summary= +description= +subpackages="run" + +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\". +