#!/bin/bash # # Copyright 2018 Bloomberg Finance LP # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see . # # Authors: # Chandan Singh # This is a helper script to generate Docker images using checkouts of # BuildStream elements. usage() { cat <&2 exit 1 } bst_cmd=bst docker_import_cmd=(docker import) docker_image_tag= while getopts c:m:t:h arg do case $arg in c) bst_cmd="$OPTARG" ;; m) docker_import_cmd+=('-m' "$OPTARG") ;; t) docker_image_tag="$OPTARG" ;; h) usage 0 ;; \?) usage 1 esac done shift $((OPTIND-1)) if [[ "$#" != 1 ]]; then echo "$0: No element specified" >&2 usage 1 fi element="$1" # Dump to a temporary file in the current directory. # NOTE: We use current directory to try to ensure compatibility with scripts # like bst-here, assuming that the current working directory is mounted # inside the container. checkout_tar="bst-checkout-$(basename "$element")-$RANDOM.tar" echo "INFO: Checking out $element ..." >&2 $bst_cmd artifact checkout "$element" --tar "$checkout_tar" || die "Failed to checkout $element" echo "INFO: Successfully checked out $element" >&2 echo "INFO: Importing Docker image ..." >&2 "${docker_import_cmd[@]}" "$checkout_tar" "$docker_image_tag" || die "Failed to import Docker image from tarball" echo "INFO: Successfully import Docker image $docker_image_tag" >&2 echo "INFO: Cleaning up ..." >&2 rm "$checkout_tar" || die "Failed to remove $checkout_tar" echo "INFO: Clean up finished" >&2