cf2ad35d2b
git-subtree-dir: packages/production git-subtree-mainline:c97363d290
git-subtree-split:5ac875c504
79 lines
2.9 KiB
Dart
79 lines
2.9 KiB
Dart
import 'dart:io';
|
|
import 'package:args/args.dart';
|
|
|
|
class RunnerOptions {
|
|
static final ArgParser argParser = ArgParser()
|
|
..addFlag('help',
|
|
abbr: 'h', help: 'Print this help information.', negatable: false)
|
|
..addFlag('respawn',
|
|
help: 'Automatically respawn crashed application instances.',
|
|
defaultsTo: true,
|
|
negatable: true)
|
|
..addFlag('use-zone',
|
|
negatable: false, help: 'Create a new Zone for each request.')
|
|
..addFlag('quiet', negatable: false, help: 'Completely mute logging.')
|
|
..addFlag('ssl',
|
|
negatable: false, help: 'Listen for HTTPS instead of HTTP.')
|
|
..addFlag('http2',
|
|
negatable: false, help: 'Listen for HTTP/2 instead of HTTP/1.1.')
|
|
..addOption('address',
|
|
abbr: 'a', defaultsTo: '127.0.0.1', help: 'The address to listen on.')
|
|
..addOption('concurrency',
|
|
abbr: 'j',
|
|
defaultsTo: Platform.numberOfProcessors.toString(),
|
|
help: 'The number of isolates to spawn.')
|
|
..addOption('port',
|
|
abbr: 'p', defaultsTo: '3000', help: 'The port to listen on.')
|
|
..addOption('certificate-file', help: 'The PEM certificate file to read.')
|
|
..addOption('certificate-password',
|
|
help: 'The PEM certificate file password.')
|
|
..addOption('key-file', help: 'The PEM key file to read.')
|
|
..addOption('key-password', help: 'The PEM key file password.');
|
|
|
|
final String hostname,
|
|
certificateFile,
|
|
keyFile,
|
|
certificatePassword,
|
|
keyPassword;
|
|
final int concurrency, port;
|
|
final bool useZone, respawn, quiet, ssl, http2;
|
|
|
|
RunnerOptions(
|
|
{this.hostname = '127.0.0.1',
|
|
this.port = 3000,
|
|
this.concurrency = 1,
|
|
this.useZone = false,
|
|
this.respawn = true,
|
|
this.quiet = false,
|
|
this.certificateFile,
|
|
this.keyFile,
|
|
this.ssl = false,
|
|
this.http2 = false,
|
|
this.certificatePassword,
|
|
this.keyPassword});
|
|
|
|
factory RunnerOptions.fromArgResults(ArgResults argResults) {
|
|
return RunnerOptions(
|
|
hostname: argResults['address'] as String,
|
|
port: int.parse(argResults['port'] as String),
|
|
concurrency: int.parse(argResults['concurrency'] as String),
|
|
useZone: argResults['use-zone'] as bool,
|
|
respawn: argResults['respawn'] as bool,
|
|
quiet: argResults['quiet'] as bool,
|
|
certificateFile: argResults.wasParsed('certificate-file')
|
|
? argResults['certificate-file'] as String
|
|
: null,
|
|
keyFile: argResults.wasParsed('key-file')
|
|
? argResults['key-file'] as String
|
|
: null,
|
|
ssl: argResults['ssl'] as bool,
|
|
http2: argResults['http2'] as bool,
|
|
certificatePassword: argResults.wasParsed('certificate-password')
|
|
? argResults['certificate-password'] as String
|
|
: null,
|
|
keyPassword: argResults.wasParsed('key-password')
|
|
? argResults['key-password'] as String
|
|
: null,
|
|
);
|
|
}
|
|
}
|