spk annotate spk-sql @ rev 161

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 12:27:19 2019 +0100 (2019-02-26)
parents d17faf6bde85
children
rev   line source
pankso@148 1 #!/bin/sh
pankso@148 2 #
pankso@148 3 # Spk-sql - SliTaz packages DB the SQLite way. This is for testing
paul@151 4 # SQLite's speed to handle packages info. It may not be used to manage
pankso@148 5 # OS system but for pkgs.slitaz.org search engine and arm.slitaz.org
pankso@148 6 #
pankso@148 7 # Copyright (C) 2014 SliTaz GNU/Linux - BSD License
pankso@148 8 # Author: See AUTHORS files
pankso@148 9 #
pankso@148 10 . /usr/lib/slitaz/libspk.sh
pankso@148 11
pankso@148 12 # Benchmarks:
pankso@148 13 #
pankso@148 14 # Listing all packages with:
pankso@148 15 #
pankso@148 16 # spk-ls --short : real 0m 10.92s
pankso@148 17 # spk-sql list --output=html : real 0m 1.56s
pankso@148 18 #
pankso@148 19 #
pankso@148 20
pankso@148 21 #db="${root}${PKGS_DB}/packages.sql"
pankso@148 22 db="packages.sql"
pankso@148 23 table="mirror"
pankso@148 24
pankso@148 25 #wok=/home/slitaz/wok
pankso@148 26 wok=/home/pankso/Projects/wok
pankso@148 27
pankso@148 28 #
pankso@148 29 # Functions
pankso@148 30 #
pankso@148 31
pankso@148 32 # Help and usage
pankso@148 33 usage() {
pankso@148 34 name=$(basename $0)
pankso@148 35 cat << EOT
pankso@148 36
pankso@148 37 $(boldify $(gettext "Usage:")) $name [command|package] packageN
pankso@148 38
pankso@148 39 $(gettext "SliTaz SQLite packages DB manager")
pankso@148 40
pankso@148 41 $(boldify $(gettext "Commands:"))
pankso@148 42 master Show master record
pankso@148 43 tables List all DB tables
pankso@148 44 dbi Table database information
pankso@148 45 list List SQL DB $table table
pankso@148 46 gendb Generate a SQL DB of all packages
pankso@148 47
pankso@148 48 $(boldify $(gettext "Options:"))
pankso@148 49 --output= Set the output format (list, html)
pankso@148 50
pankso@148 51 EOT
pankso@148 52 exit 0
pankso@148 53 }
pankso@148 54
pankso@148 55 # Create the SQL database
pankso@148 56 create_db() {
pankso@148 57 rm -f $db
pankso@148 58 sqlite3 $db << EOT
pankso@148 59 create table $table(
pankso@148 60 pkg,
pankso@148 61 version,
pankso@148 62 category,
pankso@148 63 url,
pankso@148 64 desc,
pankso@148 65 deps
pankso@148 66 );
pankso@148 67 EOT
pankso@148 68 }
pankso@148 69
pankso@148 70 #
pankso@148 71 # Handle --options
pankso@148 72 #
pankso@148 73
pankso@148 74 for opt in $@
pankso@148 75 do
pankso@148 76 case "$opt" in
pankso@148 77 *usage|*help) usage ;;
pankso@148 78 --count)
pankso@148 79 exit 0 ;;
pankso@148 80 esac
pankso@148 81 done
pankso@148 82
pankso@148 83 #
pankso@148 84 # Handle commands
pankso@148 85 #
pankso@148 86
pankso@148 87 case "$1" in
pankso@148 88 "") usage ;;
pankso@148 89 master) sqlite3 $db 'select * from sqlite_master' ;;
pankso@148 90 tables) sqlite3 $db '.tables' ;;
pankso@148 91
pankso@148 92 dbi)
pankso@148 93 # Data Base Info
pankso@148 94 du -sh ${db} ;;
pankso@148 95
pankso@148 96 list)
paul@151 97 # Very fast listing of fancy output: html, tcl, tabs, ...
pankso@148 98 [ "$output" ] || output="list"
pankso@148 99 sqlite3 ${db} << EOT
pankso@148 100 .mode $output
pankso@148 101 select * from $table;
pankso@148 102 EOT
pankso@148 103 ;;
pankso@148 104
pankso@148 105 gendb)
paul@151 106 # Takes long to build the +4300 pkgs DB!
pankso@148 107 time=$(date +%s)
pankso@148 108 echo "Initializing: $db --> $table"
pankso@148 109 create_db
pankso@148 110 for pkg in $(ls $wok)
pankso@148 111 do
pankso@148 112 echo "Inserting: $count: $pkg"
pankso@148 113 . ${wok}/${pkg}/receipt
pankso@148 114 sqlite3 ${db} << EOT
pankso@148 115 insert into $table values(
pankso@148 116 "$PACAKAGE",
pankso@148 117 "$VERSION",
pankso@148 118 "$CATEGORY",
pankso@148 119 "$WEB_SITE",
pankso@148 120 "$SHORT_DESC",
pankso@148 121 "$DEPENDS"
pankso@148 122 );
pankso@148 123 EOT
pankso@148 124 done
pankso@148 125 time=$(($(date +%s) - $time))
pankso@148 126 echo -n "$nb "
pankso@148 127 gettext "packages added in"
pankso@148 128 echo " ${time}s ("$(date "+%Y%m%d %H:%M")")"
pankso@148 129 newline ;;
pankso@148 130
pankso@148 131 esac && exit 0