#!/bin/sh
###
# = gforge.sh(3)
# Albar Boris <elentir@mailoo.org>
#
# == NAME
# gforge.sh - for Frugalware
#
# == SYNOPSIS
# Common schema for packages hosted on a Gforge based repository.
#
# == EXAMPLE
# --------------------------------------------------
# pkgname=ecm
# pkgver=6.2.1
# pkgrel=1
# pkgdesc="Elliptic Curve Method for Integer Factorization"
# depends=('gmp')
# groups=('apps-extra')
# archs=('i686')
# sha1sums=('bb08c4f1b412110ef64572c387baa5bc45ae8a60')
# _F_gforge_repo="http://gforge.inria.fr"
# Finclude gforge
# --------------------------------------------------
#
# == OPTIONS
# * _F_gforge_name ( defaults to $pkgname)
# * _F_gforge_repo (defaults to http://gforge.org): the gforge repository
# to use
# * _F_gforge_dirname (default to $pkgname): if the source
# tarball uses a name different to the gforge project name, then use this
# option to declare the project name
# * _F_gforge_ext (defaults to .tar.gz): extension of the source tarball
# * _F_gforge_pkgver ( defaults to $pkgver ) : Some packages are called foo-1.2.3
# * _F_gforge_sep ( defaults to - ): used for source() and up2date. As example
# for an "bar_1.2.3.tar.gz" tarball you should use _F_gforge_sep="_" , for empty
# values use _F_gforge_sep="None" that way you can dowload such foo1234.tgz
# but the source is called different from $pkgver , e.g: foo-123 , foo-12.3 , in such
# a case _F_gforge_pkgver may help to avoid custom $source
# * _F_gforge_id ( defaults autodetect ) : In case of audetection failed
###

if [ -z "$_F_gforge_name" ]; then
        _F_gforge_name=$pkgname
fi

if [ -z "$_F_gforge_pkgver" ]; then
	_F_gforge_pkgver=$pkgver
fi

if [ -z "$_F_gforge_repo" ]; then
	_F_gforge_repo="http://gforge.org"
fi

if [ -z "$_F_gforge_ext" ]; then
	_F_gforge_ext=".tar.gz"
fi

if [ -z "$_F_gforge_dirname" ]; then
	_F_gforge_dirname=$pkgname
fi

if [ -z "$_F_gforge_sep" ]; then
	_F_gforge_sep="-"
fi

if [ -n "$_F_gforge_sep" ] && [ "$_F_gforge_sep" = "None" ]; then
        _F_gforge_sep=""
fi

if [ -z "$_F_gforge_id" ]; then
_F_gforge_id=$(lynx -dump $_F_gforge_repo/projects/$_F_gforge_dirname | grep "group_id=" |sed 's/.*=\(.*\)/\1/;s///;q')
fi

###
# == OVERWRITTEN VARIABLES
# * url
# * up2date
# * source()
###
_F_gforge_url="$_F_gforge_repo/projects/$_F_gforge_dirname"
if [ -z "$url" ]; then
	url="$_F_gforge_url"
fi
up2date="lynx -dump $_F_gforge_repo/frs/?group_id=$_F_gforge_id | grep -m1 '$_F_gforge_name$_F_gforge_sep\(.*\)$_F_gforge_ext'| sed 's/.*$_F_gforge_name$_F_gforge_sep\(.*\)$_F_gforge_ext.*/\1/;s/-/_/g;s/$pkgextraver//'"

# do an ugly trick because download urls contains arbitrary directories for each different files
source=$(lynx -dump $_F_gforge_repo/frs/?group_id=$_F_gforge_id | grep "download" |grep -m1 $_F_gforge_name$_F_gforge_sep$_F_gforge_pkgver$_F_gforge_ext | cut -d ' ' -f 4-)
