/
database.am
163 lines (150 loc) · 5.69 KB
/
database.am
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/usr/bin/env bash
function _clean_lists_and_queries() {
# Remove references to URLs, "-a" elements and limit message length to a maximum of 80 characters in "-l" and "-q"
cut -c -81 | sed 's#http://[^ ]*##g' | sed 's#https://[^ ]*##g' | sed 's#ftp://[^ ]*##g' | sed 's/SITE://g' | sed 's/SOURCE://g'
}
function download_markdown() {
local disk_usage=""
local app_version=""
local markdown_url="$AMCATALOGUEMARKDOWNS/${1}.md"
local cache_dir="$AMPATH/.cache/about"
local app_status=" STATUS: NOT INSTALLED"
local package_name=${1^^}
if curl -o /dev/null -sIf "$markdown_url"; then
mkdir -p "$cache_dir" && wget -q "$markdown_url" -P "$cache_dir"
sed -i '1,${ /^\s*#/ d; /^\s*!/ d; /\[Applications]/d; /\ --- /d; }' "$cache_dir/$1.md"
sed -i '$!N;s/^\s*\n\s*$//;P;D' "$cache_dir/$1.md"
printf ' PACKAGE: %s\n' "$package_name"
if [ -f "$APPSPATH/$1/remove" ]; then
disk_usage=$(du -sm "$APPSPATH/$1" | cut -f1)
app_version=$(cat "$AMPATH"/.cache/version-args | grep -w " ◆ $1 |" | sed 's:.*| ::')
app_status=$(echo -e " STATUS: INSTALLED, ABOUT $disk_usage MB OF DISK SPACE IN USE\n VERSION: $app_version")
fi
printf '%s\n' "$app_status"
cat -s "$cache_dir/$1.md"
rm -R -f "$cache_dir"
else
printf ' "%s" IS NOT A VALID ARGUMENT\n' "$package_name"
fi
}
function generate_3rd_party() {
local disk_usage=""
local app_version=""
local app_status=" STATUS: NOT INSTALLED"
local package_name=${1^^}
if grep -q "◆ $arg : " "$AMPATH/$arch-apps"; then
printf ' PACKAGE: %s\n' "$arg" | tr a-z A-Z
if [ -f "$APPSPATH/$1/remove" ]; then
disk_usage=$(du -sm "$APPSPATH/$1" | cut -f1)
app_version=$(cat "$AMPATH"/.cache/version-args | grep -w " ◆ $1 |" | sed 's:.*| ::')
app_status=$(echo -e " STATUS: INSTALLED, ABOUT $disk_usage MB OF DISK SPACE IN USE\n VERSION: $app_version")
fi
printf '%s\n' "$app_status"
grep "◆ $arg : " < "$AMPATH/$arch-apps" | cut -d':' -f2- | sed 's/^./\n /' | sed 's# SOURCE:#\n\n SOURCE:#g'
else
printf ' "%s" IS NOT A VALID ARGUMENT\n' "$package_name"
fi
}
function download_lib() {
local lib_name_upper=${1^^}
printf "%s\n" " LIBRARY: $lib_name_upper"
if [[ -f "$APPSPATH/$1/remove" ]]; then
local lib_path=$(grep "usr/local/lib" "$APPSPATH/$1/remove" | head -1)
local disk_usage=$(du -sm "$lib_path" | cut -f1)
if [[ "$disk_usage" -eq 0 ]]; then
printf "%s\n" " STATUS: INSTALLED, LESS THAN 1 MB OF DISK SPACE IN USE"
else
printf "%s\n" " STATUS: INSTALLED, ABOUT $disk_usage MB OF DISK SPACE IN USE"
fi
else
printf "%s\n" " STATUS: NOT INSTALLED"
fi
echo ""
grep "◆ $1 : " "$AMPATH/libs-list" | sed 's#.*:##' | sed 's/(/\n (/g'
echo "" && echo " SITE/SOURCES:" && echo ""
local site_source=$(wget -qO- "$APPSDB/$1" | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | head -1)
echo " $site_source"
echo ""
}
function _list() {
LIBNUMBER=$(cat $APPSPATH/*/remove 2> /dev/null | grep "usr/local/lib" | wc -l)
ITEMSNUMBER=$(cd $APPSPATH && find -name 'remove' -printf "%h\n" 2>/dev/null | sort -u | wc -l)
if [ "$AMCLI" == am ]; then
ITEMSNUMBER=$(("$ITEMSNUMBER"-1))
fi
APPSNUMBER=$(echo "$(("$ITEMSNUMBER" - "$LIBNUMBER"))")
_check_version
if test -f $AMPATH/.cache/version-args; then
INSTALLED=$(cat $AMPATH/.cache/version-args | sort | sed 's/ | / /g' | grep -v "◆ am ")
MESSAGE2="\n$INSTALLED\n"
fi
wget -q --tries=10 --timeout=20 --spider https://github.com
if [[ $? -eq 0 ]]; then
_completion_lists
fi
if cat $APPSPATH/*/remove 2> /dev/null | grep -q "usr/local/lib"; then
if [ "$LIBNUMBER" == 1 ]; then
MESSAGE=$(echo " YOU HAVE INSTALLED $APPSNUMBER APPLICATIONS OUT OF $(grep -e "$" -c $AMPATH/$arch-apps) AVAILABLE, AND $LIBNUMBER LIBRARY")
else
MESSAGE=$(echo " YOU HAVE INSTALLED $APPSNUMBER APPLICATIONS OUT OF $(grep -e "$" -c $AMPATH/$arch-apps) AVAILABLE, AND $LIBNUMBER LIBRARIES")
fi
else
MESSAGE=$(echo " YOU HAVE INSTALLED $APPSNUMBER APPLICATIONS OUT OF $(grep -e "$" -c $AMPATH/$arch-apps) AVAILABLE")
fi
echo -e "\n$MESSAGE\n$MESSAGE2\n LIST OF THE $(grep -e "$" -c $AMPATH/$arch-apps) APPLICATIONS AVAILABLE IN THE 'AM' REPOSITORY:\n\n$(cat $AMPATH/$arch-apps | _clean_lists_and_queries)\n" | less -I
echo -e "\n$MESSAGE\n$MESSAGE2"
}
# Define functions
function usage() {
echo " USAGE: $AMCLI $1 [ARGUMENT]"
}
case "$1" in
'-a'|'about')
_online_check
case $2 in
'')
echo " USAGE: $AMCLI $1 [ARGUMENT]"
exit
;;
esac
_check_version
# Main logic
if [ ! -f "$AMPATH/libs-list" ]; then
wget -q "$LIBSLISTDB" -P "$AMPATH"
fi
# Skip the first argument which is not part of ARGS
for arg in "${@:2}"; do
if curl -o /dev/null -sIf "$AMCATALOGUEMARKDOWNS/${arg}.md" 1>/dev/null; then
download_markdown "$arg"
elif grep -q "◆ $arg : " "$AMPATH/$arch-apps"; then
generate_3rd_party
elif grep -q "◆ $arg : " "$AMPATH/libs-list"; then
download_lib "$arg"
else
printf '%s is not a valid argument\n' " $arg" | tr a-z A-Z
fi
printf "%s\n" "-----------------------------------------------------------------------"
done
;;
'-l'|'list')
_list
;;
'-q'|'query')
case $2 in
'')
echo " USAGE: $AMCLI $1 [ARGUMENT]"
exit
;;
esac
wget -q --tries=10 --timeout=20 --spider https://github.com
if [[ $? -eq 0 ]]; then
_completion_lists
fi
ARGS=$(echo "$@" | sed 's/-q //')
echo -e "\n Search results for \"$ARGS\":\n" | tr a-z A-Z
grep -i -E "$2" "$AMPATH/$arch-apps" | grep -i -E "$3" | grep -i -E "$4" | grep -i -E "$5" | grep -i -E "$6" | grep -i -E "$7" | grep -i -E "$8" | grep -i -E "$9" | _clean_lists_and_queries
grep -i -E "$2" "$AMPATH/libs-list" | grep -i -E "$3" | grep -i -E "$4" | grep -i -E "$5" | grep -i -E "$6" | grep -i -E "$7" | grep -i -E "$8" | grep -i -E "$9" | _clean_lists_and_queries
echo ""
exit
;;
esac