libnetwork.lib: move code from spec-create to the new function git.create_tarball()

Signed-off-by: Davide Madrisan <davide.madrisan@gmail.com>
This commit is contained in:
Davide Madrisan 2012-04-24 22:39:23 +02:00
parent 59ef053eca
commit 0594180470
5 changed files with 120 additions and 51 deletions

View File

@ -32,6 +32,10 @@ Wed Apr 18 2012 Davide Madrisan <davide.madrisan(a)gmail.com>
* autospec.spec - Silvan Calarco: * autospec.spec - Silvan Calarco:
Do not require '/usr/bin/host' in early stage platform development. Do not require '/usr/bin/host' in early stage platform development.
* spec-create, lib/libnetwork.lib - Davide Madrisan:
Move code from spec-create to the new function 'git.create_tarball()' in
libnetwork.lib.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Changes in version 1.9.4 Changes in version 1.9.4

View File

@ -792,3 +792,105 @@ curl $options --user \"***:***\" --quote \"DELE $deletefile\" $1"
[[ "$retval" != "0" && "$exitonerror" = 1 ]] && exit 1 [[ "$retval" != "0" && "$exitonerror" = 1 ]] && exit 1
} }
# function git.create_tarball
# clone a git repository and convert is into a tarball file
#
# args:
# -d,--destdir : target directory
# $@ : git repository
#
# return value:
# 0
#
# set: pck_version, spec_source, spec_source_comment, pck_tarball
function git.create_tarball() {
local ARGS
ARGS=`LC_ALL=C getopt \
-o d:p:u: \
--long destdir:,proxy:,proxy-user: \
-n "$FUNCNAME" -- "$@"`
[ $? = 0 ] || notify.error $"(bug)"" -- $FUNCNAME: "$"\`getopt' error"
local destdir
local proxy proxy_user
eval set -- "$ARGS"
while :; do
case "$1" in
-d|--destdir)
destdir="$2"; shift
notify.debug "$FUNCNAME: destdir = \"$destdir\""
;;
-p|--proxy)
proxy="$2"; shift
notify.debug "$FUNCNAME: proxy = \"$proxy\""
;;
-u|--proxy-user)
proxy_user="$2"; shift
notify.debug "$FUNCNAME: proxy_user = \"$proxy_user\""
;;
--) shift; break;;
*) notify.error $"\
(bug)"" -- $FUNCNAME: "$"\`getopt' error: bad command \`$1'" ;;
esac
shift
done
local git_repository="$1"
notify.debug "$FUNCNAME: git_repository = \"$git_repository\""
[ "$git_repository" ] || notify.error $"\
(bug)"" -- $FUNCNAME: "$"missing mandatory arg"" (#1)"
[ "$destdir" ] || notify.error $"\
(bug)"" -- $FUNCNAME: "$"missing mandatory arg"" (--destdir)"
which git &>/dev/null ||
notify.error $"utility not found"": \`git'"
local tmpgitdir=$(mktemp -q -d -t tmpgit.XXXXXXXX)
[ $? -eq 0 ] ||
notify.error $"can't create temporary files"
notify.debug "$FUNCNAME: tmpgitdir = $tmpgitdir"
pushd $tmpgitdir &>/dev/null
# create a tarball by cloning the git repository
notify.note \
"${NOTE}"$"cloning git repository"" <$git_repository>${NORM}""..."
git clone --quiet "$git_repository"
[ $? -eq 0 ] ||
{ popd &>/dev/null
rm -fr $tmpgitdir
notify.error $"cannot clone git repository"; }
pck_tarball="$(find -mindepth 1 -maxdepth 1 -type d -printf "%f")"
# remove git files
rm -fr $pck_tarball/.git
rm -f $pck_tarball/.gitignore
pck_version="$(date "+%Y%m%dgit")"
mv $pck_tarball ${pck_tarball}-${pck_version}
pck_tarball="${pck_tarball}-${pck_version}"
# create a compressed tarball
tar -cvf ${pck_tarball}.tar $pck_tarball/ >/dev/null &&
bzip2 ${pck_tarball}.tar &&
mv ${pck_tarball}.tar.bz2 $destdir/
[ $? -eq 0 ] ||
{ popd &>/dev/null
rm -fr $tmpgitdir
notify.error $"\
an error occurred while creating"": ${pck_tarball}.tar.bz2"; }
spec_source="${pck_tarball}.tar.bz2"
spec_source_comment="## GITSOURCE $git_repository"
pck_tarball="$destdir/${spec_source}"
popd &>/dev/null
rm -fr $tmpgitdir
return 0
}

View File

@ -474,51 +474,8 @@ function specfile.create() {
local pck_name pck_version local pck_name pck_version
case "$2" in case "$2" in
git://*|http://*.git|https://*.git) git://*|http://*.git|https://*.git)
which git &>/dev/null || git.create_tarball --destdir="$source_dir" "$2"
notify.error $"utility not found"": \`git'"
tmpgitdir=$(mktemp -q -d -t tmpgit.XXXXXXXX)
[ $? -eq 0 ] ||
notify.error $"can't create temporary files"
notify.debug "$FUNCNAME: tmpgitdir = $tmpgitdir"
pushd $tmpgitdir &>/dev/null
# create a tarball by cloning the git repository
notify.note "${NOTE}"$"cloning git repository"" <$2>${NORM}""..."
git clone --quiet "$2"
[ $? -eq 0 ] ||
{ popd &>/dev/null
rm -fr $tmpgitdir
notify.error $"cannot clone git repository"; }
pck_tarball="$(find -mindepth 1 -maxdepth 1 -type d -printf "%f")"
# remove git files
rm -fr $pck_tarball/.git
rm -f $pck_tarball/.gitignore
pck_version="$(date "+%Y%m%dgit")"
mv $pck_tarball ${pck_tarball}-${pck_version}
pck_tarball="${pck_tarball}-${pck_version}"
# create a compressed tarball
tar -cvf ${pck_tarball}.tar $pck_tarball/ >/dev/null &&
bzip2 ${pck_tarball}.tar &&
mv ${pck_tarball}.tar.bz2 $source_dir/
[ $? -eq 0 ] ||
{ popd &>/dev/null
rm -fr $tmpgitdir
notify.error $"\
an error occurred while creating"": ${pck_tarball}.tar.bz2"; }
spec_source="${pck_tarball}.tar.bz2"
spec_source_comment="## GITSOURCE $2"
pck_tarball=$source_dir/${spec_source}
popd &>/dev/null
rm -fr $tmpgitdir
;; ;;
http://*|https://*|ftp://*) http://*|https://*|ftp://*)
pck_tarball="${2##*/}" pck_tarball="${2##*/}"

View File

@ -37,6 +37,9 @@ msgstr "non è un numero"
msgid "missing mandatory arg" msgid "missing mandatory arg"
msgstr "parametro mancante" msgstr "parametro mancante"
msgid "utility not found"
msgstr "programma non trovato"
msgid "can't create temporary files" msgid "can't create temporary files"
msgstr "impossibile creare file temporanei" msgstr "impossibile creare file temporanei"
@ -84,3 +87,12 @@ msgstr "pacchetto non trovato"
msgid "downloading" msgid "downloading"
msgstr "download di" msgstr "download di"
msgid "cloning git repository"
msgstr "clonazione del repository"
msgid "cannot clone git repository"
msgstr "impossibile clonare il repository git"
msgid "an error occurred while creating"
msgstr "si è verificato un errore durante la creazione di"

View File

@ -145,12 +145,6 @@ msgstr "ignorato"
msgid "cannot download" msgid "cannot download"
msgstr "impossibile scaricare" msgstr "impossibile scaricare"
msgid "cloning git repository"
msgstr "clonazione del repository git"
msgid "cannot clone git repository"
msgstr "impossibile clonare il repository git"
msgid "unsupported protocol" msgid "unsupported protocol"
msgstr "protocollo non supportato" msgstr "protocollo non supportato"