-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathaem-pkmgr.sh
executable file
·175 lines (164 loc) · 4.88 KB
/
aem-pkmgr.sh
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
164
165
166
167
168
169
170
171
172
173
174
175
#!/bin/bash
# Default Variables
USER="admin"
PASSWORD="admin"
HOST="http://localhost:4502"
ACTION="help"
PACKAGE=0
OUT=0
GROUP=""
NAME=""
function usage
{
echo "usage: aem-pkmgr [list|install|download|upload|upload-install|build] [-h http://localhost:4503] [-u admin1] [-p admin2] [-pk package.zip]"
}
function help
{
usage
echo ""
echo "---Actions---"
echo " list - lists all available packages"
echo " install - installs a package"
echo " upload - uploads a package"
echo " upload-install - uploads and installs a package"
echo " build - builds a package"
echo " download - downloads a package"
echo ""
echo "---Parameters---"
echo "-h | --host - Sets the AEM host, default is 'http://localhost:4502'"
echo "-u | --username - Sets the username to connect to AEM, default is 'admin'"
echo "-p | --password - Sets the password to connect to AEM, default is 'admin'"
echo "-o | --out - The path to download the package"
echo "-g | --group - Filter the package list by group"
echo "-n | --name - Filter the package list by name"
echo "-pk | --package - Sets the package to install or upload"
echo "-h | --help - Displays this message"
}
list ()
{
echo "AVAILABLE PACKAGES:"
echo ""
ruby -ruri -rjson -rnet/http -e 'uri = URI.parse(ARGV[2]+"/crx/packmgr/list.jsp"); request = Net::HTTP::Get.new(uri); request.basic_auth(ARGV[3],ARGV[4]); response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http| http.request(request); end; group = ARGV[0].downcase; name = ARGV[1].downcase; j = JSON.parse(response.body); j["results"].each do |package| if (package["name"].downcase.include? name) and (package["group"].downcase.include? group) then print package["name"]+"\n"; print "\tDescription: "+(package["description"] == nil ? "" : package["description"])+"\n"; print "\tVersion: "+(package["version"] == nil ? "" : package["version"])+"\n"; print "\tGroup: "+(package["group"] == nil ? "" : package["group"])+"\n"; print "\tPath: "+(package["path"] == nil ? "" : package["path"])+"\n\n"; end end ' "$GROUP" "$NAME" "$HOST" "$USER" "$PASSWORD"
}
install_package ()
{
if [ "$PACKAGE" == "0" ]; then
echo "Missing package!"
echo "usage: aem-pkmgr install -pk [package-path]"
exit 1
fi
echo "INSTALLING PACKAGE $PACKAGE..."
encoded_package=${PACKAGE// /%20}
curl -u $USER:$PASSWORD -X POST --fail "$HOST/crx/packmgr/service/.json$encoded_package?cmd=install"
echo ""
}
upload_install ()
{
if [ "$PACKAGE" == "0" ]; then
echo "Missing package!"
echo "usage: aem-pkmgr upload -pk [package-file]"
exit 1
fi
echo "UPLOADING PACKAGE $PACKAGE..."
curl -u $USER:$PASSWORD --fail -F file=@"$PACKAGE" -F force=true -F install=true $HOST/crx/packmgr/service.jsp
echo ""
}
upload ()
{
if [ "$PACKAGE" == "0" ]; then
echo "Missing package!"
echo "usage: aem-pkmgr upload -pk [package-file]"
exit 1
fi
echo "UPLOADING PACKAGE $PACKAGE..."
curl -u $USER:$PASSWORD --fail -F file=@"$PACKAGE" -F force=true -F install=false $HOST/crx/packmgr/service.jsp
echo ""
}
download ()
{
if [ "$PACKAGE" == "0" ]; then
echo "Missing package!"
echo "usage: aem-pkmgr download -pk [package-path]"
exit 1
fi
echo "DOWNLOADING PACKAGE $PACKAGE..."
encoded_package=${PACKAGE// /%20}
if [ "$OUT" == "0" ]; then
curl -u $USER:$PASSWORD -O --fail "$HOST$encoded_package"
else
curl -u $USER:$PASSWORD --fail "$HOST$encoded_package" > $OUT
fi
echo ""
}
build ()
{
if [ "$PACKAGE" == "0" ]; then
echo "Missing package!"
echo "usage: aem-pkmgr build -pk [package-path]"
exit 1
fi
echo "BUILDING PACKAGE $PACKAGE..."
encoded_package=${PACKAGE// /%20}
curl -u $USER:$PASSWORD -X POST --fail "$HOST/crx/packmgr/service/.json$encoded_package?cmd=build"
echo ""
}
# Parse the command line arguments from the parameters
while [ "$1" != "" ]; do
case $1 in
-h | --host ) shift
HOST=$1
;;
-u | --username ) shift
USER=$1
;;
-p | --password ) shift
PASSWORD=$1
;;
-o | --out ) shift
OUT=$1
;;
-pk | --package ) shift
PACKAGE=$1
;;
-g | --group ) shift
GROUP=$1
;;
-n | --name ) shift
NAME=$1
;;
-h | --help ) help
exit
;;
build ) ACTION="build"
;;
list ) ACTION="list"
;;
"install" ) ACTION="install"
;;
"upload-install" ) ACTION="upload-install"
;;
upload ) ACTION="upload"
;;
download ) ACTION="download"
;;
* ) usage
exit 1
esac
shift
done
# Perform the actions
if [ "$ACTION" = "list" ]; then
list
elif [ "$ACTION" = "install" ] ; then
install_package
elif [ "$ACTION" = "upload-install" ] ; then
upload_install
elif [ "$ACTION" = "upload" ] ; then
upload
elif [ "$ACTION" = "download" ] ; then
download
elif [ "$ACTION" = "build" ] ; then
build
else
usage
fi