-
Notifications
You must be signed in to change notification settings - Fork 286
Expand file tree
/
Copy pathpackage.sh
More file actions
executable file
·113 lines (89 loc) · 2.22 KB
/
package.sh
File metadata and controls
executable file
·113 lines (89 loc) · 2.22 KB
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
#!/usr/bin/env bash
set -e
set -u
set -o pipefail
ROOTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
readonly ROOTDIR
# shellcheck source=SCRIPTDIR/.util/tools.sh
source "${ROOTDIR}/scripts/.util/tools.sh"
# shellcheck source=SCRIPTDIR/.util/print.sh
source "${ROOTDIR}/scripts/.util/print.sh"
function main() {
local stack version cached output
stack="any"
cached="false"
output="${ROOTDIR}/build/buildpack.zip"
while [[ "${#}" != 0 ]]; do
case "${1}" in
--stack)
stack="${2}"
shift 2
;;
--version)
version="${2}"
shift 2
;;
--cached)
cached="true"
shift 1
;;
--output)
output="${2}"
shift 2
;;
--help|-h)
shift 1
usage
exit 0
;;
"")
# skip if the argument is empty
shift 1
;;
*)
util::print::error "unknown argument \"${1}\""
esac
done
if [[ -z "${version:-}" ]]; then
usage
echo
util::print::error "--version is required"
fi
package::buildpack "${version}" "${cached}" "${stack}" "${output}"
}
function usage() {
cat <<-USAGE
package.sh --version <version> [OPTIONS]
Packages the buildpack into a .zip file.
OPTIONS
--help -h prints the command usage
--version <version> -v <version> specifies the version number to use when packaging the buildpack
--cached cache the buildpack dependencies (default: true)
USAGE
}
function package::buildpack() {
local version cached stack output
version="${1}"
cached="${2}"
stack="${3}"
output="${4}"
mkdir -p "$(dirname "${output}")"
util::tools::buildpack-packager::install --directory "${ROOTDIR}/.bin"
echo "Building buildpack (version: ${version}, stack: ${stack}, cached: ${cached}, output: ${output})"
local stack_flag
stack_flag="--any-stack"
if [[ "${stack}" != "any" ]]; then
stack_flag="--stack=${stack}"
export CF_STACK="${stack}"
fi
local file
file="$(
buildpack-packager build \
"--version=${version}" \
"--cached=${cached}" \
"${stack_flag}" \
| xargs -n1 | grep -e '\.zip$'
)"
mv "${file}" "${output}"
}
main "${@:-}"