#!/bin/sh -e cleanup() { rm -rf "$tmp" } tmp="$(mktemp -d)" trap cleanup EXIT chmod 0755 "$tmp" arch="$(apk --print-arch)" repositories_file=/etc/apk/repositories keys_dir=/etc/apk/keys while getopts "a:r:k:o:" opt; do case $opt in a) arch="$OPTARG";; r) repositories_file="$OPTARG";; k) keys_dir="$OPTARG";; o) outfile="$OPTARG";; esac done shift $(( $OPTIND - 1)) cat "$repositories_file" if [ -z "$outfile" ]; then outfile=$name-$arch.tar.gz fi ${APK:-apk} add --keys-dir "$keys_dir" --no-cache \ --repositories-file "$repositories_file" \ --no-script --root "$tmp" --initdb --arch "$arch" \ "$@" for link in $("$tmp"/bin/busybox --list-full); do [ -e "$tmp"/$link ] || ln -s /bin/busybox "$tmp"/$link done ${APK:-apk} fetch --keys-dir "$keys_dir" --no-cache \ --repositories-file "$repositories_file" --root "$tmp" \ --stdout --quiet alpine-release | tar -zx -C "$tmp" etc/ # make sure root login is disabled sed -i -e 's/^root::/root:*:/' "$tmp"/etc/shadow branch=edge VERSION_ID=$(awk -F= '$1=="VERSION_ID" {print $2}' "$tmp"/etc/os-release) case $VERSION_ID in *_alpha*|*_beta*) branch=edge;; *.*.*) branch=v${VERSION_ID%.*};; esac cat > "$tmp"/etc/apk/repositories < "$outfile"