| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library driver; | 5 library driver; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 import 'dart:math'; | 9 import 'dart:math'; |
| 10 | 10 |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 if (results[SDK_OPTION] != null) { | 415 if (results[SDK_OPTION] != null) { |
| 416 defaultSdkPath = results[SDK_OPTION]; | 416 defaultSdkPath = results[SDK_OPTION]; |
| 417 } else { | 417 } else { |
| 418 // No path to the SDK was provided. | 418 // No path to the SDK was provided. |
| 419 // Use DirectoryBasedDartSdk.defaultSdkDirectory, which will make a guess. | 419 // Use DirectoryBasedDartSdk.defaultSdkDirectory, which will make a guess. |
| 420 defaultSdkPath = FolderBasedDartSdk | 420 defaultSdkPath = FolderBasedDartSdk |
| 421 .defaultSdkDirectory(PhysicalResourceProvider.INSTANCE) | 421 .defaultSdkDirectory(PhysicalResourceProvider.INSTANCE) |
| 422 .path; | 422 .path; |
| 423 } | 423 } |
| 424 bool useSummaries = analysisServerOptions.fileReadMode == 'as-is'; | 424 bool useSummaries = analysisServerOptions.fileReadMode == 'as-is'; |
| 425 SdkCreator defaultSdkCreator = (AnalysisOptions options) { | |
| 426 PhysicalResourceProvider resourceProvider = | |
| 427 PhysicalResourceProvider.INSTANCE; | |
| 428 FolderBasedDartSdk sdk = new FolderBasedDartSdk( | |
| 429 resourceProvider, resourceProvider.getFolder(defaultSdkPath)); | |
| 430 sdk.analysisOptions = options; | |
| 431 sdk.useSummary = useSummaries; | |
| 432 return sdk; | |
| 433 }; | |
| 434 // TODO(brianwilkerson) It would be nice to avoid creating an SDK that | 425 // TODO(brianwilkerson) It would be nice to avoid creating an SDK that |
| 435 // cannot be re-used, but the SDK is needed to create a package map provider | 426 // cannot be re-used, but the SDK is needed to create a package map provider |
| 436 // in the case where we need to run `pub` in order to get the package map. | 427 // in the case where we need to run `pub` in order to get the package map. |
| 437 DartSdk defaultSdk = defaultSdkCreator(null); | 428 DartSdk defaultSdk = _createDefaultSdk(defaultSdkPath, useSummaries); |
| 438 // | 429 // |
| 439 // Initialize the instrumentation service. | 430 // Initialize the instrumentation service. |
| 440 // | 431 // |
| 441 String logFilePath = results[INSTRUMENTATION_LOG_FILE]; | 432 String logFilePath = results[INSTRUMENTATION_LOG_FILE]; |
| 442 if (logFilePath != null) { | 433 if (logFilePath != null) { |
| 443 _rollLogFiles(logFilePath, 5); | 434 _rollLogFiles(logFilePath, 5); |
| 444 FileInstrumentationServer fileBasedServer = | 435 FileInstrumentationServer fileBasedServer = |
| 445 new FileInstrumentationServer(logFilePath); | 436 new FileInstrumentationServer(logFilePath); |
| 446 instrumentationServer = instrumentationServer != null | 437 instrumentationServer = instrumentationServer != null |
| 447 ? new MulticastInstrumentationServer( | 438 ? new MulticastInstrumentationServer( |
| 448 [instrumentationServer, fileBasedServer]) | 439 [instrumentationServer, fileBasedServer]) |
| 449 : fileBasedServer; | 440 : fileBasedServer; |
| 450 } | 441 } |
| 451 InstrumentationService service = | 442 InstrumentationService service = |
| 452 new InstrumentationService(instrumentationServer); | 443 new InstrumentationService(instrumentationServer); |
| 453 service.logVersion(_readUuid(service), results[CLIENT_ID], | 444 service.logVersion(_readUuid(service), results[CLIENT_ID], |
| 454 results[CLIENT_VERSION], AnalysisServer.VERSION, defaultSdk.sdkVersion); | 445 results[CLIENT_VERSION], AnalysisServer.VERSION, defaultSdk.sdkVersion); |
| 455 AnalysisEngine.instance.instrumentationService = service; | 446 AnalysisEngine.instance.instrumentationService = service; |
| 456 // | 447 // |
| 457 // Create the sockets and start listening for requests. | 448 // Create the sockets and start listening for requests. |
| 458 // | 449 // |
| 459 socketServer = new SocketServer( | 450 socketServer = new SocketServer( |
| 460 analysisServerOptions, | 451 analysisServerOptions, |
| 461 new DartSdkManager(defaultSdkPath, useSummaries, defaultSdkCreator), | 452 new DartSdkManager(defaultSdkPath, useSummaries), |
| 462 defaultSdk, | 453 defaultSdk, |
| 463 service, | 454 service, |
| 464 serverPlugin, | 455 serverPlugin, |
| 465 fileResolverProvider, | 456 fileResolverProvider, |
| 466 packageResolverProvider, | 457 packageResolverProvider, |
| 467 useSingleContextManager); | 458 useSingleContextManager); |
| 468 httpServer = new HttpAnalysisServer(socketServer); | 459 httpServer = new HttpAnalysisServer(socketServer); |
| 469 stdioServer = new StdioAnalysisServer(socketServer); | 460 stdioServer = new StdioAnalysisServer(socketServer); |
| 470 socketServer.userDefinedPlugins = _userDefinedPlugins; | 461 socketServer.userDefinedPlugins = _userDefinedPlugins; |
| 471 | 462 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 allowedHelp: { | 570 allowedHelp: { |
| 580 "as-is": "file contents are read as-is, no file changes occur", | 571 "as-is": "file contents are read as-is, no file changes occur", |
| 581 "normalize-eol-always": | 572 "normalize-eol-always": |
| 582 r'file contents normalize the end of line characters to the single
character new line `\n`' | 573 r'file contents normalize the end of line characters to the single
character new line `\n`' |
| 583 }, | 574 }, |
| 584 defaultsTo: "as-is"); | 575 defaultsTo: "as-is"); |
| 585 | 576 |
| 586 return parser; | 577 return parser; |
| 587 } | 578 } |
| 588 | 579 |
| 580 DartSdk _createDefaultSdk(String defaultSdkPath, bool useSummaries) { |
| 581 PhysicalResourceProvider resourceProvider = |
| 582 PhysicalResourceProvider.INSTANCE; |
| 583 FolderBasedDartSdk sdk = new FolderBasedDartSdk( |
| 584 resourceProvider, resourceProvider.getFolder(defaultSdkPath)); |
| 585 sdk.useSummary = useSummaries; |
| 586 return sdk; |
| 587 } |
| 588 |
| 589 /** | 589 /** |
| 590 * Print information about how to use the server. | 590 * Print information about how to use the server. |
| 591 */ | 591 */ |
| 592 void _printUsage(ArgParser parser) { | 592 void _printUsage(ArgParser parser) { |
| 593 print('Usage: $BINARY_NAME [flags]'); | 593 print('Usage: $BINARY_NAME [flags]'); |
| 594 print(''); | 594 print(''); |
| 595 print('Supported flags are:'); | 595 print('Supported flags are:'); |
| 596 print(parser.usage); | 596 print(parser.usage); |
| 597 } | 597 } |
| 598 | 598 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 */ | 637 */ |
| 638 static void _rollLogFiles(String path, int numOld) { | 638 static void _rollLogFiles(String path, int numOld) { |
| 639 for (int i = numOld - 1; i >= 0; i--) { | 639 for (int i = numOld - 1; i >= 0; i--) { |
| 640 try { | 640 try { |
| 641 String oldPath = i == 0 ? path : '$path.$i'; | 641 String oldPath = i == 0 ? path : '$path.$i'; |
| 642 new File(oldPath).renameSync('$path.${i+1}'); | 642 new File(oldPath).renameSync('$path.${i+1}'); |
| 643 } catch (e) {} | 643 } catch (e) {} |
| 644 } | 644 } |
| 645 } | 645 } |
| 646 } | 646 } |
| OLD | NEW |