summaryrefslogtreecommitdiffstats
path: root/apkindex2sqlite.sh
blob: b012674975b0bd944170cbcd81bc93497708f2f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh

apkindex="APKINDEX"
csvfile="output.csv"
database="apkindex.db"

rm -f $csvfile $database

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
}

reset_vars() {
	name= version= desc= url= lic= arch= 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
}

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

IFS=$'\n'
while read line; do
	[ "$line" = "" ] && write_line && reset_vars
	read_line "$line"
done<$apkindex
unset $IFS

printf ".mode csv\n.import $csvfile apkindex" | sqlite3 $database