1
2
3
4
5 """
6
7 homepage
8 ========
9
10 Fetches DOAP by searching doapspace.org by a project's homepage.
11
12 """
13
14 __docformat__ = 'epytext'
15
16 import logging
17
18 from doapfiend.plugins.base import Plugin
19 from doapfiend.doaplib import fetch_doap, query_by_homepage
20
21
23
24 """Class for formatting DOAP output"""
25
26
27 name = "homepage"
28 enabled = False
29 enable_opt = name
30
32 '''Setup RDF/XML OutputPlugin class'''
33 super(OutputPlugin, self).__init__()
34 self.log = logging.getLogger("doapfiend")
35 self.options = None
36
38 """Add plugin's options to doapfiend's opt parser"""
39 search.add_option('-o', '--%s' % self.name,
40 action='store',
41 dest=self.enable_opt,
42 help="Search for DOAP by a project's homepage",
43 metavar='HOMEPAGE_URL')
44 return parser, output, search
45
47 '''
48 Get DOAP given a project's homepage
49
50 @rtype: unicode
51 @return: DOAP
52 '''
53 resp = query_by_homepage(self.options.homepage)
54 self.log.debug(resp)
55 if len(resp) == 0:
56 self.log.error("Not found: %s" % self.options.homepage)
57 return
58 elif len(resp) == 1:
59 url = resp[0][1]
60 else:
61
62 self.log.error("Warning: Multiple DOAP found.")
63 url = None
64 for this in resp:
65 self.log.error(this)
66 if not url:
67
68 url = this[1]
69 if this[0] == 'ex':
70 url = this[1]
71 self.log.error("Using %s" % url)
72 return fetch_doap(url, self.options.proxy)
73