#!/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@-@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