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 LOG = logging.getLogger("doapfiend")
22
24
25 """Class for formatting DOAP output"""
26
27
28 name = "homepage"
29 enabled = False
30 enable_opt = name
31
33 '''Setup RDF/XML OutputPlugin class'''
34 super(OutputPlugin, self).__init__()
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 return do_search(self.options.homepage)
54
56 '''
57 Get DOAP given a project's homepage
58
59 @param homepage: Project homepage URL
60
61 @rtype: unicode
62 @return: DOAP
63 '''
64 resp = query_by_homepage(homepage)
65 LOG.debug(resp)
66 if len(resp) == 0:
67 LOG.error("Not found: %s" % homepage)
68 return
69 elif len(resp) == 1:
70 url = resp[0][1]
71 else:
72
73 LOG.error("Warning: Multiple DOAP found.")
74 url = None
75 for this in resp:
76 LOG.error(this)
77 if not url:
78
79 url = this[1]
80 if this[0] == 'ex':
81 url = this[1]
82 LOG.error("Using %s" % url)
83 return fetch_doap(url)
84