blob: c0448c1227562698815ad27b65a3ff89c48cca39 (
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
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
|
#!/bin/bash
#
# Nexus RAW repository interface
#
# Check existence of upstream file or directory
# @param url: path relative to NEXUS_URL (i.e. "repository/my_data", "repository/my_data/file.txt")
# @return non-zero indicates failure
nexus_raw_provides() {
local url
local response
url="${NEXUS_URL}/$1"
if [[ -z $url ]]; then
echo "nexus_raw_provides: requires a path relative to $NEXUS_URL" >&2
return 1
fi
response=$(curl -s --head "$url" | head -n 1 | awk '{print $2}')
if (( $response != 200 )); then
return 1
fi
return 0
}
# Download a file
# @param url:
# @param filename:
# @param dest:
# @return
# 1: path to file
# 2: non-zero indicates failure
nexus_raw_download() {
local url
local filename
local dest
local retval
url="${NEXUS_URL}/$1"
if [[ -z $url ]]; then
echo "nexus_raw_download: requires a path relative to $NEXUS_URL" >&2
return 1
fi
filename=$(basename $url)
if ! nexus_raw_provides "$1"; then
echo "${url}: not found on remote server" >&2
return 1
fi
dest="$2"
if [[ -z "${dest}" ]]; then
dest="."
elif [[ ! -d "${dest}" ]]; then
mkdir -p "${dest}"
fi
if (( NEXUS_BASH_VERBOSE )); then
/bin/echo -n "Fetching '$url' => '$dest' ... " >&2
fi
if ! curl -s -L "$url" > "${dest}/${filename}"; then
retval=$?
if (( NEXUS_BATH_VERBOSE )); then
echo "failed ($retval)" >&2
fi
return $retval
fi
if (( NEXUS_BASH_VERBOSE )); then
echo "done" >&2
fi
echo "$dest/$filename"
return 0
}
# Upload a file
# @param url: path relative to NEXUS_URL (i.e. "repository/my_data")
# @param filename: local file to upload
# @return non-zero indicates failure
nexus_raw_upload() {
local url
local filename
url="${NEXUS_URL}/$2"
filename="$1"
if [[ -z $url ]]; then
echo "nexus_raw_upload: requires a path relative to $NEXUS_URL" >&2
return 1
fi
if (( NEXUS_BASH_VERBOSE )); then
/bin/echo -n "Uploading '$filename' => '${2}' ... "
fi
if ! curl -s --user "${NEXUS_AUTH}" --upload-file "${filename}" "${url}/${filename}"; then
if (( NEXUS_BASH_VERBOSE )); then
echo "failed" >&2
fi
return 1
fi
if (( NEXUS_BASH_VERBOSE )); then
echo "done"
fi
return 0
}
# Upload a directory tree
# @param src: path to local directory
# @param dest: path relative to NEXUS_URL (i.e. "repository/my_data")
# @return non-zero indicates failure
nexus_raw_upload_dir() {
local src
local dest
local status_callback
src="$1"
dest="$2"
if [[ ! -d "$src" ]]; then
echo "nexus_raw_upload_dir: source directory does not exist: ${src}" >&2
return 1
fi
if [[ -z "$dest" ]]; then
echo "nexus_raw_upload_dir: requires a destination relative to ${NEXUS_URL}" >&2
return 1
fi
local failures
local paths
paths=($(find "${src}" -type f -print))
failures=0
for (( i=0; i < ${#paths[@]}; i++ )); do
local retval
local f
f="${paths[$i]}"
if ! nexus_raw_upload "$f" "$dest"; then
(( failures++ ))
fi
done
if (( failures )); then
return 1
fi
return 0
}
|