Skip to content

Commit 4fbb207

Browse files
committed
ruby-package fetch --check
1 parent 59269d1 commit 4fbb207

File tree

1 file changed

+53
-15
lines changed

1 file changed

+53
-15
lines changed

libexec/ruby-package-fetch

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,70 @@
22
set -e
33

44
usage() {
5-
echo "usage: ruby-package fetch PACKAGE" >&2
5+
echo "usage: ruby-package fetch [--check] PACKAGE" >&2
66
exit 1
77
}
88

9-
if [ -z "$1" ]; then
9+
check() {
10+
local url="$1"
11+
12+
set +e
13+
curl -ILfs "$url" >/dev/null
14+
local result="$?"
15+
set -e
16+
17+
if [ "$result" -ne 0 ]; then
18+
return 1
19+
fi
20+
}
21+
22+
download() {
23+
local url="$1"
24+
local filename="$2"
25+
26+
set +e
27+
curl -Lfs "$url" > "$filename"
28+
local result="$?"
29+
set -e
30+
31+
if [ "$result" -ne 0 ]; then
32+
return 1
33+
elif [ ! -f "$filename" ]; then
34+
return 1
35+
else
36+
echo "$filename"
37+
fi
38+
}
39+
40+
check=""
41+
if [ "$1" = "--check" ]; then
42+
check=1
43+
shift
44+
fi
45+
46+
package="$1"
47+
if [ -z "$package" ]; then
1048
usage
1149
fi
12-
package_name="${1}.$(ruby-package platform).rubypackage"
50+
51+
package_name="${package}.$(ruby-package platform).rubypackage"
1352

1453
package_repo="${RUBY_PACKAGE_REPO%/}"
1554
if [ -z "$ruby_package_repo" ]; then
1655
package_repo="https://github.com/downloads/sstephenson/ruby-packages"
1756
fi
1857

19-
url="${package_repo}/${package_name}"
20-
filename="${TMPDIR}/${package_name}.$$"
21-
22-
set +e
23-
curl -Lfs "$url" > "$filename"
24-
result="$?"
25-
set -e
58+
package_url="${package_repo}/${package_name}"
2659

27-
if [ "$result" -eq 22 ]; then
28-
exit 3
29-
elif [ ! -f "$filename" ]; then
30-
exit 2
60+
if [ -n "$check" ]; then
61+
check "$package_url" || {
62+
echo "error: package \`$package' not found ($package_url)"
63+
exit 1
64+
} >&2
3165
else
32-
echo "$filename"
66+
package_filename="${TMPDIR}/${package_name}.$$"
67+
download "$package_url" "$package_filename" || {
68+
echo "error: couldn't fetch package \`$package' ($package_url)"
69+
exit 1
70+
} >&2
3371
fi

0 commit comments

Comments
 (0)