X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=update_meta.sh;h=f569b309edd3fe860e46c8f3336ea161f31e78e8;hb=a8ef45f31f8b990d94552179d087372d65cd8893;hp=61cf44a6f4d3db6578db5c2c34b8edaa1c1a65b7;hpb=7c45b5b141238b6559c694cc21c6436a6aa72031;p=scm%2Fmeta%2Fobs.git diff --git a/update_meta.sh b/update_meta.sh index 61cf44a..f569b30 100755 --- a/update_meta.sh +++ b/update_meta.sh @@ -1,7 +1,8 @@ #!/bin/bash API=https://api.tizen.org -PRJ=${1:-Tizen:Common} +ACTION=${1:-get} +PRJ=${2:-Tizen:Common} PARALLEL_JOBS=8 @@ -18,27 +19,6 @@ function parallel_jobs { done } -cd $(dirname $0) - -# fetch project config -echo "Fetching project config for $PRJ" -osc -A $API meta prjconf $PRJ >_config - -# fetch project meta -echo "Fetching project meta for $PRJ" -osc -A $API meta prj $PRJ >_meta - -# check that each subdir exists on OBS project -shopt -s extglob -for file in $(ls */@(_aggregate|_link)); do - pkg=$(dirname $file) - echo "Checking $pkg" - if ! osc -A $API ls $PRJ $pkg &>/dev/null; then - echo "Package $pkg was removed on OBS. Removing dir $pkg." - git rm -rf $pkg - fi -done - function check_package() { pkg=$1 pkgtype="X" @@ -65,20 +45,61 @@ function check_package() { L) mkdir -p $pkg osc -A $API api /source/$PRJ/$pkg/_link >$pkg/_link - msg="$msg (updated)" + osc -A $API api /source/$PRJ/$pkg/_meta >$pkg/_meta + if grep '/dev/null; then + msg="$msg (updated, with meta)" + else + rm $pkg/_meta + msg="$msg (updated)" + fi ;; *) + content=$(osc -A $API api /source/$PRJ/$pkg/_meta) + if echo $content | grep -q '' ; then + mkdir -p $pkg + echo $content >$pkg/_meta + msg="$msg (updated)" + fi ;; esac - echo $msg } -# fetch packages list -osc -A $API ls $PRJ | while read pkg; do - parallel_jobs $PARALLEL_JOBS - check_package $pkg & -done +cd $PRJ -parallel_jobs 1 +if [ "$ACTION" == 'get' ] ; then + # fetch project config + echo "Fetching project config for $PRJ" + osc -A $API meta prjconf $PRJ >_config + # fetch project meta + echo "Fetching project meta for $PRJ" + osc -A $API meta prj $PRJ >_meta + + # check that each subdir exists on OBS project + shopt -s extglob + for file in $(ls */@(_aggregate|_link)); do + pkg=$(dirname $file) + echo "Checking $pkg" + if ! osc -A $API ls $PRJ $pkg &>/dev/null; then + echo "Package $pkg was removed on OBS. Removing dir $pkg." + git rm -rf $pkg + fi + done + # fetch packages list + osc -A $API ls $PRJ | while read pkg; do + parallel_jobs $PARALLEL_JOBS + check_package $pkg & + done + + parallel_jobs 1 +elif [ "$ACTION" == 'put' ] ; then + find . -type f | while read path; do + path=$(echo $path|cut -d/ -f2-) + echo Sending $path to $PRJ + osc -A $API api -X PUT /source/$PRJ/$path -f $path + done +else + >&2 echo "Error: Unknown action: $ACTION" + exit 1 +fi