blob: 43bbcd995deb99499b038b34b56324bcd0989bc0 (
plain) (
blame)
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
|
#!/bin/bash
QUIET_INSTALL='no'
STUPID_DIR=$(pwd)
function installRoutine {
echo "[$1]<Info> Running checks for $1 ..."
if grep -q "$1" 'installed.stupid-log'; then
echo "| <Warn > Package has already been installed! It will be reinstalled!"
read -p "L <Warn > Do you want to continue? [y/N]: " confirm && ! [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] && exit
removeRoutine $1
elif grep -q "$name" 'installed.stupid-log'; then
otherPkg=$(grep "$name--*" 'installed.stupid-log')
echo "| <Warn > Another version of the package ($otherPkg) has been found! It will be removed and $1 will be installed!"
read -p "L <Warn > Do you want to continue? [y/N]: " confirm && ! [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] && exit
removeRoutine $otherPkg
fi
echo "[$1]<Info> Installing $1 ..."
mkdir -p "/tmp/stupid/$name" && cd "/tmp/stupid/$name"; touch "$1.install-log"
stupidInstall >"$1.install-log" 2>&1 || (installFail $1 && exit)
echo "FINISHED" >> "$1.install-log"; echo "$1" >> "$STUPID_DIR/installed.stupid-log"
echo "L <Info> Installed!"
}
function installFail {
echo "| <Error> Could not install! Log:"
cat "/tmp/stupid/$name/$1.install-log"
}
function removeRoutine {
echo "[$1]<Info> Running checks for $1 ..."
if ! grep -q "$1" 'installed.stupid-log'; then
echo "L <Warning> Package isn't installed!" && exit
fi
echo "[$1]<Info> Removing $1 ..."
mkdir -p "/tmp/stupid/$name" && cd "/tmp/stupid/$name"; touch "$1.remove-log"
stupidRemove >"$1.remove-log" 2>&1 || (removeFail $1 && exit)
grep -qv "$1" "$STUPID_DIR/installed.stupid-log" > "$STUPID_DIR/installed.stupid-log"
echo "L <Info> Removed!"
}
function removeFail {
echo "[$1]<Error> Could not remove! Log:"
cat "/tmp/stupid/$name/$1.remove-log"
}
function handlePackages {
routine=$1
shift; shift
while [ ! -z $1 ]; do
echo ''
# Package names can either be "PACKAGENAME" or "PACKAGENAME--VERSION"
# If it's "PACKAGENAME" we only want the last occurence, since alphanumerically this should be the latest version
pkg=$(find . -type f -name "$1--*.stupid" | tail -n 1 || grep -q '--' && find . -type f -name "$1.stupid")
if [ -z $pkg ]; then
echo "[$1]<Error> No package file!"; shift; continue
fi
# Ran in subshell so the source-ing doesn't persist between routine functions of multiple packages
(
source "$pkg"
if [[ "$1--$version" != "$name--$version" ]] && [[ "$1" != "$name--$version" ]]; then
echo "[$1]<Error> Package file name and package name and/or version do not match!"; exit
fi
if [[ $(type -t stupidInstall) != "function" ]]; then
echo "[$1]<Error> No install function found!"; exit
fi
if [[ $(type -t stupidRemove) != "function" ]]; then
echo "[$1]<Error> No remove function found!"; exit
fi
$routine "$name--$version"
)
shift
done
}
while [ ! -z $1 ]; do
case $1 in
-q|quiet)
QUIET_INSTALL='yes'
;;
-i|install)
handlePackages installRoutine $@
exit
;;
-r|remove)
handlePackages removeRoutine $@
exit
;;
*)
echo '[Error] Invalid command!'
;;
esac
shift
done
|