1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 import os
18 import itertools
19
20 from libxyz.core.utils import bstring
21
22 from domain_base import BaseDomain
23
24 -class Domain(BaseDomain):
25 """
26 Bin path domain
27 """
28
30 """
31 Preparation stuff
32 """
33
34 path = os.getenv("PATH", "")
35
36 for d in path.split(":"):
37 self._update(d)
38
39
40
41 - def complete(self, buf):
42 """
43 Take current buffer and return list-generator of all
44 matched entries in current domain.
45
46 @param buf: Current buffer
47 @return: list-generator
48 """
49
50 return itertools.ifilter(lambda x: x.startswith(bstring(buf)),
51 self._data)
52
53
54
55 - def _update(self, directory):
56 """
57 Update binpath set with files in directory
58 """
59
60 for _, _, files in os.walk(directory):
61 self._data |= set(files)
62