OLD | NEW |
1 import 'dart:io'; | 1 import 'dart:io'; |
2 import 'package:args/args.dart'; | 2 import 'package:args/args.dart'; |
3 import 'package:analyzer/src/services/formatter_impl.dart'; | 3 import 'package:analyzer/src/services/formatter_impl.dart'; |
4 import 'package:async_await/async_await.dart' as async_await; | 4 import 'package:async_await/async_await.dart' as async_await; |
5 import 'package:path/path.dart' as p; | 5 import 'package:path/path.dart' as p; |
6 final sourceDir = p.dirname(p.dirname(p.fromUri(Platform.script))); | 6 final sourceDir = p.dirname(p.dirname(p.fromUri(Platform.script))); |
7 final sourceUrl = p.toUri(sourceDir).toString(); | 7 final sourceUrl = p.toUri(sourceDir).toString(); |
8 final generatedDir = p.join(p.dirname(sourceDir), 'pub_generated'); | 8 final generatedDir = p.join(p.dirname(sourceDir), 'pub_generated'); |
9 bool hadFailure = false; | 9 bool hadFailure = false; |
10 bool verbose = false; | 10 bool verbose = false; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 var lastCommit; | 45 var lastCommit; |
46 var readme = new File(readmePath).readAsStringSync(); | 46 var readme = new File(readmePath).readAsStringSync(); |
47 var match = _commitPattern.firstMatch(readme); | 47 var match = _commitPattern.firstMatch(readme); |
48 if (match == null) { | 48 if (match == null) { |
49 stderr.writeln("Could not find compiler commit hash in README.md."); | 49 stderr.writeln("Could not find compiler commit hash in README.md."); |
50 exit(1); | 50 exit(1); |
51 } | 51 } |
52 lastCommit = match[0]; | 52 lastCommit = match[0]; |
53 var numFiles = 0; | 53 var numFiles = 0; |
54 var numCompiled = 0; | 54 var numCompiled = 0; |
| 55 var sources = new Set<String>(); |
55 for (var entry in new Directory(sourceDir).listSync(recursive: true)) { | 56 for (var entry in new Directory(sourceDir).listSync(recursive: true)) { |
56 if (p.extension(entry.path) != ".dart") continue; | 57 if (p.extension(entry.path) != ".dart") continue; |
57 numFiles++; | 58 numFiles++; |
58 var relative = p.relative(entry.path, from: sourceDir); | 59 var relative = p.relative(entry.path, from: sourceDir); |
| 60 sources.add(relative); |
59 var sourceFile = entry as File; | 61 var sourceFile = entry as File; |
60 var destPath = p.join(generatedDir, relative); | 62 var destPath = p.join(generatedDir, relative); |
61 var destFile = new File(destPath); | 63 var destFile = new File(destPath); |
62 if (force || | 64 if (force || |
63 currentCommit != lastCommit || | 65 currentCommit != lastCommit || |
64 !destFile.existsSync() || | 66 !destFile.existsSync() || |
65 entry.lastModifiedSync().isAfter(destFile.lastModifiedSync())) { | 67 entry.lastModifiedSync().isAfter(destFile.lastModifiedSync())) { |
66 _compile(sourceFile.path, sourceFile.readAsStringSync(), destPath); | 68 _compile(sourceFile.path, sourceFile.readAsStringSync(), destPath); |
67 numCompiled++; | 69 numCompiled++; |
68 if (verbose) print("Compiled $relative"); | 70 if (verbose) print("Compiled $relative"); |
69 } | 71 } |
70 } | 72 } |
| 73 for (var entry in new Directory(generatedDir).listSync(recursive: true)) { |
| 74 if (p.extension(entry.path) != ".dart") continue; |
| 75 var relative = p.relative(entry.path, from: generatedDir); |
| 76 if (!sources.contains(relative)) { |
| 77 _deleteFile(entry.path); |
| 78 if (verbose) print("Deleted $relative"); |
| 79 } |
| 80 } |
71 if (currentCommit != lastCommit) { | 81 if (currentCommit != lastCommit) { |
72 readme = readme.replaceAll(_commitPattern, currentCommit); | 82 readme = readme.replaceAll(_commitPattern, currentCommit); |
73 _writeFile(readmePath, readme); | 83 _writeFile(readmePath, readme); |
| 84 if (verbose) print("Updated README.md"); |
74 } | 85 } |
| 86 if (numCompiled > 0) _generateSnapshot(buildDir); |
75 if (verbose) print("Compiled $numCompiled out of $numFiles files"); | 87 if (verbose) print("Compiled $numCompiled out of $numFiles files"); |
76 if (numCompiled > 0) _generateSnapshot(buildDir); | |
77 if (hadFailure) exit(1); | 88 if (hadFailure) exit(1); |
78 } | 89 } |
79 void _compile(String sourcePath, String source, String destPath) { | 90 void _compile(String sourcePath, String source, String destPath) { |
80 var destDir = new Directory(p.dirname(destPath)); | 91 var destDir = new Directory(p.dirname(destPath)); |
81 destDir.createSync(recursive: true); | 92 destDir.createSync(recursive: true); |
82 source = _translateAsyncAwait(sourcePath, source); | 93 source = _translateAsyncAwait(sourcePath, source); |
83 if (source != null) source = _fixDart2jsImports(sourcePath, source, destPath); | 94 if (source != null) source = _fixDart2jsImports(sourcePath, source, destPath); |
84 if (source == null) { | 95 if (source == null) { |
85 _deleteFile(destPath); | 96 _deleteFile(destPath); |
86 } else { | 97 } else { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 void _deleteFile(String path) { | 137 void _deleteFile(String path) { |
127 try { | 138 try { |
128 new File(path).deleteSync(); | 139 new File(path).deleteSync(); |
129 } on IOException catch (ex) {} | 140 } on IOException catch (ex) {} |
130 } | 141 } |
131 void _writeFile(String path, String contents) { | 142 void _writeFile(String path, String contents) { |
132 try { | 143 try { |
133 new File(path).writeAsStringSync(contents); | 144 new File(path).writeAsStringSync(contents); |
134 } on IOException catch (ex) {} | 145 } on IOException catch (ex) {} |
135 } | 146 } |
OLD | NEW |