OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /// Helper functionality to make working with IO easier. | 5 /// Helper functionality to make working with IO easier. |
6 library pub.io; | 6 library pub.io; |
7 | 7 |
8 import 'dart:async'; | 8 import 'dart:async'; |
9 import 'dart:collection'; | 9 import 'dart:collection'; |
10 import 'dart:convert'; | 10 import 'dart:convert'; |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 log.io("Reading binary file $file."); | 158 log.io("Reading binary file $file."); |
159 var contents = new File(file).readAsBytesSync(); | 159 var contents = new File(file).readAsBytesSync(); |
160 log.io("Read ${contents.length} bytes from $file."); | 160 log.io("Read ${contents.length} bytes from $file."); |
161 return contents; | 161 return contents; |
162 } | 162 } |
163 | 163 |
164 /// Creates [file] and writes [contents] to it. | 164 /// Creates [file] and writes [contents] to it. |
165 /// | 165 /// |
166 /// If [dontLogContents] is true, the contents of the file will never be logged. | 166 /// If [dontLogContents] is true, the contents of the file will never be logged. |
167 String writeTextFile(String file, String contents, | 167 String writeTextFile(String file, String contents, |
168 {bool dontLogContents: false}) { | 168 {bool dontLogContents: false, Encoding encoding}) { |
| 169 if (encoding == null) encoding = UTF8; |
| 170 |
169 // Sanity check: don't spew a huge file. | 171 // Sanity check: don't spew a huge file. |
170 log.io("Writing ${contents.length} characters to text file $file."); | 172 log.io("Writing ${contents.length} characters to text file $file."); |
171 if (!dontLogContents && contents.length < 1024 * 1024) { | 173 if (!dontLogContents && contents.length < 1024 * 1024) { |
172 log.fine("Contents:\n$contents"); | 174 log.fine("Contents:\n$contents"); |
173 } | 175 } |
174 | 176 |
175 new File(file).writeAsStringSync(contents); | 177 new File(file).writeAsStringSync(contents, encoding: encoding); |
176 return file; | 178 return file; |
177 } | 179 } |
178 | 180 |
179 /// Creates [file] and writes [contents] to it. | 181 /// Creates [file] and writes [contents] to it. |
180 String writeBinaryFile(String file, List<int> contents) { | 182 String writeBinaryFile(String file, List<int> contents) { |
181 log.io("Writing ${contents.length} bytes to binary file $file."); | 183 log.io("Writing ${contents.length} bytes to binary file $file."); |
182 new File(file).openSync(mode: FileMode.WRITE) | 184 new File(file).openSync(mode: FileMode.WRITE) |
183 ..writeFromSync(contents) | 185 ..writeFromSync(contents) |
184 ..closeSync(); | 186 ..closeSync(); |
185 log.fine("Wrote text file $file."); | 187 log.fine("Wrote text file $file."); |
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1049 | 1051 |
1050 // TODO(rnystrom): Remove this and change to returning one string. | 1052 // TODO(rnystrom): Remove this and change to returning one string. |
1051 static List<String> _toLines(String output) { | 1053 static List<String> _toLines(String output) { |
1052 var lines = splitLines(output); | 1054 var lines = splitLines(output); |
1053 if (!lines.isEmpty && lines.last == "") lines.removeLast(); | 1055 if (!lines.isEmpty && lines.last == "") lines.removeLast(); |
1054 return lines; | 1056 return lines; |
1055 } | 1057 } |
1056 | 1058 |
1057 bool get success => exitCode == exit_codes.SUCCESS; | 1059 bool get success => exitCode == exit_codes.SUCCESS; |
1058 } | 1060 } |
OLD | NEW |