| OLD | NEW |
| 1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 import errno | 32 import errno |
| 33 import exceptions | 33 import exceptions |
| 34 import glob | 34 import glob |
| 35 import hashlib | 35 import hashlib |
| 36 import os | 36 import os |
| 37 import shutil | 37 import shutil |
| 38 import sys | 38 import sys |
| 39 import tempfile | 39 import tempfile |
| 40 import time | 40 import time |
| 41 | 41 |
| 42 |
| 42 class FileSystem(object): | 43 class FileSystem(object): |
| 43 """FileSystem interface for webkitpy. | 44 """FileSystem interface for webkitpy. |
| 44 | 45 |
| 45 Unless otherwise noted, all paths are allowed to be either absolute | 46 Unless otherwise noted, all paths are allowed to be either absolute |
| 46 or relative.""" | 47 or relative.""" |
| 47 sep = os.sep | 48 sep = os.sep |
| 48 pardir = os.pardir | 49 pardir = os.pardir |
| 49 | 50 |
| 50 def abspath(self, path): | 51 def abspath(self, path): |
| 51 return os.path.abspath(path) | 52 return os.path.abspath(path) |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 This is like tempfile.mkdtemp, but if used in a with statement | 141 This is like tempfile.mkdtemp, but if used in a with statement |
| 141 the directory will self-delete at the end of the block (if the | 142 the directory will self-delete at the end of the block (if the |
| 142 directory is empty; non-empty directories raise errors). The | 143 directory is empty; non-empty directories raise errors). The |
| 143 directory can be safely deleted inside the block as well, if so | 144 directory can be safely deleted inside the block as well, if so |
| 144 desired. | 145 desired. |
| 145 | 146 |
| 146 Note that the object returned is not a string and does not support all o
f the string | 147 Note that the object returned is not a string and does not support all o
f the string |
| 147 methods. If you need a string, coerce the object to a string and go from
there. | 148 methods. If you need a string, coerce the object to a string and go from
there. |
| 148 """ | 149 """ |
| 149 class TemporaryDirectory(object): | 150 class TemporaryDirectory(object): |
| 151 |
| 150 def __init__(self, **kwargs): | 152 def __init__(self, **kwargs): |
| 151 self._kwargs = kwargs | 153 self._kwargs = kwargs |
| 152 self._directory_path = tempfile.mkdtemp(**self._kwargs) | 154 self._directory_path = tempfile.mkdtemp(**self._kwargs) |
| 153 | 155 |
| 154 def __str__(self): | 156 def __str__(self): |
| 155 return self._directory_path | 157 return self._directory_path |
| 156 | 158 |
| 157 def __enter__(self): | 159 def __enter__(self): |
| 158 return self._directory_path | 160 return self._directory_path |
| 159 | 161 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 """Return the contents of the file at the given path as a byte string.""
" | 198 """Return the contents of the file at the given path as a byte string.""
" |
| 197 with file(path, 'rb') as f: | 199 with file(path, 'rb') as f: |
| 198 return f.read() | 200 return f.read() |
| 199 | 201 |
| 200 def write_binary_file(self, path, contents): | 202 def write_binary_file(self, path, contents): |
| 201 with file(path, 'wb') as f: | 203 with file(path, 'wb') as f: |
| 202 f.write(contents) | 204 f.write(contents) |
| 203 | 205 |
| 204 def open_text_file_for_reading(self, path): | 206 def open_text_file_for_reading(self, path): |
| 205 # Note: There appears to be an issue with the returned file objects | 207 # Note: There appears to be an issue with the returned file objects |
| 206 # not being seekable. See http://stackoverflow.com/questions/1510188/can
-seek-and-tell-work-with-utf-8-encoded-documents-in-python . | 208 # not being seekable. See |
| 209 # http://stackoverflow.com/questions/1510188/can-seek-and-tell-work-with
-utf-8-encoded-documents-in-python |
| 210 # . |
| 207 return codecs.open(path, 'r', 'utf8') | 211 return codecs.open(path, 'r', 'utf8') |
| 208 | 212 |
| 209 def open_text_file_for_writing(self, path): | 213 def open_text_file_for_writing(self, path): |
| 210 return codecs.open(path, 'w', 'utf8') | 214 return codecs.open(path, 'w', 'utf8') |
| 211 | 215 |
| 212 def read_text_file(self, path): | 216 def read_text_file(self, path): |
| 213 """Return the contents of the file at the given path as a Unicode string
. | 217 """Return the contents of the file at the given path as a Unicode string
. |
| 214 | 218 |
| 215 The file is read assuming it is a UTF-8 encoded file with no BOM.""" | 219 The file is read assuming it is a UTF-8 encoded file with no BOM.""" |
| 216 with codecs.open(path, 'r', 'utf8') as f: | 220 with codecs.open(path, 'r', 'utf8') as f: |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 def copytree(self, source, destination): | 267 def copytree(self, source, destination): |
| 264 shutil.copytree(source, destination) | 268 shutil.copytree(source, destination) |
| 265 | 269 |
| 266 def split(self, path): | 270 def split(self, path): |
| 267 """Return (dirname, basename + '.' + ext)""" | 271 """Return (dirname, basename + '.' + ext)""" |
| 268 return os.path.split(path) | 272 return os.path.split(path) |
| 269 | 273 |
| 270 def splitext(self, path): | 274 def splitext(self, path): |
| 271 """Return (dirname + os.sep + basename, '.' + ext)""" | 275 """Return (dirname + os.sep + basename, '.' + ext)""" |
| 272 return os.path.splitext(path) | 276 return os.path.splitext(path) |
| OLD | NEW |