Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 /** General options used by the compiler. */ | 5 /** General options used by the compiler. */ |
| 6 FrogOptions options; | 6 FrogOptions options; |
| 7 | 7 |
| 8 /** Extracts options from command-line arguments. */ | 8 /** Extracts options from command-line arguments. */ |
| 9 void parseOptions(String homedir, List<String> args, FileSystem files) { | 9 void parseOptions(String homedir, List<String> args, FileSystem files) { |
| 10 assert(options == null); | 10 assert(options == null); |
| 11 options = new FrogOptions(homedir, args, files); | 11 options = new FrogOptions(homedir, args, files); |
| 12 } | 12 } |
| 13 | 13 |
| 14 // TODO(sigmund): make into a generic option parser... | 14 // TODO(sigmund): make into a generic option parser... |
| 15 class FrogOptions { | 15 class FrogOptions { |
| 16 /** Location of corelib and other special dart libraries. */ | 16 /** Location of corelib and other special dart libraries. */ |
| 17 String libDir; | 17 String libDir; |
| 18 | 18 |
| 19 /* The top-level dart script to compile. */ | 19 /* The top-level dart script to compile. */ |
| 20 String dartScript; | 20 String dartScript; |
| 21 | 21 |
| 22 /** Where to place the generated code. */ | 22 /** Where to place the generated code. */ |
| 23 String outfile; | 23 String outfile; |
| 24 | 24 |
| 25 /* TODO(dgrove): fix this. For now, either 'sdk' or 'dev'. */ | |
|
Siggi Cherem (dart-lang)
2011/11/21 23:44:23
nit: use // comments for TODOs rather than /* (so
dgrove
2011/11/22 00:41:24
Done.
| |
| 26 final config = 'dev'; | |
| 27 | |
| 25 // Options that modify behavior significantly | 28 // Options that modify behavior significantly |
| 26 bool enableLeg = false; | 29 bool enableLeg = false; |
| 27 bool legOnly = false; | 30 bool legOnly = false; |
| 28 bool enableAsserts = false; | 31 bool enableAsserts = false; |
| 29 bool enableTypeChecks = false; | 32 bool enableTypeChecks = false; |
| 30 bool verifyImplements = false; // TODO(jimhug): Implement | 33 bool verifyImplements = false; // TODO(jimhug): Implement |
| 31 bool compileAll = false; | 34 bool compileAll = false; |
| 32 bool dietParse = false; | 35 bool dietParse = false; |
| 33 bool compileOnly = false; | 36 bool compileOnly = false; |
| 34 | 37 |
| 35 // Message support | 38 // Message support |
| 36 bool throwOnErrors = false; | 39 bool throwOnErrors = false; |
| 37 bool throwOnWarnings = false; | 40 bool throwOnWarnings = false; |
| 38 bool throwOnFatal = false; | 41 bool throwOnFatal = false; |
| 39 bool showInfo = false; | 42 bool showInfo = false; |
| 40 bool showWarnings = true; | 43 bool showWarnings = true; |
| 41 | 44 |
| 42 /** | 45 /** |
| 43 * Options to be used later for passing to the generated code. These are all | 46 * Options to be used later for passing to the generated code. These are all |
| 44 * the arguments after the first dart script, if any. | 47 * the arguments after the first dart script, if any. |
| 45 */ | 48 */ |
| 46 List<String> childArgs; | 49 List<String> childArgs; |
| 47 | 50 |
| 48 FrogOptions(String homedir, List<String> args, FileSystem files) { | 51 FrogOptions(String homedir, List<String> args, FileSystem files) { |
| 49 libDir = homedir + '/lib'; // Default value for --libdir. | 52 if (config == 'dev') { |
| 53 libDir = homedir + '/lib'; // Default value for --libdir. | |
| 54 } else if (config == 'sdk') { | |
| 55 libDir = homedir + '/../lib/corelib/frog'; | |
|
Siggi Cherem (dart-lang)
2011/11/21 23:44:23
it might be good to call [joinPaths] and [dirname]
dgrove
2011/11/22 00:41:24
Done.
| |
| 56 } else { | |
| 57 world.error('Invalid reader configuration $config', null); | |
| 58 throw('Invalid reader config'); | |
| 59 } | |
| 60 | |
| 50 bool ignoreUnrecognizedFlags = false; | 61 bool ignoreUnrecognizedFlags = false; |
| 51 bool passedLibDir = false; | 62 bool passedLibDir = false; |
| 52 childArgs = []; | 63 childArgs = []; |
| 53 | 64 |
| 54 // Start from 2 to skip arguments representing the compiler command | 65 // Start from 2 to skip arguments representing the compiler command |
| 55 // (node/python followed by frogsh/frog.py). | 66 // (node/python followed by frogsh/frog.py). |
| 56 // TODO(jimhug): break on switch cases seems broken? | 67 // TODO(jimhug): break on switch cases seems broken? |
| 57 loop: for (int i = 2; i < args.length; i++) { | 68 loop: for (int i = 2; i < args.length; i++) { |
| 58 var arg = args[i]; | 69 var arg = args[i]; |
| 59 | 70 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 passedLibDir = true; | 137 passedLibDir = true; |
| 127 } else { | 138 } else { |
| 128 if (!ignoreUnrecognizedFlags) { | 139 if (!ignoreUnrecognizedFlags) { |
| 129 print('unrecognized flag: "$arg"'); | 140 print('unrecognized flag: "$arg"'); |
| 130 } | 141 } |
| 131 } | 142 } |
| 132 } | 143 } |
| 133 } | 144 } |
| 134 | 145 |
| 135 // TODO(jimhug): Remove this hack. | 146 // TODO(jimhug): Remove this hack. |
| 136 if (!passedLibDir && !files.fileExists(libDir)) { | 147 if (!passedLibDir && !files.fileExists(libDir + "/corelib.dart")) { |
|
Siggi Cherem (dart-lang)
2011/11/21 23:44:23
why is this change needed?
dgrove
2011/11/22 00:41:24
A good question - because files.fileExists doesn't
| |
| 137 // Try locally | 148 // Try locally |
| 138 var temp = 'frog/lib'; | 149 var temp = 'frog/lib'; |
| 139 if (files.fileExists(temp)) { | 150 if (files.fileExists(temp)) { |
| 140 libDir = temp; | 151 libDir = temp; |
| 141 } else { | 152 } else { |
| 142 libDir = 'lib'; | 153 libDir = 'lib'; |
| 143 } | 154 } |
| 144 } | 155 } |
| 145 } | 156 } |
| 146 } | 157 } |
| OLD | NEW |