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