summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@gmail.com>2015-02-27 13:49:37 +0000
committerCarlo Landmeter <clandmeter@gmail.com>2015-02-27 13:49:37 +0000
commit31ebd35122157f33e4889fb9fb0395fb680e670b (patch)
treea7c6c4ef942bf0dc19c1aa80575ff412f54b8c1c
parentcce2821573d3055a948237029844e6700614967c (diff)
downloadrepo-scripts-31ebd35122157f33e4889fb9fb0395fb680e670b.tar.bz2
repo-scripts-31ebd35122157f33e4889fb9fb0395fb680e670b.tar.xz
add apk content to sqlite script
-rwxr-xr-xapk-content2sqlite.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/apk-content2sqlite.sh b/apk-content2sqlite.sh
new file mode 100755
index 0000000..d09f7fd
--- /dev/null
+++ b/apk-content2sqlite.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+base="/var/www/localhost/htdocs/alpine"
+#release=$(readlink $base/latest-stable)
+release="edge"
+repos="main testing"
+archs="x86 x86_64 armhf"
+output="output.csv"
+database="filelist.db"
+
+create_filelist() {
+ local apk="$1" repo="$2" arch="$3"
+ local filelist=$(tar --exclude ".*" -ztf "$apk")
+ local filename="${apk##*/}"
+ local pkgname="${filename%-*-*}"
+ oIFS=$IFS
+ IFS=$'\n'
+ for item in $filelist; do
+ file="${item##*/}"
+ path="${item%/*}"
+ case "$file" in
+ *,*) file="\"$file\"" ;;
+ esac
+ case "$path" in
+ *,*) path="\"$path\"" ;;
+ esac
+ [ ! -z "$file" ] && \
+ echo "$file,$path,$pkgname,$repo,$arch" >> $output
+ done
+ IFS=$oIFS
+}
+
+
+rm -f $output $database
+
+printf "CREATE TABLE filelist(file varchar(255), path text, pkgname varchar(255), repo varchar(8), arch varchar(8));" | sqlite3 $database
+
+for repo in $repos; do
+ for arch in $archs; do
+ printf "Starting: $repo/$arch"
+ for apk in $base/$release/$repo/$arch/*.apk; do
+ printf .
+ create_filelist "$apk" "$repo" "$arch"
+ done
+ done
+done
+
+printf ".mode csv\n.import $output filelist" | sqlite3 $database