]> Cypherpunks.ru repositories - gocheese.git/blobdiff - contrib/pyshop2packages.sh
Missing required argument
[gocheese.git] / contrib / pyshop2packages.sh
index 034f8c1d8859e943f2a9e258c1684319aecf0132..d007a3fdbfbd3e8c7134b6c3281dcb0d41554db8 100755 (executable)
@@ -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,11 +55,12 @@ 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
 
 ########################################################################
 # Assure ckecksums are good
 ########################################################################
-gocheese -fsck
+gocheese -fsck packages