29 lines
1 KiB
Bash
29 lines
1 KiB
Bash
#!/bin/sh
|
|
|
|
echo "GH_TUPLE= \\"
|
|
for _sm_root in $(find . -type f -name .gitmodules | sed 's/\.gitmodules$//' | sort)
|
|
do
|
|
(
|
|
cd "${_sm_root}"
|
|
|
|
# Crawl name|path|url list of submodules within _sm_root
|
|
grep -e '^\[submodule "' -e 'path = ' -e 'url = ' .gitmodules | \
|
|
sed -E -e 's|.*"([^"]+)".*|\1|' -e 's|.*= ||' | \
|
|
paste - - - | \
|
|
sed -E 's/[[:space:]]+/|/g' | \
|
|
while read _sm
|
|
do
|
|
_sm_name=$(echo "${_sm}" | cut -d '|' -f 1)
|
|
_sm_path=$(echo "${_sm}" | cut -d '|' -f 2)
|
|
_sm_url=$(echo "${_sm}" | cut -d '|' -f 3)
|
|
|
|
_sm_prefix=$(echo "${_sm_root}" | sed 's|^\./||')
|
|
|
|
_account_project=$(echo "${_sm_url}" | sed -e 's|^https://github.com/||' -e 's|/|:|g' -e 's|\.git$||')
|
|
_group=$(echo "${_account_project}" | cut -d ':' -f 2 | tr -cd 'a-zA-Z0-9_')
|
|
_tagname_group_subdir=$(git submodule status "${_sm_path}" | sed -E -e 's|^.||' -e "s|[[:space:]]+|:${_group}/${_sm_prefix}|" -e 's|[[:space:]]+.*$||')
|
|
echo -e "\t${_account_project}:${_tagname_group_subdir} \\"
|
|
done
|
|
)
|
|
done
|
|
echo ""
|