[devel] I: gear-massupdate subdir file... [-- gear-update options]

Alexey I. Froloff raorn на altlinux.org
Вс Июн 28 21:17:31 MSD 2009


On Sun, Jun 28, 2009 at 03:59:24PM +0400, Alexey Gladkov wrote:
> > Правильно ли я понял, что эта утилита полезна лишь тогда, когда
> > какой-то проект добавляется в gear из исходников ?
> Если да, то тогда её стоит назвать gear-import и добавить функционал ldv.
Задача сводится к:

1. Распарсить имя файла на название проекта и версию.
2. Заполнить шаблон.

.gear/rules и спек недоступны.

Proof of concept в аттаче.  Не поддерживает тарболы вида
http://ftp.debian.org/debian/pool/main/a/adduser-ng/adduser-ng_0.1.2-1.3.tar.gz

-- 
Regards,
Sir Raorn.
-------------- next part --------------
#!/bin/sh -efu

. gear-sh-functions

name=
version=
file=
parse_filename()
{
	local sep tmp
	name=
	version=
	file="${1##*/}"

	# .(tar(.gz|.bz2.wtf)?|t(gz|bz?2|wtf))
	tmp="${file%.*}"
	tmp="${tmp%.tar}"
	# .orig.tar.gz
	tmp="${tmp%.orig}"

	# name-version-(src|sources|whatever)
	if printf %s "$tmp" | egrep -qse '-[a-z]+$' >/dev/null 2>&1; then
		tmp="${tmp%-*}"
	fi

	# name-version and name_version
	sep=_
	[ -z "${tmp##*_*}" -a -n "${tmp##*_*-*}" ] ||
		sep=-

	name="${tmp%$sep*}"
	version="${tmp#$name$sep}"
}

commit_msg='Imported @file@'
tag_name='@name at -@version@'
tag_msg='@name@ @version@'

subdir="$1" && shift
files=
while [ $# -gt 0 ]; do
	case "$1" in
		--) shift; break;;
		*) files="$files
$1" ;;
	esac
	shift
done

for f in $files; do
	parse_filename "$f"

	tmp_ci_msg="$commit_msg"
	tmp_tag_name="$tag_name"
	tmp_tag_msg="$tag_msg"
	
	subst_key_in_vars '@file@' "$file" tmp_ci_msg tmp_tag_name tmp_tag_msg
	subst_key_in_vars '@name@' "$name" tmp_ci_msg tmp_tag_name tmp_tag_msg
	subst_key_in_vars '@version@' "$version" tmp_ci_msg tmp_tag_name tmp_tag_msg

	git clean -f -d "$subdir"
	gear-update "$@" -- "$f" "$subdir"
	faketime -r "$f" -- git commit -m "$tmp_ci_msg"
	faketime -r "$f" -- git tag -f -m "$tmp_tag_msg" "$tmp_tag_name"
done
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20090628/6fecd63a/attachment.bin>


Подробная информация о списке рассылки Devel