Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-tools.git;a=commitdiff;h=5d0657e8b280d09716438d324128078c8691a49e

commit 5d0657e8b280d09716438d324128078c8691a49e
Author: Miklos Vajna <[EMAIL PROTECTED]>
Date:   Thu May 15 02:26:31 2008 +0200

repoman: implement server mktemp/upload

diff --git a/repoman b/repoman
index 8202317..c241cb2 100755
--- a/repoman
+++ b/repoman
@@ -109,7 +109,41 @@ server()
;;
mktemp)
shift
-               mktemp -p $HOME 2>/dev/null
+               local tmp="`mktemp -p $HOME 2>/dev/null`"
+               if [ -z "$tmp" ]; then
+                       echo "Failed to get a temporary file :-/" >&2
+               else
+                       echo $tmp
+               fi
+               ;;
+               upload)
+               shift
+               if [ $# -lt 5 ]; then
+                       echo "Too few parameters!"
+                       echo "usage: repoman server upload user path 
yourtmpfile sha1 targetfile"
+                       return
+               fi
+               local sudouser="$1" path="$2" tmp="$3" sha="$4" dest="$5"
+               shift 5
+               if [ -n "$sudouser" ]; then
+                       sudo_cmd="$sudo_env -u $sudouser"
+               else
+                       sudo_cmd=""
+               fi
+               if [ "${path:0:1}" != "/" ]; then
+                       echo "Please use absolute paths in repoman.conf!"
+                       return
+               fi
+               cd $path
+               if ! echo "$sha  $tmp" |sha1sum -c - >/dev/null 2>&1; then
+                       echo "The uploaded file is corrupted :-/"
+                       rm $tmp
+                       return
+               fi
+               chmod 644 $tmp
+               # strip leading / and any ..
+               $sudo_cmd ln $tmp "`echo $dest|sed 's|^/||;s|\.\./||g'`"
+               rm $tmp
;;
*)
echo "Unknown server command!"
@@ -138,32 +172,17 @@ upload()
fi
check_servers
sudouser=$(eval "echo \$${reponame}_sudo")
-       if [ -n "$sudouser" ]; then
-               sudo_cmd="$sudo_env -u $sudouser"
-       else
-               sudo_cmd=""
-       fi
-       # Strip leading / and any ..
-       dest=`echo ${@:$#} |sed 's|^/||;s|\.\./||g'`
+       dest=${@:$#}
for src in "${@:1:$#-1}"
do
name=`basename $src`
msg "Requesting a temporary file"
tmp=`ssh $host repoman server mktemp`
-               if [ -z "$tmp" ]; then
-                       echo "Failed to get a temporary file :-/"
-                       exit 1
-               fi
+               [ -z "$tmp" ] && exit 1
msg "Uploading file: $src (to $tmp)"
scp $src $host:$tmp
-               if echo "`sha1sum $src|sed 's/\(.*\)  .*/\1/'`  $tmp" |ssh 
$host sha1sum -c - >/dev/null 2>&1; then
-                       msg "Copying to $dest"
-                       ssh $host "chmod 644 $tmp; $sudo_cmd cp $tmp 
$path/$dest/$name && rm $tmp"
-               else
-                       echo "The uploaded file is corrupted :-/"
-                       ssh $host "rm $tmp"
-                       exit 1
-               fi
+               sha=`sha1sum $src|sed 's/\(.*\)  .*/\1/'`
+               ssh $host "repoman server upload '$sudouser' '$path' '$tmp' 
'$sha' '$dest/$src'"
done
}
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to