annotate scripts/list_plugins/list_plugins.py @ 103:e69883c1ec30

docker (libervia_cont): added a "status" command: - if libervia container is not running, it exits with error code 1 - if libervia container is running but no server is launched, it exits with error code 2 - if libervia container is running and server is launcher, it exits with error code 0 (success) server detection is done by doing a simple grep on logs, that's not perfectly reliable (ports can be changed in configuration, even if that doesn't really make sense in Docker context) but should be good enough for this purpose.
author Goffi <goffi@goffi.org>
date Sat, 27 Feb 2016 00:45:40 +0100
parents cea50c3e94f0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
1 #!/usr/bin/python
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
3 """
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
4 SàT website: Salut à Toi's presentation website
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
5 Copyright (C) 2015 Jérôme Poisson (goffi@goffi.org)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
6 Copyright (C) 2015 Adrien Cossa (souliane@mailoo.org)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
7
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
8 This file is part of SàT website.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
9
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
10 SàT website is free software: you can redistribute it and/or modify
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
11 it under the terms of the GNU Affero General Public License as published by
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
12 the Free Software Foundation, either version 3 of the License, or
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
13 (at your option) any later version.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
14
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
15 Foobar is distributed in the hope that it will be useful,
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
18 GNU Affero General Public License for more details.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
19
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
20 You should have received a copy of the GNU Affero General Public License
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
21 along with Foobar. If not, see <http://www.gnu.org/licenses/>.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
22 """
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
23
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
24
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
25 from sat import plugins
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
26 import pkgutil
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
27
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
28 WEBSITE = "/home/souliane/workspace/sat_website"
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
29
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
30 HEADER = u"""
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
31 {% comment %}
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
32 SàT website: Salut à Toi's presentation website
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
33 Copyright (C) 2012 Jérôme Poisson (goffi@goffi.org)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
34 Copyright (C) 2015 Adrien Cossa (souliane@mailoo.org)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
35
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
36 This file is part of SàT website.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
37
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
38 SàT website is free software: you can redistribute it and/or modify
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
39 it under the terms of the GNU Affero General Public License as published by
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
40 the Free Software Foundation, either version 3 of the License, or
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
41 (at your option) any later version.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
42
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
43 Foobar is distributed in the hope that it will be useful,
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
44 but WITHOUT ANY WARRANTY; without even the implied warranty of
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
45 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
46 GNU Affero General Public License for more details.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
47
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
48 You should have received a copy of the GNU Affero General Public License
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
49 along with Foobar. If not, see <http://www.gnu.org/licenses/>.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
50
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
51
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
52 NOTE: this file has been automatically generated by the following script:
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
53 http://repos.goffi.org/sat_docs/file/tip/scripts/list_plugins/list_plugins.py
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
54
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
55 Please avoid manual modification, try to update the script instead! Before /
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
56 after a regeneration, don't forget to save / merge the manual modifications.
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
57
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
58 {% endcomment %}
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
59 {% load i18n %}
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
60 """
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
61
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
62 import urllib2
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
63 import lxml.html
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
64
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
65 # use it to retrieve the XEP name from the official list
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
66 XEPS_URL = "http://xmpp.org/xmpp-protocols/xmpp-extensions/"
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
67
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
68 def get_infos():
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
69 result = {}
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
70 doc = lxml.html.parse(XEPS_URL)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
71
69
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
72 def setXEP(name):
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
73 url = "http://xmpp.org/extensions/%s.html" % name.lower()
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
74 # use the XEP name as description
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
75 desc = doc.xpath("//tr[@id='%s']/td" % name.lower().replace("-", ""))[1].text
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
76 desc = '{% trans "' + desc.replace('"', '\\"') + '" %}'
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
77 result.setdefault("xep", []).append((name, url, desc))
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
78
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
79 def setEXP(name):
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
80 desc = infos['description']
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
81 if desc.startswith('Implementation of '):
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
82 desc = desc[18:]
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
83 desc = '{% trans "' + desc.replace('"', '\\"') + '" %}'
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
84 result.setdefault("exp", []).append((name, None, desc))
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
85
45
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
86 for loader, module_name, is_pkg in pkgutil.walk_packages(plugins.__path__):
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
87 module = loader.find_module(module_name).load_module(module_name)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
88 infos = getattr(module, 'PLUGIN_INFO')
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
89
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
90 if infos['type'] == 'XEP':
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
91 name = infos['import_name']
69
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
92 setXEP(name)
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
93 protocols = infos['protocols']
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
94 for protocol in protocols:
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
95 if protocol != name:
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
96 setXEP(protocol)
45
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
97 else:
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
98 name = '{% trans "' + infos['name'] + '" %}'
69
cea50c3e94f0 list_plugins script also takes in consideration the XEPs that are defined in the "protocols" field of PLUGIN_INFO
souliane <souliane@mailoo.org>
parents: 45
diff changeset
99 setEXP(name)
45
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
100
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
101 return result
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
102
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
103
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
104 def print_infos(infos, file):
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
105 with open(file, 'w',) as f:
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
106 f.write(HEADER.encode("utf-8"))
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
107 for name, url, desc in infos:
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
108 name = ('<a href="%s" target="#">%s</a>' % (url, name)) if url else name
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
109 entry = u"""
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
110 <div class="row">
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
111 <div class="col-md-2">%s</div>
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
112 <div class="col-md-7 feature">%s</div>
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
113 </div>""" % (name, desc)
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
114 f.write(entry.encode("utf-8"))
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
115
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
116 infos = get_infos()
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
117 for type_ in ("xep", "exp"):
2ff373d2571a add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff changeset
118 print_infos(infos[type_], "%s/templates/sat_website/specifications_%s.html" % (WEBSITE, type_))