mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-06 22:24:12 -05:00
* Adjust update checker bash script. Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Update packages.yaml Signed-off-by: Satadru Pramanik <satadru@gmail.com> * Make outputs into a markdown table. Signed-off-by: Satadru Pramanik <satadru@gmail.com> --------- Signed-off-by: Satadru Pramanik <satadru@gmail.com>
182 lines
6.4 KiB
Bash
Executable File
182 lines
6.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Version 1.0
|
|
if [ ! -f packages.yaml ]; then
|
|
echo "packages.yaml not found."
|
|
exit 1
|
|
fi
|
|
if test "$1"; then
|
|
valid=
|
|
opt="core high medium low"
|
|
for o in $opt; do
|
|
[ "$1" == "$o" ] && valid=1
|
|
done
|
|
if ! test "$valid"; then
|
|
echo "Usage: $0 [activity] [offset] [lines]"
|
|
echo "activity: core|high|medium|low"
|
|
echo "offset: # of lines to skip"
|
|
echo "lines: # of lines to check"
|
|
exit 1
|
|
fi
|
|
if [[ "$1" == "core" ]]; then
|
|
rm -f /tmp/urls.txt
|
|
cat core_packages.txt > /tmp/names.txt
|
|
ps=$(< /tmp/names.txt)
|
|
ps=$(echo "$ps" | xargs)
|
|
for p in $ps; do
|
|
grep -1 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2 >> /tmp/urls.txt
|
|
done
|
|
else
|
|
grep -2 "^activity: $1" packages.yaml > /tmp/activity.txt
|
|
grep ^name: /tmp/activity.txt | cut -d' ' -f2 > /tmp/names.txt
|
|
grep ^url: /tmp/activity.txt | cut -d' ' -f2 > /tmp/urls.txt
|
|
rm -f /tmp/activity.txt
|
|
fi
|
|
else
|
|
grep ^name: packages.yaml | cut -d' ' -f2 > /tmp/names.txt
|
|
grep ^url: packages.yaml | cut -d' ' -f2 > /tmp/urls.txt
|
|
fi
|
|
if test "$2"; then
|
|
lines=$(wc -l /tmp/urls.txt | cut -d' ' -f1)
|
|
offset="$2"
|
|
urls=$((lines-offset))
|
|
if test "$3"; then
|
|
count=$3
|
|
tail "-$urls" /tmp/names.txt | head "-$count" > /tmp/new_names.txt
|
|
tail "-$urls" /tmp/urls.txt | head "-$count" > /tmp/new_urls.txt
|
|
else
|
|
tail "-$urls" /tmp/names.txt > /tmp/new_names.txt
|
|
tail "-$urls" /tmp/urls.txt > /tmp/new_urls.txt
|
|
fi
|
|
mv /tmp/new_names.txt /tmp/names.txt
|
|
mv /tmp/new_urls.txt /tmp/urls.txt
|
|
fi
|
|
|
|
: "${CREW_GCC_VER:=gcc15}"
|
|
: "${CREW_ICU_VER:=icu77.1}"
|
|
: "${CREW_LLVM_VER:=llvm20}"
|
|
: "${CREW_PERL_VER:=perl5.42}"
|
|
: "${CREW_PY_VER:=py3.13}"
|
|
: "${CREW_RUBY_VER:=ruby3.4}"
|
|
|
|
pkg_version() {
|
|
version=$(grep "\ \ version" ../packages/"${p}.rb" | head -n 1 \
|
|
| sed "s/#{CREW_GCC_VER}/$CREW_GCC_VER/g" \
|
|
| sed "s/#{CREW_ICU_VER}/$CREW_ICU_VER/g" \
|
|
| sed "s/#{CREW_LLVM_VER}/$CREW_LLVM_VER/g" \
|
|
| sed "s/#{CREW_PERL_VER}/$CREW_PERL_VER/g" \
|
|
| sed "s/#{CREW_PY_VER}/$CREW_PY_VER/g" \
|
|
| sed "s/#{CREW_RUBY_VER}/$CREW_RUBYY_VER/g" \
|
|
| awk '{print substr($2,2,length($2)-2)}')
|
|
version=${version%-*}
|
|
if [[ $version == *"@_ver"* ]]; then
|
|
echo "| _Please remove @_ver from the version string for ${p}.rb_ ||||"
|
|
version=missing
|
|
fi
|
|
}
|
|
echo "| Chromebrew Package | Package Source Url | Chromebrew Version | Available Version |"
|
|
echo "| :- | :-| :- | :- |"
|
|
c=0
|
|
ps=$(< /tmp/names.txt)
|
|
ps=$(echo "$ps" | xargs)
|
|
for p in $ps; do
|
|
a=$(grep -2 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2)
|
|
if [ "$a" != "none" ]; then
|
|
star=
|
|
repo=
|
|
ver=
|
|
nu=
|
|
u=$(grep -1 "^name: ${p}$" packages.yaml | tail -1 | cut -d' ' -f2)
|
|
if [[ -f ../packages/"$p.rb" ]]; then
|
|
version=
|
|
# version=$(grep "^ @_ver" ../packages/"$p.rb" 2>/dev/null | cut -d= -f2 | xargs)
|
|
pkg_version
|
|
else
|
|
echo "| _../packages/$p.rb is missing._ | | | |"
|
|
version=missing
|
|
fi
|
|
[ -z "$version" ] && version=$(grep "^ version" ../packages/"$p.rb" | cut -d"'" -f2)
|
|
cp=$(grep "^${p}$" core_packages.txt)
|
|
test "$cp" && star="*"
|
|
[[ "$u" == *"gnu.org"* ]] && repo="gnu"
|
|
[[ "$u" == *"gitlab"* ]] && repo="gitlab"
|
|
[[ "$u" == *"salsa.debian"* ]] && repo="gitlab"
|
|
[[ "$u" == *"code.videolan.org"* ]] && repo="gitlab"
|
|
[[ "$u" == *"github.com"* && $u == *"/releases"* ]] && repo="github"
|
|
[[ "$u" == *"savannah.gnu.org"* && $u == *"/releases"* ]] && repo="savannah"
|
|
case "$repo" in
|
|
gnu)
|
|
content=$(curl -Ls "$u")
|
|
content=${content/[ds|latest].tar//}
|
|
d=${content##*\.tar\.[g|l|x]z\">}
|
|
rel=$(echo "$d" | cut -d'<' -f1 | cut -d'-' -f2 | xargs)
|
|
ver=${rel%.tar*}
|
|
nu="$u/$p-$rel"
|
|
[[ "$version" != "$ver" ]] && echo "| $p$star | $nu | $version | $ver"
|
|
;;
|
|
github)
|
|
relu=
|
|
gh_repo=
|
|
relu=${u#*github.com/}
|
|
relu=${relu%/releases}
|
|
gh_repo=${relu%/tags}
|
|
if [[ $u == *"/releases"* ]]; then
|
|
ver=$(gh release ls --exclude-pre-releases --exclude-drafts -L 1 -R ${gh_repo} --json tagName -q '.[] | .tagName')
|
|
if [[ $? == 0 ]]; then
|
|
[[ -z "$ver" ]] && echo "| _https://github.com/${gh_repo} does not use releases._ ||||"
|
|
else
|
|
echo "| _https://github.com/${gh_repo} does not exist._ ||||"
|
|
fi
|
|
fi
|
|
if [[ $u == *"/tags"* ]] || [[ -z "$ver" ]]; then
|
|
# This is empty if there is text in the git tag.
|
|
ver=$(git -c 'versionsort.suffix=-' \
|
|
ls-remote --exit-code --refs --sort='version:refname' --tags https://github.com/${gh_repo} '*.*.*' \
|
|
| tail --lines=1 \
|
|
| cut --delimiter='/' --fields=3)
|
|
# This captures git tags with text if there is no exclusively
|
|
# numeric version tag.
|
|
[[ -z "$ver" ]] && ver=$(git ls-remote --tags https://github.com/${gh_repo} | cut -d'/' -f3 | grep -v "\^{}" | tail -n 1)
|
|
fi
|
|
nu=${u/releases/archive}
|
|
[[ "$version" != "${ver#v}" ]] && echo "| $p$star | $nu/$ver.tar.gz | $version | ${ver#v} |"
|
|
;;
|
|
gitlab)
|
|
gl_host="$(echo $u | awk -F[/:] '{print $4}')"
|
|
relu="${u#*${gl_host}/}"
|
|
gl_repo="${relu%/-*}"
|
|
gl_repo_suffix="${gl_repo#*/}"
|
|
# This is empty if there is text in the git tag.
|
|
ver=$(git -c 'versionsort.suffix=-' \
|
|
ls-remote --exit-code --refs --sort='version:refname' --tags https://${gl_host}/${gl_repo}.git '*.*.*' \
|
|
| tail --lines=1 \
|
|
| cut --delimiter='/' --fields=3)
|
|
# This captures git tags with text if there is no exclusively
|
|
# numeric version tag.
|
|
[[ -z "$ver" ]] && ver=$(git ls-remote --tags https://${gl_host}/${gl_repo}.git | cut -d'/' -f3 | grep -v "\^{}" | tail -n 1)
|
|
nu="https://${gl_host}/${gl_repo}/-/archive/${ver}/${gl_repo_suffix}-${ver}.tar.gz"
|
|
[[ "$version" != "${ver#v}" ]] && echo "| $p$star | $nu/$ver.tar.gz | $version | ${ver#v}|"
|
|
;;
|
|
savannah)
|
|
content=$(curl -Ls "$u")
|
|
d=${content##*\.tar\.[g|l|x]z\">}
|
|
rel=$(echo "$d" | cut -d'<' -f1 | cut -d'-' -f2 | xargs | cut -d' ' -f1)
|
|
rel=${rel% *}
|
|
ver=${rel%.tar*}
|
|
nu="$u/$p-$rel"
|
|
[[ "$version" != "$ver" ]] && echo "| $p$star | $nu | $version | $ver|"
|
|
;;
|
|
*)
|
|
echo "| $p$star | $u | $version | not checked|"
|
|
esac
|
|
c=$((c+1))
|
|
fi
|
|
done
|
|
echo "Total packages: $c"
|
|
#most /tmp/urls.txt
|
|
#if ! test $(command -v elinks 2> /dev/null); then
|
|
# crew install elinks
|
|
#fi
|
|
#for u in $(cat /tmp/urls.txt); do elinks $u; done
|
|
#rm -f /tmp/names.txt
|
|
#rm -f /tmp/urls.txt
|