@@ -8,7 +8,7 @@ CODER_BIN=${CODER_BIN:-"$(which coder)"}
8
8
AGENTAPI_SLUG=${AGENTAPI_SLUG:- " " }
9
9
10
10
TEMPDIR=$( mktemp -d)
11
- trap ' rm -rfv "${TEMPDIR}"' EXIT
11
+ trap ' rm -rf "${TEMPDIR}"' EXIT
12
12
13
13
[[-n ${VERBOSE:- } ]]&& set -x
14
14
set -euo pipefail
@@ -151,17 +151,37 @@ wait() {
151
151
}
152
152
153
153
archive () {
154
- requiredenvs CODER_URL CODER_SESSION_TOKEN WORKSPACE_NAME
155
- exit 0
156
-
157
- # shellcheck disable=SC2086
154
+ requiredenvs CODER_URL CODER_SESSION_TOKEN WORKSPACE_NAME DESTINATION_PREFIX
158
155
ssh_config
159
- # shellcheck disable=SC2086
160
- " ${CODER_BIN} " \
161
- --url" ${CODER_URL} " \
162
- --token" ${CODER_SESSION_TOKEN} " \
163
- ssh" ${WORKSPACE_NAME} " -- /bin/bash -lc" coder-create-archive"
164
- # shellcheck disable=SC2086
156
+
157
+ cat> " ${TEMPDIR} /archive.sh" << -EOF
158
+ #!/usr/bin/env bash
159
+ set -x
160
+ set -euo pipefail
161
+ /tmp/coder-script-data/bin/coder-archive-create
162
+ ARCHIVE_NAME=\$ (cd && find . -maxdepth 1 -type f -name "*.tar.gz" -print0 | xargs -0 -n 1 basename)
163
+ ARCHIVE_PATH="/home/coder/\$ {ARCHIVE_NAME}"
164
+ ARCHIVE_DEST="${DESTINATION_PREFIX%%/ } /\$ {ARCHIVE_NAME}"
165
+ if [[ ! -f "\$ {ARCHIVE_PATH}" ]]; then
166
+ echo "FATAL: Archive not found at expected path:\$ {ARCHIVE_PATH}"
167
+ exit 1
168
+ fi
169
+ gcloud storage cp "\$ {ARCHIVE_PATH}" "\$ {ARCHIVE_DEST}"
170
+ echo "\$ {ARCHIVE_DEST}"
171
+ exit 0
172
+ EOF
173
+
174
+ scp -F" ${OPENSSH_CONFIG_FILE} " \
175
+ " ${TEMPDIR} /archive.sh" \
176
+ " ${WORKSPACE_NAME} .coder:/tmp/archive.sh"
177
+
178
+ ARCHIVE_DEST=$( ssh -F" ${OPENSSH_CONFIG_FILE} " \
179
+ " ${WORKSPACE_NAME} .coder" \
180
+ -- \
181
+ " chmod +x /tmp/archive.sh && /tmp/archive.sh" )
182
+
183
+ echo " ${ARCHIVE_DEST} "
184
+
165
185
exit 0
166
186
}
167
187