| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 from recipe_engine import recipe_api | 5 from recipe_engine import recipe_api |
| 6 | 6 |
| 7 | 7 |
| 8 class FileApi(recipe_api.RecipeApi): | 8 class FileApi(recipe_api.RecipeApi): |
| 9 """FileApi contains helper functions for reading and writing files.""" | 9 """FileApi contains helper functions for reading and writing files.""" |
| 10 | 10 |
| 11 def __init__(self, **kwargs): | 11 def __init__(self, **kwargs): |
| 12 super(FileApi, self).__init__(**kwargs) | 12 super(FileApi, self).__init__(**kwargs) |
| 13 | 13 |
| 14 def copy(self, name, source, dest, step_test_data=None, **kwargs): | 14 def copy(self, name, source, dest, step_test_data=None, **kwargs): |
| 15 """Copy a file.""" | 15 """Copy a file.""" |
| 16 return self.m.python.inline( | 16 return self.m.python.inline( |
| 17 name, | 17 name, |
| 18 """ | 18 """ |
| 19 import shutil | 19 import shutil |
| 20 import sys | 20 import sys |
| 21 # Apparently, shutil.copy fails if files are binary-equal on *nix OSes. | |
| 22 # See http://crbug.com/636168#c8. | |
| 23 if hasattr(shutil, '_samefile'): | |
| 24 if shutil._samefile(sys.argv[1], sys.argv[2]): | |
| 25 sys.exit(0) | |
| 26 shutil.copy(sys.argv[1], sys.argv[2]) | 21 shutil.copy(sys.argv[1], sys.argv[2]) |
| 27 """, | 22 """, |
| 28 args=[source, dest], | 23 args=[source, dest], |
| 29 add_python_log=False, | 24 add_python_log=False, |
| 30 step_test_data=step_test_data, | 25 step_test_data=step_test_data, |
| 31 **kwargs | 26 **kwargs |
| 32 ) | 27 ) |
| 33 | 28 |
| 34 def copytree(self, name, source, dest, symlinks=False, **kwargs): | 29 def copytree(self, name, source, dest, symlinks=False, **kwargs): |
| 35 """Run shutil.copytree in a step.""" | 30 """Run shutil.copytree in a step.""" |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 self.m.python.inline( | 210 self.m.python.inline( |
| 216 'rmwildcard %s in %s' % (pattern, path), | 211 'rmwildcard %s in %s' % (pattern, path), |
| 217 """ | 212 """ |
| 218 import sys | 213 import sys |
| 219 from common import chromium_utils # Error? See https://crbug.com/584783. | 214 from common import chromium_utils # Error? See https://crbug.com/584783. |
| 220 | 215 |
| 221 chromium_utils.RemoveFilesWildcards(sys.argv[1], root=sys.argv[2]) | 216 chromium_utils.RemoveFilesWildcards(sys.argv[1], root=sys.argv[2]) |
| 222 """, | 217 """, |
| 223 args=[pattern,path], | 218 args=[pattern,path], |
| 224 **kwargs) | 219 **kwargs) |
| OLD | NEW |