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)