emacs-windows-installer/update-sym-links.sh

77 lines
2.3 KiB
Bash
Raw Normal View History

#!/bin/bash
# update-sym-links - Symlink latest versions in parent folders
#
# Copyright 2023 Corwin Brust <corwin@bru.st>
#
# This program is distributed under the terms of the GNU Public
# License version 3 or (at your option) any later version.
#
BASE=/home/dh_aw28jd/corwin-emacs
DIRS="emacs-30 emacs-31 emacs-32"
PKGS="-installer.exe .zip -no-deps.zip -src.zip -sha256sums.txt"
FOUND=
for DIR in $DIRS ; do
#find emacs-29/* -type d -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head -1 | cut -d / -f 2
LATEST=$( ls -t $BASE/$DIR | grep -v 'latest' | grep "^$DIR" | head -1 )
HTACCESS=$BASE/$DIR/.htaccess
echo '<FilesMatch "\.directive(\.asc)?$">
deny from all
</FilesMatch>' > $HTACCESS
# remove AddDescription lines from .htaccess
cat $HTACCESS | grep -v ^AddDescription >> $HTACCESS
BL="$BASE/$DIR/$LATEST"
if [[ -r $BL ]] ; then
BN="${BASE}/${DIR}"
ln -sfT $BL $BN/${DIR}-latest
MOD=$( perl -MPOSIX=strftime -le \
"print strftime('%F.%H',localtime [stat shift]->[9])" \
$BN/${DIR}-latest)
FOUND="{\"branch\":\"$DIR\",\"latest\":\"$LATEST\",\"date\":\"$MOD\"} $FOUND"
# put an invarient link to the latest of each kind in each root
for FILE in $PKGS ; do
LINK=$( ls -1 ${BL}/*${FILE} )
NAME="${BN}/${DIR}-latest${FILE}"
#echo "$DIR $FILE $LINK"
if [[ -r $LINK ]] ; then
ln -fT $LINK $NAME
#ln -fT $LINK.sig $NAME.sig
#NOEXT=$(echo $FILE | perl -pne 's/^(?:\.|-)//; s/\..*$//g')
#BASENAME=$(basename $LINK)
echo "AddDescription \"<a href=${LATEST}>$(basename $LINK)</a>\" $(basename $NAME)\$" >>$HTACCESS
else
rm -f $NAME
#rm -f $NAME.sig
fi
done
echo "AddDescription \"<a href=${LATEST}/>latest: $LATEST</a>\" ${DIR}-latest\$" >>$HTACCESS
#echo "$DIR $LATEST"
else
echo "WARNING: No latest version found for $DIR"
fi
done
(TOTAL=0
for JSON in $FOUND ; do TOTAL=$((TOTAL+1)) ; done
COUNT=0
(echo -n "["
for JSON in $FOUND ; do
echo -n "$JSON";
COUNT=$((COUNT+1))
if [[ $COUNT -ne $TOTAL ]] ; then
echo -n ", "
fi
done
echo "]")) | tee $BASE/emacs-latest.json
(echo -n "// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later
document.emacsVersionData = "; \
cat $BASE/emacs-latest.json ; \
echo "// @license-end"
) | tee $BASE/emacs-latest.js