Skip to content

Commit

Permalink
feat(srcinfo.sh): move to separate file, add maintainer and `repolo…
Browse files Browse the repository at this point in the history
…gy` logging
  • Loading branch information
vigress8 committed May 4, 2024
1 parent 3a1954c commit 5249b15
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 53 deletions.
55 changes: 2 additions & 53 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,58 +41,7 @@ repos:
- id: update-srcinfo
name: update .SRCINFO data
language: system
entry: |
bash -c 'function srcinfo() {
local CARCH='CARCH_REPLACE' DISTRO='ubuntu:jammy' src sum vars a_sum var ar car aars bar ars rar \
known_hashsums_src=("b2" "sha512" "sha384" "sha256" "sha224" "sha1" "md5") \
known_archs_src=("amd64" "arm64" "armel" "armhf" "i386" "mips64el" "ppc64el" "riscv64" "s390x") \
allvars=("pkgname" "gives" "pkgver" "pkgrel" "epoch" "pkgdesc" "url" "priority") \
allars=("arch" "source" "depends" "makedepends" "checkdepends" "optdepends" "pacdeps" "conflicts" "breaks" \
"replaces" "provides" "incompatible" "compatible" "backup" "mask" "noextract" "nosubmodules" "license")
source "${1}"
for src in "${known_archs_src[@]}"; do
for vars in {source,depends,makedepends,optdepends,pacdeps,checkdepends,provides,conflicts,breaks,replaces}; do
allars+=("${vars}_${src}")
done
allvars+=("gives_${src}")
done
for sum in "${known_hashsums_src[@]}"; do
allars+=("${sum}sums")
for a_sum in "${known_archs_src[@]}"; do
allars+=("${sum}sums_${a_sum}")
done
done
for var in "${allvars[@]}"; do
declare -n "rar=${var}"
if [[ -n ${rar} ]]; then
rar="${rar//+([[:space:]])/ }"
rar="${rar#[[:space:]]}"
rar="${rar%[[:space:]]}"
echo "${var} = ${rar}"
fi
done
for ar in "${allars[@]}"; do
declare -n "bar=${ar}"
if [[ -n ${bar[@]} ]]; then
for ars in "${bar[@]}"; do
ars="${ars//+([[:space:]])/ }"
ars="${ars#[[:space:]]}"
ars="${ars%[[:space:]]}"
if [[ ${ars} =~ CARCH_REPLACE ]]; then
for aars in ${arch[@]}; do
echo "${ar}_${aars} = ${ars}" | sed -e "s/CARCH_REPLACE/${aars}/g"
done
else
echo "${ar} = ${ars}"
fi
done
fi
done
unset "${allars[@]}" "${allvars[@]}"
}
mapfile -t packagelist < packagelist
for package in "${packagelist[@]}"; do
srcinfo packages/${package}/${package}.pacscript | tee packages/${package}/.SRCINFO > /dev/null
done'
entry: ./srcinfo.sh
files: '^.*\.pacscript$'

# vim:set ft=yaml ts=2 sw=2 et:
54 changes: 54 additions & 0 deletions srcinfo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
set -e

CARCH=@CARCH@ DISTRO=ubuntu:jammy
distros="focal jammy mantic noble oracular buster bullseye bookworm trixie sid devel"
vars="source depends makedepends optdepends pacdeps checkdepends provides conflicts breaks replaces"
archs="amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x"
sums="b2 sha512 sha384 sha256 sha224 sha1 md5"
_distros="{${distros// /,}}" _vars="{${vars// /,}}" _archs="{${archs// /,}}" _sums="{${sums// /,}}"
allvars=(pkgname gives pkgver pkgrel epoch pkgdesc url priority)
allars=(arch source depends makedepends checkdepends optdepends pacdeps conflicts breaks replaces provides incompatible compatible backup mask noextract nosubmodules license maintainer repology)
eval "allars+=(${_vars}_${_distros} ${_vars}_${_archs} ${_vars}_${_distros}_${_archs} gives_${_distros} gives_${_archs} gives_${_distros}_${_archs} ${_sums}sums ${_sums}sums_${_distros} ${_sums}sums_${_archs} ${_sums}sums_${_distros}_${_archs})"

function srcinfo() {
local var ar elem a

# shellcheck disable=1090
source "${1}"
shopt -s extglob
for var in "${allvars[@]}"; do
local -n ref="${var}"
[[ -n ${ref} ]] || continue
ref="${ref//+([[:space:]])/ }"
ref="${ref#[[:space:]]}"
ref="${ref%[[:space:]]}"
printf '%s = %s\n' "${var}" "${ref}"
done
for ar in "${allars[@]}"; do
local -n ref="${ar}"
[[ -n ${ref[*]} ]] || continue
for elem in "${ref[@]}"; do
elem="${elem//+([[:space:]])/ }"
elem="${elem#[[:space:]]}"
elem="${elem%[[:space:]]}"
if [[ ${elem} = *@CARCH@* ]]; then
for a in "${arch[@]}"; do
elem="${elem//@CARCH@/${a}}"
printf '%s_%s = %s\n' "${ar}" "${a}" "${elem}"
done
else
printf '%s = %s\n' "${ar}" "${elem}"
fi
done
done
}

(($# <= 0)) && echo "You failed to specify a pacscript." && exit 1

for f; do
srcinfo "${f}" > "${f%/*}/.SRCINFO" &
done
wait

# vim:set ft=sh ts=2 sw=2 et:

0 comments on commit 5249b15

Please sign in to comment.