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 |