You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
#!/bin/sh -e
|
|
|
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
SUBMODULES="$(git submodule status --recursive | cut -c2-)"
|
|
|
|
[ -z "$SUBMODULES" ] && echo "No submodules defined!" && exit 0
|
|
|
|
tmp=$(mktemp)
|
|
printf '{}' >"$tmp"
|
|
|
|
IFS="
|
|
"
|
|
for i in $SUBMODULES; do
|
|
sha=$(echo "$i" | cut -d" " -f1 | cut -c1-10)
|
|
ver=$(echo "$i" | cut -d" " -f3 | tr -d '()')
|
|
|
|
path=$(echo "$i" | cut -d" " -f2)
|
|
name=$(echo "$path" | awk -F/ '{print $NF}')
|
|
|
|
remote=$(git -C "$path" remote get-url origin)
|
|
|
|
host=$(echo "$remote" | cut -d"/" -f3)
|
|
[ "$host" = github.com ] && host=
|
|
|
|
repo=$(echo "$remote" | cut -d"/" -f4-5 | cut -d'.' -f1)
|
|
|
|
entry=$(jq -n --arg name "$name" \
|
|
--arg sha "$sha" \
|
|
--arg ver "$ver" \
|
|
--arg repo "$repo" \
|
|
--arg host "$host" \
|
|
'{
|
|
($name): {
|
|
sha: $sha,
|
|
git_version: $ver,
|
|
repo: $repo
|
|
} + (if $host != "" then {git_host: $host} else {} end)
|
|
}')
|
|
|
|
jq --argjson new "$entry" '. + $new' "$tmp" >"${tmp}.new"
|
|
mv "$tmp.new" "$tmp"
|
|
done
|
|
|
|
jq '.' "$tmp" >cpmfile.json
|
|
rm -f "$tmp"
|