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
|