newapkbuild.in 1.93 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/bin/sh

# script to generate a new APKBUILD
# Copyright (c) 2009 Natanael Copa <natanael.copa@gmail.com>
#
# Distributed under GPL-2
#
# Depends on: busybox utilities, fakeroot, 
#

version=@VERSION@
sysconfdir=@sysconfdir@
datadir=@datadir@

prog=${0##*/}

error() {
	echo "$@" >&2
}

21 22 23 24 25 26 27
is_url() {
	case "$1" in
	http://*|ftp://*) return 0;;
	esac
}

	
28 29
# create new aport from templates
newaport() {
30
	local newname="${1##*/}"
31 32
	local pn=${newname%-[0-9]*}
	local pv
33 34 35
	local source=
	is_url "$1" && source="$1"

36 37
	if [ "$pn" != "$newname" ]; then
		pv=${newname#$pn-}
38
		pv=${pv%.t*} #strip .tar.gz .tgz .tar.bz2 etc
39 40 41 42 43 44 45 46 47 48 49 50 51
	fi
	if [ -e "$pn"/APKBUILD ] && [ -z "$force" ]; then
		error "$pn/APKBUILD already exist"
		return 1
	fi
	mkdir -p "$pn"
	cd "$pn"
	sed 	-e '1,/^\#*$/d' \
		-e "s/^\(# Contributor: \).*/\1$PACKAGER/" \
		-e "s/^\(# Maintainer: \).*/\1$PACKAGER/" \
		-e "s/^pkgname=.*/pkgname=$pn/" \
		-e "s/^pkgver=.*/pkgver=$pv/" \
		"$datadir"/sample.APKBUILD > APKBUILD || return 1
52 53 54
	if [ -n "$source" ]; then
		sed -i -e "/^source=/s|=.*|=\"$source\"|" APKBUILD || return 1
	fi
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
	#-e '1,/^\#$/d' \
	if [ -n "$cpinitd" ]; then
		cp "$datadir"/sample.initd $pn.initd
		cp "$datadir"/sample.confd $pn.confd
		cp "$datadir"/sample.pre-install $pn.pre-install
		cp "$datadir"/sample.post-install $pn.post-install
		sed -i -e "s/^install=.*/install=\"\$pkgname.pre-install \$pkgname.post-install\"/" \
			-e "s/^source=\"\(.*\)\"/source=\"\1\n\t$pn.initd\n\t$pn.confd\n\t\$install\n\t\"/" \
			APKBUILD
		
	fi
}

usage() {
	echo "$prog $version"
	echo "usage: $prog [-cfh] PKGNAME[-PKGVER]"
	echo "Options:"
	echo " -c  Copy a sample init.d, conf.d and install script to new directory"
	echo " -f  Force even if directory already exist"
	echo " -h  Show this help"
	echo ""
	exit 0
}

while getopts "cfh" opt; do
	case $opt in
		'c') cpinitd=1;;
		'f') force=1;;
		'h') usage;;
	esac
done
shift $(( $OPTIND - 1 ))

while [ $# -gt 0 ]; do 
	newaport $1 || exit 1
	shift
done