diff options
Diffstat (limited to 'apkindex2sqlite.sh')
-rwxr-xr-x | apkindex2sqlite.sh | 136 |
1 files changed, 65 insertions, 71 deletions
diff --git a/apkindex2sqlite.sh b/apkindex2sqlite.sh index d2c96f4..64e3919 100755 --- a/apkindex2sqlite.sh +++ b/apkindex2sqlite.sh @@ -1,89 +1,83 @@ #!/bin/sh -apkindex="APKINDEX" -csvfile="output.csv" -database="apkindex.db" - -rm -f $csvfile $database +packages="repository" +repos="main testing" +archs="x86 x86_64 armhf" +db="db/apkindex.db" +csv="csv/apkindex.csv" +turbo_db="/var/www/aports-turbo/db/apkindex.db" read_line() { local type=${1%%:*} local var=${1#*:} case "$type" in - P) #name - name="$var" - ;; - V) #version - version="$var" - ;; - T) #description - desc="\"$var\"" - ;; - U) #url - url="\"$var\"" - ;; - L) #license - lic="$var" - ;; - A) #arch - arch="$var" - ;; - D) #depends - deps="$var" - ;; - C) #csum - csum="$var" - ;; - S) #size - size="$var" - ;; - I) #installed_size - install_size="$var" - ;; - p) #provides - provides="$var" - ;; - i) #install_if - install_if="$var" - ;; - o) #origin - origin="$var" - ;; - m) #maintainer - maintainer="$var" - ;; - t) #build_time - build_time="$var" - ;; - c) #commit - commit="$var" - ;; - F|M|R|Z|r|q|a|s|f) #installed db entries - return 1 - ;; - esac + P) name="$var" ;; + V) version="$var" ;; + T) desc="\"$var\"" ;; + U) url="\"$var\"" ;; + L) lic="$var" ;; + A) parch="$var" ;; + D) deps="$var" ;; + C) csum="$var" ;; + S) size="$var" ;; + I) install_size="$var" ;; + p) provides="$var" ;; + i) install_if="$var" ;; + o) origin="$var" ;; + m) maintainer="$var" ;; + t) build_time="$var" ;; + c) commit="$var" ;; + esac } reset_vars() { - name= version= desc= url= lic= arch= deps= csum= size= install_size= + name= version= desc= url= lic= parch= deps= csum= size= install_size= provides= install_if= origin= maintainer= build_time= commit= } write_line() { - echo "$name,$version,$desc,$url,$lic,$arch,$deps,$csum,$size,$install_size,$provides,$install_if,$origin,$maintainer,$build_time,$commit" >> \ - $csvfile + echo "$name,$version,$desc,$url,$lic,$parch,$deps,$csum,$size,$install_size,$provides,$install_if,$origin,$maintainer,$build_time,$commit,$repo" +} + +init_db() { + rm -f $db + printf "CREATE TABLE apkindex('name' text, 'version' text, 'desc' text, + 'url' text, 'lic' text, 'arch' text, 'deps' text, 'csum' text, + 'size' text, 'install_size' text, 'provides' text, 'install_if' text, + 'origin' text, 'maintainer' text, 'build_time' integer, 'commit' text, + 'repo' text);" | sqlite3 $db +} + +write_db() { + printf ".mode csv\n.import $csv apkindex" | sqlite3 $db + printf "CREATE INDEX name on apkindex (name);" | sqlite3 $db + printf "CREATE INDEX arch on apkindex (arch);" | sqlite3 $db + printf "CREATE INDEX provides on apkindex (provides);" | sqlite3 $db + printf "CREATE INDEX deps on apkindex (deps);" | sqlite3 $db +} + +prepare() { + rm -f $db $csv + mkdir -p ${csv%/*} ${db%/*} } -printf "CREATE TABLE apkindex('name' text, 'version' text, 'desc' text, - 'url' text, 'lic' text, 'arch' text, 'deps' text, 'csum' text, - 'size' text, 'install_size' text, 'provides' text, 'install_if' text, - 'origin' text, 'maintainer' text, 'build_time' integer, 'commit' text);" | sqlite3 $database +rm -f $csv -IFS=$'\n' -while read line; do - [ "$line" = "" ] && write_line && reset_vars - read_line "$line" -done<$apkindex -unset IFS +for repo in $repos; do + for arch in $archs; do + rm -f /tmp/APKINDEX + #curl -s "$aports/$repo/$arch/APKINDEX.tar.gz" | tar -zx -C /tmp APKINDEX + tar -C /tmp -zxf $packages/$repo/$arch/APKINDEX.tar.gz APKINDEX + IFS=$'\n' + while read line; do + if [ "$line" = "" ]; then + write_line >> $csv + reset_vars + fi + read_line "$line" + done</tmp/APKINDEX + unset IFS + done +done -printf ".mode csv\n.import $csvfile apkindex" | sqlite3 $database +prepare && init_db && write_db |