diff --git a/build-all b/build-all index d5873e6..31168cf 100755 --- a/build-all +++ b/build-all @@ -1,60 +1,7 @@ #!/usr/bin/env sh - -announce() { : \ - && printf >&2 ' \033[1m\033[7m <-- \033[0m\033[1m ' \ - && printf >&2 ' %30s %-30s ' "$1" "$2" \ - && printf >&2 ' \033[1m\033[7m --> \033[0m\n' \ - ;} - -yes_retrieve() { : \ - && local ok=1 out= g= image="${1?missing argument}" && shift \ - && [ -d out ] && out="$(realpath out)" \ - && for f in "$@" \ - ;do announce retrieving "$f" \ - && g="out/${f##*/}" && { ! [ -e "$g" ] || mv "$g" "$g~" ;} || return \ - ;done \ - && podman run -v="$out":/out --rm --entrypoint /bin/busybox "localhost/$image" \ - cp -- "$@" "/out/" \ - && for f in "$@" \ - ;do if g="out/${f##*/}" && [ -e "$g" ] \ - ;then ! [ -e "$g~" ] || rm "$g~" || return \ - ;else printf 'yes_retrieve: %s\n' "failed to copy file $f to $g"; ok=0 \ - ;fi ;done \ - && [ $ok = 1 ] \ - ;} - -dbg_retrieve() { : \ - && local o=0 container="${1?missing argument}" && shift \ - && for f in "$@" \ - ;do [ $o = 0 ] && o=1 && set -- "$f" "$f.dbg" || set -- "$f" "$f.dbg" "$@" \ - ;done \ - && yes_retrieve "$container" "$@" \ - ;} - -build() { : \ - && local t="${1?missing argument}" && shift \ - && announce building "$t" \ - && podman build -t "$t" "./$t" "$@" \ - ;} - -build_simple() { : \ - && for f in simple/*.Dockerfile \ - ;do t="${f%.*}" t=${t##*/} \ - && announce '(simple) packaging' "$t" \ - && podman build -t "$t" -f "$f" simple \ - || return \ - ;done \ - ;} - -build_base() { : \ - && sed 's/\bcosmo-bootstrap\b/cosmo-all/g' \ - cosmo-dist/all.Dockerfile \ - && build cosmo-dist -f cosmo-dist/all.Dockerfile \ - && build cosmo-base \ - ;} - : \ && me="$(readlink -f "$0")" && cd "${me%/*}" && { [ -d out ] || mkdir out ;} \ + && . ./lib.sh \ && : \ \ `# phase 1` \ diff --git a/lib.sh b/lib.sh new file mode 100644 index 0000000..a725583 --- /dev/null +++ b/lib.sh @@ -0,0 +1,55 @@ +#!/usr/bin/false + +announce() { : \ + && printf >&2 ' \033[1m\033[7m <-- \033[0m\033[1m ' \ + && printf >&2 ' %30s %-30s ' "$1" "$2" \ + && printf >&2 ' \033[1m\033[7m --> \033[0m\n' \ + ;} + +yes_retrieve() { : \ + && local ok=1 out= g= image="${1?missing argument}" && shift \ + && [ -d out ] && out="$(realpath out)" \ + && for f in "$@" \ + ;do announce retrieving "$f" \ + && g="out/${f##*/}" && { ! [ -e "$g" ] || mv "$g" "$g~" ;} || return \ + ;done \ + && podman run -v="$out":/out --rm --entrypoint /bin/busybox "localhost/$image" \ + cp -- "$@" "/out/" \ + && for f in "$@" \ + ;do if g="out/${f##*/}" && [ -e "$g" ] \ + ;then ! [ -e "$g~" ] || rm "$g~" || return \ + ;else printf 'yes_retrieve: %s\n' "failed to copy file $f to $g"; ok=0 \ + ;fi ;done \ + && [ $ok = 1 ] \ + ;} + +dbg_retrieve() { : \ + && local o=0 container="${1?missing argument}" && shift \ + && for f in "$@" \ + ;do [ $o = 0 ] && o=1 && set -- "$f" "$f.dbg" || set -- "$f" "$f.dbg" "$@" \ + ;done \ + && yes_retrieve "$container" "$@" \ + ;} + +build() { : \ + && local t="${1?missing argument}" && shift \ + && announce building "$t" \ + && podman build -t "$t" "./$t" "$@" \ + ;} + +build_simple() { : \ + && for f in simple/*.Dockerfile \ + ;do t="${f%.*}" t=${t##*/} \ + && announce '(simple) packaging' "$t" \ + && podman build -t "$t" -f "$f" simple \ + || return \ + ;done \ + ;} + +build_base() { : \ + && sed 's/\bcosmo-bootstrap\b/cosmo-all/g' \ + cosmo-dist/all.Dockerfile \ + && `# sed -i 's/#&& find o/ \&\& find o/' cosmo-dist/all.Dockerfile` \ + && build cosmo-dist -f cosmo-dist/all.Dockerfile \ + && build cosmo-base \ + ;}