OLD | NEW |
| (Empty) |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import os | |
6 | |
7 | |
8 class LocalPathInfo(object): | |
9 | |
10 def __init__(self, path_priority_groups): | |
11 self._path_priority_groups = self._ParseLocalPaths(path_priority_groups) | |
12 | |
13 def GetLocalPath(self): | |
14 for priority_group in self._path_priority_groups: | |
15 priority_group = filter(os.path.exists, priority_group) | |
16 if not priority_group: | |
17 continue | |
18 return max(priority_group, key=lambda path: os.stat(path).st_mtime) | |
19 return None | |
20 | |
21 def IsPathInLocalPaths(self, path): | |
22 return any( | |
23 path in priority_group for priority_group in self._path_priority_groups) | |
24 | |
25 def Update(self, local_path_info): | |
26 if not local_path_info: | |
27 return | |
28 for priority_group in local_path_info._path_priority_groups: | |
29 group_list = [] | |
30 for path in priority_group: | |
31 if not self.IsPathInLocalPaths(path): | |
32 group_list.append(path) | |
33 if group_list: | |
34 self._path_priority_groups.append(group_list) | |
35 | |
36 @staticmethod | |
37 def _ParseLocalPaths(local_paths): | |
38 if not local_paths: | |
39 return [] | |
40 return [[e] if isinstance(e, basestring) else e for e in local_paths] | |
OLD | NEW |