X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=contrib%2Fpyshop2packages.sh;h=98613f3aa06f67c2b800f24a538981d86a9c89ea;hb=60834a0713d5dcc6a9911511cb8618ce7358c824;hp=034f8c1d8859e943f2a9e258c1684319aecf0132;hpb=232408af2996be5a87350e81c151508ca55cd171;p=gocheese.git diff --git a/contrib/pyshop2packages.sh b/contrib/pyshop2packages.sh index 034f8c1..98613f3 100755 --- a/contrib/pyshop2packages.sh +++ b/contrib/pyshop2packages.sh @@ -1,11 +1,12 @@ #!/bin/sh -e +# WARNING: it may fail if ~/.sqliterc exists! # Convert Pyshop working directory to GoCheese friendly one. # Script expects to be run in packages repository (a/, b/, ...) # with pyshop.db database file. It will create packages/ directory # with all Pyshop-downloaded/uploaded files, SHA256 checksums, # private package marks. Also it will call GoCheese's /simple/ API # for forcing metainformation update (necessary for storing SHA256 -# checksums missing in Pyshop). +# checksums missing in Pyshop). No metadata conversion is performed. pkgname() { perl -ne "s/[-_.]+/-/g ; print lc" @@ -16,16 +17,17 @@ pkgname() { ######################################################################## ctr=0 echo " -SELECT package.name, release_file.filename +SELECT package.name, release_file.filename, release_file.created_at FROM release_file JOIN release ON release.id = release_file.release_id JOIN package ON release.package_id = package.id ORDER BY package.name -" | sqlite3 --separator " " pyshop.db | while read pkginfo ; do +" | sqlite3 -separator " " pyshop.db | while read pkginfo ; do ctr=$(( $ctr + 1 )) [ $(( $ctr % 100 )) -ne 0 ] || echo $ctr $pkginfo pkg=$(echo "$pkginfo" | cut -f1 | pkgname) filename=$(echo "$pkginfo" | cut -f2) + created=$(echo "$pkginfo" | cut -f3 | sed "s/ /T/") [ -n "$pkg" ] [ -n "$filename" ] src=$(echo $pkg | cut -c1)/$filename @@ -34,6 +36,7 @@ ORDER BY package.name [ -r $dst ] && continue || : mkdir -p packages/$pkg ln $src $dst + touch -d "$created" $dst done ######################################################################## @@ -43,6 +46,7 @@ for pkg in $(echo "SELECT name FROM package WHERE local = true" | sqlite3 pyshop cd packages/$(echo $pkg | pkgname) for f in * ; do sha256 < $f | xxd -r -p > $f.sha256 ; done touch .internal + touch -r $f $f.sha256 cd ../.. done @@ -51,7 +55,8 @@ done ######################################################################## cd packages for pkg in * ; do - # Assume gocheese -gpgupdate /gpgupdate/ + # Assume running: + # GOCHEESE_NO_SYNC=1 gocheese -bind "[::1]:8080" -gpgupdate /gpgupdate/ curl http://localhost:8080/gpgupdate/$pkg/ > /dev/null done