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