jw-pkg/scripts/jw-build-create-project.sh
Jan Lindemann 5f9258bdf8 jw-build-create-project.sh: Add *.swp to .gitignore
Signed-off-by: Jan Lindemann <jan@janware.com>
2020-04-05 12:54:49 +00:00

194 lines
2.8 KiB
Bash

#!/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
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\".