summaryrefslogtreecommitdiff
path: root/tools/generate-doap.sh
blob: 2fe4f7c8a3539ccc72d2d08032cadf95d947407f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash

write_doap_head()
{
    cat >"$1" <<-'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="http://usefulinc.com/ns/doap#"
         xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
         xmlns:schema="https://schema.org/">
  <Project>
    <name>ejabberd</name>
    <shortdesc>XMPP Server with MQTT Broker and SIP Service</shortdesc>
    <description>Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP Server, MQTT Broker, SIP Service)</description>
    <created>2002-11-16</created>
    <os>BSD</os>
    <os>Linux</os>
    <os>macOS</os>
    <os>Windows</os>
    <programming-langauge>Erlang</programming-langauge>
    <programming-langauge>C</programming-langauge>
    <category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
    <category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-server"/>
    <category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>

    <homepage rdf:resource="https://www.ejabberd.im"/>
    <download-page rdf:resource="https://www.process-one.net/en/ejabberd/downloads/"/>
    <download-mirror rdf:resource="https://github.com/processone/ejabberd/tags"/>
    <license rdf:resource="https://raw.githubusercontent.com/processone/ejabberd/master/COPYING"/>
    <schema:logo rdf:resource="https://docs.ejabberd.im/static/shared/images/footer_logo_e@2x.png"/>
    <bug-database rdf:resource="https://github.com/processone/ejabberd/issues"/>
    <support-forum rdf:resource="xmpp:ejabberd@conference.process-one.net?join"/>
    <repository>
      <GitRepository>
        <location rdf:resource="https://github.com/processone/ejabberd.git"/>
        <browse rdf:resource="https://github.com/processone/ejabberd"/>
      </GitRepository>
    </repository>

EOF
}

write_doap_tail()
{
    cat >>"$1" <<-'EOF'
  </Project>
</rdf:RDF>
EOF
}

write_rfcs()
{
    rfc=rfc$1
    out=$2
    int=$(echo $1 | sed 's/^0*//')

    imp=$(grep "\-protocol({rfc, $int," $BASE/src/* | sed "s/.*src\/\(.*\).erl.*'\([0-9.-]*\)'.*/\1 \2/")
    [ "$imp" == "" ] && imp="NA 0.0"

    echo "    <implements rdf:resource=\"https://www.rfc-editor.org/info/$rfc\"/>" >>$out
}

write_xeps()
{
    xep=xep-$1
    out=$2
    int=$(echo $1 | sed 's/^0*//')

    imp=$(grep "\-protocol({xep, $int," $BASE/src/* | sed "s/.*src\/\(.*\).erl.*'\([0-9.-]*\)'.*/\1 \2/")
    [ "$imp" == "" ] && imp="NA 0.0"

    sourcefiles=$(grep "\-protocol({xep, $int," $BASE/src/* | sed "s/.*src\/\(.*\).erl.*'\([0-9.-]*\)'.*/\1/" | tr '\012' ',' | sed 's|,$||' | sed 's|,|, |g' | sed 's|^ejabberd$||')
    versions=$(grep "\-protocol({xep, $int," $BASE/src/* | sed "s/.*src\/\(.*\).erl.*'\([0-9.-]*\)'.*/\2/" | head -1)

    echo "    <implements>" >>$out
    echo "      <xmpp:SupportedXep>" >>$out
    echo "        <xmpp:xep rdf:resource=\"https://xmpp.org/extensions/$xep.html\"/>" >>$out
    echo "        <xmpp:version>$versions</xmpp:version>" >>$out
    echo "        <xmpp:since></xmpp:since>" >>$out
    echo "        <xmpp:status></xmpp:status>" >>$out
    echo "        <xmpp:note>$sourcefiles</xmpp:note>" >>$out
    echo "      </xmpp:SupportedXep>" >>$out
    echo "    </implements>" >>$out
}

[ $# -eq 1 ] && BASE="$1" || BASE="$PWD"
[ -d $BASE/doc ] || mkdir $BASE/doc
temp=tools/ejabberd.temp
final=ejabberd.doap

write_doap_head $final

for x_num in $(grep "\-protocol({rfc" $BASE/src/* | sed "s/,//" | awk '{printf("%04d\n", $2)}' | sort -u)
do
    write_rfcs $x_num $temp
done
echo "" >>$temp

for x_num in $(grep "\-protocol({xep" $BASE/src/* | sed "s/,//" | awk '{printf("%04d\n", $2)}' | sort -u)
do
    write_xeps $x_num $temp
done

cat $temp >>$final
rm $temp

write_doap_tail $final