46 lines
1.1 KiB
Bash
Executable file
46 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Update docker hub image descriptions. The API is not documented and might
|
|
# break in the future.
|
|
#
|
|
# Usage: ./dockerhub-metadata <user> <password> [org]
|
|
set -euo pipefail
|
|
|
|
user=$1
|
|
org=${2:-nixpkgs}
|
|
system_name=${NIX_SYSTEM_NAME:-x86_64-linux}
|
|
|
|
nix_eval() {
|
|
nix-instantiate --strict --eval --argstr system "$system_name" --json "$@"
|
|
}
|
|
|
|
releases_json=$(nix_eval)
|
|
|
|
to_json() {
|
|
local desc=$1 full_desc=$2
|
|
jq -n \
|
|
--arg desc "$desc" \
|
|
--arg full_desc "$full_desc" \
|
|
'.description=$desc | .full_description=$full_desc'
|
|
}
|
|
|
|
echo "=== Updating Docker Hub project descriptions"
|
|
|
|
for attr in $(echo "$releases_json" | jq -r "keys[]") ; do
|
|
echo "--- $attr"
|
|
desc=$(nix_eval -A "$attr.meta.description" | jq -r .)
|
|
|
|
if [[ -f "$attr/README.md" ]]; then
|
|
full_desc=$(< "$attr/README.md")
|
|
else
|
|
full_desc=$(< "README.md")
|
|
fi
|
|
|
|
data=$(to_json "$desc" "$full_desc")
|
|
echo "data: $data"
|
|
url=https://cloud.docker.com/v2/repositories/$org/$attr/
|
|
|
|
curl -XPATCH -H "Content-Type: application/json" --user "$user" --data "$data" "$url"
|
|
done
|
|
|
|
echo OK
|