This is an automated email from the ASF dual-hosted git repository.
houston pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-docker.git
The following commit(s) were added to refs/heads/main by this push:
new ad8d38f Add library generation script and gitignore
ad8d38f is described below
commit ad8d38f39fea5056fb20be353e766775e4825ecd
Author: Houston Putman <[email protected]>
AuthorDate: Fri Apr 8 13:03:36 2022 -0400
Add library generation script and gitignore
---
.gitignore | 5 ++
generate-stackbrew-library.sh | 121 ++++++++++++++++++++++++++++++++++++++++++
tools/init_macos.sh | 27 ++++++++++
3 files changed, 153 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2182eb7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+downloads
+.gnupg
+ownertrust.txt
+upstream-versions
+.idea
diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh
new file mode 100755
index 0000000..4ab299b
--- /dev/null
+++ b/generate-stackbrew-library.sh
@@ -0,0 +1,121 @@
+#!/usr/bin/env bash
+#
+# Produce
https://github.com/docker-library/official-images/blob/master/library/solr
+# Based on
https://github.com/docker-library/httpd/blob/master/generate-stackbrew-library.sh
+set -eu
+
+declare -A aliases
+declare -g -A parentRepoToArches
+
+self="$(basename "${BASH_SOURCE[0]}")"
+if [[ "$OSTYPE" == "darwin"* ]]; then
+ source "$(dirname "${BASH_SOURCE[0]}")/tools/init_macos.sh"
+fi
+cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
+
+
+declare -a versions
+readarray -t versions < <(find . -maxdepth 1 -regex '\./[0-9]*\.[0-9]*'
-printf '%f\n' | sort -rV)
+latest_version="${versions[0]}"
+
+# make a map from major version to most recent minor, eg 9.6 -> 9
+readarray -t versions_increasing < <(printf '%s\n' "${versions[@]}" | tac )
+declare -A major_to_minor
+for v in "${versions_increasing[@]}"; do
+ major="$(sed -E 's/\..*//' <<<"$v")"
+ major_to_minor[$major]=$v
+done
+# invert that to create aliases eg 9.6 -> 9
+for major in "${!major_to_minor[@]}"; do
+ aliases[${major_to_minor[$major]}]="$major"
+done
+
+# get the most recent commit which modified any of "$@"
+fileCommit() {
+ git log -1 --format='format:%H' HEAD -- "$@"
+}
+
+# get the most recent commit which modified "$1/Dockerfile"
+dirCommit() {
+ local dir="$1"; shift
+ (
+ cd "$dir"
+ fileCommit \
+ "Dockerfile"
+ )
+}
+
+getArches() {
+ local repo="$1"; shift
+ local
officialImagesUrl='https://github.com/docker-library/official-images/raw/master/library/'
+
+ eval "declare -g -A parentRepoToArches=( $(
+ find . -path ./builder -prune -o -name 'Dockerfile' -exec awk '
+ toupper($1) == "FROM" && $2 !~
/^('"$repo"'|scratch|microsoft\/[^:]+)(:|$)/ {
+ print "'"$officialImagesUrl"'" $2
+ }
+ ' '{}' + \
+ | sort -u \
+ | xargs bashbrew cat --format '[{{ .RepoName }}:{{
.TagName }}]="{{ join " " .TagEntry.Architectures }}"'
+ ) )"
+}
+getArches 'solr'
+
+cat <<-EOH
+# this file is generated via
https://github.com/apache/solr-docker/blob/$(fileCommit "$self")/$self
+
+Maintainers: The Apache Solr Project <[email protected]> (@asfbot),
+ Shalin Mangar (@shalinmangar),
+ David Smiley (@dsmiley),
+ Jan Høydahl (@janhoy),
+ Houston Putman (@houstonputman)
+GitRepo: https://github.com/apache/solr-docker.git
+EOH
+
+for version in "${versions[@]}"; do
+ for variant in ''; do
+ dir="$version${variant:+/$variant}"
+ [ -f "$dir/Dockerfile" ] || continue
+
+ commit="$(dirCommit "$dir")"
+
+ # grep the full version from the Dockerfile, eg: SOLR_VERSION="6.6.1"
+ fullVersion="$(git show "$commit:$dir/Dockerfile" | \
+ grep -E 'SOLR_VERSION="[^"]+"' | \
+ sed -E -e 's/.*SOLR_VERSION="([^"]+)".*$/\1/')"
+ if [[ -z $fullVersion ]]; then
+ echo "Cannot determine full version from
$dir/Dockerfile"
+ exit 1
+ fi
+ versionAliases=(
+ "$fullVersion"
+ "$version"
+ )
+
+ if [[ -n "${aliases[$version]:-}" ]]; then
+ versionAliases=( "${versionAliases[@]}"
"${aliases[$version]:-}" )
+ fi
+ if [ -z "$variant" ]; then
+ variantAliases=( "${versionAliases[@]}" )
+ if [[ $version == "$latest_version" ]]; then
+ variantAliases=( "${variantAliases[@]}"
"latest" )
+ fi
+ else
+ variantAliases=( "${versionAliases[@]/%/-$variant}" )
+ if [[ $version == "$latest_version" ]]; then
+ variantAliases=( "${variantAliases[@]}"
"$variant" )
+ fi
+ fi
+
+ variantParent="$(awk 'toupper($1) == "FROM" { print $2 }'
"$dir/Dockerfile")"
+ variantArches="${parentRepoToArches[$variantParent]}"
+
+ echo
+ cat <<-EOE
+ Tags: $(sed -E 's/ +/, /g' <<<"${variantAliases[@]}")
+ Architectures: $(sed -E 's/ +/, /g' <<<"$variantArches")
+ GitCommit: $commit
+ Directory: $dir
+ EOE
+ done
+done
diff --git a/tools/init_macos.sh b/tools/init_macos.sh
new file mode 100755
index 0000000..eb42445
--- /dev/null
+++ b/tools/init_macos.sh
@@ -0,0 +1,27 @@
+# Source this file to prepare a mac for running scripts
+hash greadlink 2>/dev/null || {
+ echo >&2 "Required tool greadlink is not installed, please run 'brew install
coreutils'"
+ exit 1
+}
+hash gfind 2>/dev/null || {
+ echo >&2 "Required tool gfind is not installed, please run 'brew install
findutils'"
+ exit 1
+}
+hash gsed 2>/dev/null || {
+ echo >&2 "Required tool gsed is not installed, please run 'brew install
gnu-sed'"
+ exit 1
+}
+
+TOOL_PREFIX="$(brew --prefix)/bin"
+
+if [[ ! -d /tmp/docker-solr-bin ]]; then
+ mkdir -p /tmp/docker-solr-bin >/dev/null 2>&1
+ ln -s $TOOL_PREFIX/greadlink /tmp/docker-solr-bin/readlink
+ ln -s $TOOL_PREFIX/gfind /tmp/docker-solr-bin/find
+ ln -s $TOOL_PREFIX/gsed /tmp/docker-solr-bin/sed
+fi
+
+if [[ ! $PATH == *"docker-solr-bin"* ]]; then
+ export PATH=/tmp/docker-solr-bin:$PATH
+ echo >&2 "Configuring for macOS - adding /tmp/docker-solr-bin first in path"
+fi