commit 3981d56ee9c797d12cffb2de9881ebfa79ece505 (tree) parent 3987b19c6c27758bd81dbce5d056cdc5fba7a0d3 Author: Motiejus Jakštys <desired.mta@gmail.com> Date: Wed, 15 Apr 2020 07:32:26 +0300 add prepare_container Diffstat:
| A | bin/bin/prepare_container.sh | | | 41 | +++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 41 insertions(+), 0 deletions(-)
diff --git a/bin/bin/prepare_container.sh b/bin/bin/prepare_container.sh @@ -0,0 +1,41 @@ +#!/bin/bash +set -euo pipefail + +dir=$1 +container=$2 + +TMPDIR=/bigdisk/tmp +GETIMAGE=/bigdisk/code/moby/contrib/download-frozen-image-v2.sh + +prepare_container() { + if [[ -d "$dir" ]]; then + if [[ -f "$dir/.extract_done" ]]; then + echo "$dir already has the filesystem extracted" + return + fi + + if [[ ! -f "$dir/.extract_started" ]]; then + 2>&1 echo "$dir exists and does not have magic file, bailing" + exit 1 + else + rm -fr "$dir" + fi + fi + mkdir -p "$dir" + touch "$dir/.extract_started" + + tmpdir=$(mktemp -d -p "$TMPDIR" "$container"XXXXX) + trap "rm -fr $tmpdir" EXIT + 2>&1 echo "Downloading $container to $tmpdir..." + "$GETIMAGE" "$tmpdir" "$container" + 2>&1 echo -n "Extracting $tmpdir to $dir... " + jq -r '.[] | .Layers | .[]' "$tmpdir/manifest.json" | xargs -I{} tar -C "$dir" -xf $tmpdir/{} + 2>&1 echo "done" + touch "$dir/.extract_done" + 2>&1 echo -n "Removing $tmpdir..." + rm -fr "$tmpdir" + 2>&1 echo "done" + trap - EXIT +} + +prepare_container