diff options
Diffstat (limited to 'sofort.sh')
-rwxr-xr-x | sofort.sh | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/sofort.sh b/sofort.sh new file mode 100755 index 0000000..951e0eb --- /dev/null +++ b/sofort.sh @@ -0,0 +1,122 @@ +#!/bin/sh + +usage() +{ +cat << EOF >&2 + +Usage: + -h show this HELP message + -d DSTDIR set destination directory + -p PROJECT set project name (i.e. sofort) + -n PREFIX set namespace prefix (i.e. sfrt) + +EOF +exit 1 +} + +error_dstdir_exists() +{ + echo "the destination directory '$dstdir' already exists!" >&2 + exit 2 +} + +# one: args +dstdir= +project= +namespace= + +srcdir=`dirname $0` || exit 2 +cd "$srcdir" || exit 2 +srcdir=`pwd` || exit 2 + +while getopts "hd:p:n:" opt; do + case $opt in + h) + usage + ;; + d) + dstdir="$OPTARG" + ;; + p) + project="$OPTARG" + ;; + n) + namespace="$OPTARG" + ;; + \?) + printf "Invalid option: -%s" "$OPTARG" >&2 + usage + ;; + esac +done + +# two: clone +if [ -z "$dstdir" ] || [ -z "$project" ] || [ -z "$namespace" ]; then + usage +fi + +stat "$dstdir" >/dev/null 2>/dev/null && error_dstdir_exists +mkdir -p "$(dirname $dstdir)" || exit 2 +cp -r "$srcdir" "$dstdir" || exit 2 +rm "$dstdir"/sofort.sh || exit 2 +rm -rf "$dstdir"/.git || exit 2 + +# three: content +cd "$dstdir" || exit 2 +files=$(find . -type f) +lowerspace=`echo "$namespace" | tr '[:upper:]' '[:lower:]'`_ +upperspace=`echo "$namespace" | tr '[:lower:]' '[:upper:]'`_ + +for f in $files; do + sed -e s/sofort/$project/g "$f" > "$f.tmp" || exit 2 + mv "$f.tmp" "$f" || exit 2 + + sed -e s/sfrt_/$lowerspace/g "$f" > "$f.tmp" || exit 2 + mv "$f.tmp" "$f" || exit 2 + + sed -e s/sfrt_/$upperspace/g "$f" > "$f.tmp" || exit 2 + mv "$f.tmp" "$f" || exit 2 +done + +# four: directory names +mv include/sofort include/$project || exit 2 +dirs=$(find . -type d) + +for d in $dirs; do + name=`echo "$d" | sed -e s/sfrt_/$lowerspace/g -e s/sofort/$project/g` + + if [ "$d" != "$name" ]; then + mv "$d" "$name" || exit 2 + fi +done + +# five: file names +files=$(find . -type f) + +for f in $files; do + name=`echo "$f" | sed -e s/sfrt_/$lowerspace/g -e s/sofort/$project/g` + + if [ "$f" != "$name" ]; then + mv "$f" "$name" || exit 2 + fi +done + +# six: references +cp "$srcdir"/COPYING.SOFORT "$dstdir" || exit 2 + +# seven: finalize +uppername=`echo "$project" | tr '[:lower:]' '[:upper:]'` +utilcsrc=src/$project.c + +sed -e s/SOFORT/$uppername/g $utilcsrc> $utilcsrc.tmp || exit 2 +mv $utilcsrc.tmp $utilcsrc || exit 2 + +touch COPYING.$uppername || exit 2 +echo "$project: project description" > README || exit 2 + +chmod +x sysinfo/host/host.sh || exit 2 +chmod +x sysinfo/version.sh || exit 2 +chmod +x ./configure || exit 2 + +# all done +exit 0 |