blob: 43d8c567b211ed2a47f093dfc528c9592b823449 (
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
#!/usr/bin/env sh
#
# Provision: install stuff using scripts.
#
# Copyright (C) 2017 Silvio Rhatto - rhatto at riseup.net
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published
# by the Free Software Foundation, either version 3 of the License,
# or any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Parameters
NAME="trashman"
PROGRAM="$0"
BASENAME="`basename $0`"
ACTION="$1"
CWD="`pwd`"
# Set shared files location
if [ -e "`dirname $(readlink -f $0)`/share/$NAME" ]; then
# Development or local installation layout
SHARE="`dirname $(readlink -f $0)`/share/$NAME"
else
# System installation layout
SHARE="`dirname $(readlink -f $0)`/../share/$NAME"
fi
# Include basic functions
. $SHARE/trashman/functions || exit 1
# Display usage
__trashman_usage() {
echo "$BASENAME: package ports tree and heterodox configuration provisioner"
echo ""
echo "usage: $BASENAME <fetch|merge>"
echo "usage: $BASENAME <action> [<package1> ... <packageN>] [<--param1=value1> ... <--paramM=valueM>]"
echo ""
echo "available packages:"
echo ""
for package in `__trashman_implementations`; do
if [ -e "$SHARE/$package/info" ]; then
echo "\t $package: `cat $SHARE/$package/info` (`__trashman_actions $package | sed -e 's/ /|/g'`)"
fi
done
echo ""
exit 1
}
# Dispatch
if [ -z "$ACTION" ]; then
__trashman_usage
elif [ "$ACTION" = "fetch" ]; then
__trashman_$ACTION
elif [ "$ACTION" = "merge" ]; then
__trashman_$ACTION
elif [ "$ACTION" = "version" ]; then
__trashman_$ACTION
else
# Get packages param
shift
PACKAGES="$*"
# Setup packages
if [ -z "$PACKAGES" ]; then
__trashman_usage
else
for package in $PACKAGES; do
if [ ! -z "`__trashman_actions $package`" ]; then
folder="`__trashman_actions_folder $package`"
if [ -x "$SHARE/$package/$folder/$ACTION" ]; then
if [ "$ACTION" != "check" ] && [ "$ACTION" != "test" ]; then
__trashman_echo "Dumpsterizing your system: action $ACTION for $package ($folder)..."
fi
$SHARE/$package/$folder/$ACTION $SHARE
status="$?"
if [ "$ACTION" = "check" ]; then
if [ "$status" = "0" ]; then
__trashman_echo "Package $package is installed system-wide"
elif [ "$status" = "1" ]; then
__trashman_echo "Package $package is not installed system-wide"
elif [ "$status" = "2" ]; then
__trashman_echo "Package $package is partially installed system-wide"
fi
fi
else
__trashman_echo "No such action $ACTION for package $package, skipping"
fi
else
__trashman_echo "No such package $package, skipping"
fi
done
# Exit with the latest return status
exit $status
fi
fi
|