Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Unified Diff: tools/migration/lib/src/editable_status_file.dart

Issue 2994573002: Handle migration status entries into split up status files. (Closed)
Patch Set: Merge branch 'master' into split-migration Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/migration/bin/migrate_batch.dart ('k') | tools/migration/lib/src/migrate_statuses.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/migration/lib/src/editable_status_file.dart
diff --git a/tools/migration/lib/src/editable_status_file.dart b/tools/migration/lib/src/editable_status_file.dart
index 7a3795266da73de500e6aa935e8105b866912f84..35dcd6c389220c2509fb42a8a2cd0e69a9668d50 100644
--- a/tools/migration/lib/src/editable_status_file.dart
+++ b/tools/migration/lib/src/editable_status_file.dart
@@ -24,19 +24,45 @@ class EditableStatusFile {
StatusFile _statusFile;
StatusFile get statusFile {
if (_statusFile == null) {
- _statusFile = new StatusFile.read(path);
+ if (new File(path).existsSync()) {
+ _statusFile = new StatusFile.read(path);
+ } else {
+ _statusFile = new StatusFile(path);
+ }
}
return _statusFile;
}
- List<String> _lines;
+ /// The lines of text in the status file, loaded lazily.
+ ///
+ /// If the status file doesn't exist, creates a set of lines for a new empty
+ /// status file.
+ List<String> get _lines {
+ if (_linesCache == null) {
+ var file = new File(path);
+ if (file.existsSync()) {
+ _linesCache = file.readAsLinesSync();
+ } else {
+ _linesCache = [
+ "# Copyright (c) 2017, the Dart project authors. Please see the "
+ "AUTHORS file",
+ "# for details. All rights reserved. Use of this source code is "
+ "governed by a",
+ "# BSD-style license that can be found in the LICENSE file."
+ ];
+ }
+ }
+
+ return _linesCache;
+ }
+
+ List<String> _linesCache;
EditableStatusFile(this.path);
/// Gets the line at the given one-based index.
String lineAt(int line) {
- _ensureLines();
return _lines[line - 1];
}
@@ -49,8 +75,6 @@ class EditableStatusFile {
return;
}
- _ensureLines();
-
var deleted = 0;
for (var line in lines) {
// Adjust index because previous lines have already been removed, shifting
@@ -70,7 +94,6 @@ class EditableStatusFile {
return;
}
- _ensureLines();
_lines.insertAll(line, entries);
_save();
}
@@ -84,7 +107,6 @@ class EditableStatusFile {
return;
}
- _ensureLines();
_lines.add("");
_lines.add(header);
@@ -92,18 +114,17 @@ class EditableStatusFile {
_save();
}
- void _ensureLines() {
- if (_lines == null) {
- _lines = new File(path).readAsLinesSync();
+ void _save() {
+ if (dryRun) {
+ print("Save ${bold(path)}");
+ return;
}
- }
- void _save() {
new File(path).writeAsStringSync(_lines.join("\n") + "\n");
// It needs to be reparsed now since the lines have changed.
// TODO(rnystrom): This is kind of hacky and slow, but it gets the job done.
_statusFile = null;
- _lines = null;
+ _linesCache = null;
}
}
« no previous file with comments | « tools/migration/bin/migrate_batch.dart ('k') | tools/migration/lib/src/migrate_statuses.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698