| // Copyright (c) 2024, 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. | |
| // TODO(bkonyi): consider moving to lib/ once this package is no longer shipped | |
| // via pub. | |
| import 'package:args/args.dart'; | |
| abstract class DartDevelopmentServiceOptions { | |
| static const vmServiceUriOption = 'vm-service-uri'; | |
| static const bindAddressOption = 'bind-address'; | |
| static const bindPortOption = 'bind-port'; | |
| static const disableServiceAuthCodesFlag = 'disable-service-auth-codes'; | |
| static const disableServiceOriginCheckFlag = 'disable-service-origin-check'; | |
| static const serveDevToolsFlag = 'serve-devtools'; | |
| static const enableServicePortFallbackFlag = 'enable-service-port-fallback'; | |
| static const cachedUserTagsOption = 'cached-user-tags'; | |
| static const devToolsServerAddressOption = 'devtools-server-address'; | |
| static const google3WorkspaceRootOption = 'google3-workspace-root'; | |
| static const appNameOption = 'app-name'; | |
| static ArgParser createArgParser({ | |
| int? usageLineLength, | |
| bool verbose = false, | |
| bool includeHelp = false, | |
| }) { | |
| final args = ArgParser(usageLineLength: usageLineLength); | |
| populateArgParser( | |
| argParser: args, | |
| verbose: verbose, | |
| includeHelp: includeHelp, | |
| ); | |
| return args; | |
| } | |
| static void populateArgParser({ | |
| required ArgParser argParser, | |
| bool verbose = false, | |
| bool includeHelp = false, | |
| }) { | |
| argParser | |
| ..addOption( | |
| vmServiceUriOption, | |
| help: 'The VM service URI DDS will connect to.', | |
| valueHelp: 'uri', | |
| mandatory: true, | |
| ) | |
| ..addOption(bindAddressOption, | |
| help: 'The address DDS should bind to.', | |
| valueHelp: 'address', | |
| defaultsTo: 'localhost') | |
| ..addOption( | |
| bindPortOption, | |
| help: 'The port DDS should be served on.', | |
| valueHelp: 'port', | |
| defaultsTo: '0', | |
| ) | |
| ..addFlag( | |
| disableServiceAuthCodesFlag, | |
| help: 'Disables authentication codes.', | |
| ) | |
| ..addFlag( | |
| disableServiceOriginCheckFlag, | |
| help: 'Disables the HTTP/WebSocket origin check.', | |
| ) | |
| ..addFlag( | |
| serveDevToolsFlag, | |
| help: 'If provided, DDS will serve DevTools. If not specified, ' | |
| '"--$devToolsServerAddressOption" is ignored.', | |
| ) | |
| ..addOption( | |
| devToolsServerAddressOption, | |
| help: 'Redirect to an existing DevTools server. Ignored if ' | |
| '"--$serveDevToolsFlag" is not specified.', | |
| ) | |
| ..addFlag( | |
| enableServicePortFallbackFlag, | |
| help: 'Bind to a random port if DDS fails to bind to the provided ' | |
| 'port.', | |
| ) | |
| ..addMultiOption( | |
| cachedUserTagsOption, | |
| help: 'This option is deprecated and supplying it will cause no ' | |
| 'effect.', | |
| defaultsTo: <String>[], | |
| ) | |
| ..addOption( | |
| google3WorkspaceRootOption, | |
| help: 'Sets the Google3 workspace root used for google3:// URI ' | |
| 'resolution.', | |
| hide: !verbose, | |
| ) | |
| ..addOption( | |
| appNameOption, | |
| help: 'A short, user focused description of the application that DDS ' | |
| 'will connect to.', | |
| ); | |
| if (includeHelp) { | |
| argParser.addFlag('help', negatable: false); | |
| } | |
| } | |
| } |