]> Sergey Matveev's repositories - releases-feed.git/blob - releases.atom.zsh
2659adac3bd102606b616321b8f8e6af41c2a302
[releases-feed.git] / releases.atom.zsh
1 #!/usr/bin/env zsh
2 # releases.atom.zsh -- releases.atom generator
3 # Copyright (C) 2022-2024 Sergey Matveev <stargrave@stargrave.org>
4
5 setopt ERR_EXIT
6
7 [[ -n "$ATOM_ID" ]]
8 [[ -n "$NAME" ]]
9 [[ -n "$BASE_URL" ]]
10 [[ -n "$AUTHOR_EMAIL" ]]
11 export TZ=UTC
12 zmodload -F zsh/datetime b:strftime
13 strftime -s UPDATED %FT%TZ
14 ATOM=releases.atom
15 tmp=`mktemp`
16 trap "rm -f $tmp" HUP PIPE INT QUIT TERM EXIT
17
18 cat > $tmp <<EOF
19 <?xml version="1.0" encoding="UTF-8"?>
20 <feed xmlns="http://www.w3.org/2005/Atom">
21   <title>$NAME releases</title>
22   <id>urn:uuid:$ATOM_ID</id>
23   <link rel="self" href="$BASE_URL/$ATOM"></link>
24   <updated>$UPDATED</updated>
25   <author>
26     <email>$AUTHOR_EMAIL</email>
27   </author>
28 EOF
29
30 zmodload -F zsh/stat b:zstat
31 for meta (*.meta4(om)) {
32     fn=$meta:r
33     title=${meta%.tar.*}
34     zstat -A updated -F %FT%TZ +mtime $meta
35     cat >> $tmp <<EOF
36   <entry>
37     <title>$title</title>
38     <id>$BASE_URL/$fn</id>
39     <link rel="alternate" type="application/metalink4+xml" href="$BASE_URL/$meta" />
40     <updated>${updated[1]}</updated>
41   </entry>
42 EOF
43 }
44
45 echo "</feed>" >> $tmp
46
47 zstat -A size_our +size $tmp
48 size_their=0
49 if [[ -e $ATOM ]] ; then
50     zstat -A size_their +size $ATOM
51 fi
52 [[ ${size_our[1]} = ${size_their[1]} ]] || mv $tmp $ATOM