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

Reply via email to