platform/packages/production/lib/src/options.dart
Tobe O cf2ad35d2b Add 'packages/production/' from commit '5ac875c504cd98a5075e0316da9c153b313fd3f9'
git-subtree-dir: packages/production
git-subtree-mainline: c97363d290
git-subtree-split: 5ac875c504
2020-02-15 18:28:31 -05:00

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,
);
}
}