/ docs / src / links.py
links.py
 1  #!/usr/bin/env python
 2  # vim: sts=4 sw=4 et
 3  
 4  import os, sys
 5  
 6  try:
 7      from os.path import relpath
 8  except:
 9      def relpath(path, start=os.path.curdir):
10          """Return a relative version of a path"""
11          
12          if not path:
13              raise ValueError("no path specified")
14          
15          start_list = os.path.abspath(start).split(os.path.sep)
16          path_list = os.path.abspath(path).split(os.path.sep)
17  
18          # Work out how much of the filepath is shared by start and path.
19          i = len(os.path.commonprefix([start_list, path_list]))
20          
21          rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]
22          if not rel_list:
23              return os.path.curdir
24          return os.path.join(*rel_list)
25  
26  path = '.'
27  if len(sys.argv) < 3:
28      sys.stderr.write("Usage: %s links.db link [path]\n" % sys.argv[0])
29      sys.exit(1)
30  
31  if not sys.argv[1]:
32      sys.exit(0)
33  
34  links = {}
35  
36  for l in open(sys.argv[1]):
37      l = l.split('\t', 1)
38      if len(l) != 2:
39          continue
40      links[l[0]] = l[1].strip()
41  
42  if len(sys.argv) > 3:
43      path = sys.argv[3]
44  
45  l = sys.argv[2]
46  if l in links:
47      print relpath(links[l] + '.html', path)