def add_arguments(parser: ArgumentParser) -> ArgumentParser: '''Adds new arguments to the specified ArgumentParser object.''' if not isinstance(parser, ArgumentParser): raise TypeError('Invalid parser.') # Download DotNet Cli dotnet.add_arguments(parser) # Restore/Build/Run functionality for MicroBenchmarks.csproj micro_benchmarks.add_arguments(parser) PRODUCT_INFO = [ 'init-tools', # Default 'repo', 'cli', 'args', ] parser.add_argument( '--cli-source-info', dest='cli_source_info', required=False, default=PRODUCT_INFO[0], choices=PRODUCT_INFO, help='Specifies where the product information comes from.', ) parser.add_argument('--cli-branch', dest='cli_branch', required=False, type=str, help='Product branch.') parser.add_argument('--cli-commit-sha', dest='cli_commit_sha', required=False, type=str, help='Product commit sha.') parser.add_argument('--cli-repository', dest='cli_repository', required=False, type=str, help='Product repository.') def __is_valid_datetime(dt: str) -> str: try: datetime.strptime(dt, '%Y-%m-%dT%H:%M:%SZ') return dt except ValueError: raise ArgumentTypeError( 'Datetime "{}" is in the wrong format.'.format(dt)) parser.add_argument( '--cli-source-timestamp', dest='cli_source_timestamp', required=False, type=__is_valid_datetime, help='''Product timestamp of the soruces used to generate this build (date-time from RFC 3339, Section 5.6. "%%Y-%%m-%%dT%%H:%%M:%%SZ").''') parser.add_argument( '--upload-to-perflab-container', dest="upload_to_perflab_container", required=False, help="Causes results files to be uploaded to perf container", action='store_true') # Generic arguments. parser.add_argument( '-q', '--quiet', required=False, default=False, action='store_true', help='Turns off verbosity.', ) parser.add_argument( '--build-only', dest='build_only', required=False, default=False, action='store_true', help='Builds the benchmarks but does not run them.', ) parser.add_argument( '--run-only', dest='run_only', required=False, default=False, action='store_true', help='Attempts to run the benchmarks without building.', ) return parser
def add_arguments(parser: ArgumentParser) -> ArgumentParser: '''Adds new arguments to the specified ArgumentParser object.''' if not isinstance(parser, ArgumentParser): raise TypeError('Invalid parser.') # Download DotNet Cli dotnet.add_arguments(parser) micro_benchmarks.add_arguments(parser) parser.add_argument('--channel', dest='channel', required=True, choices=ChannelMap.get_supported_channels(), type=str, help='Channel to download product from') parser.add_argument('--no-pgo', dest='pgo_status', required=False, action='store_const', const='nopgo') parser.add_argument('--dynamic-pgo', dest='pgo_status', required=False, action='store_const', const='dynamicpgo') parser.add_argument('--full-pgo', dest='pgo_status', required=False, action='store_const', const='fullpgo') parser.add_argument('--branch', dest='branch', required=False, type=str, help='Product branch.') parser.add_argument('--commit-sha', dest='commit_sha', required=False, type=str, help='Product commit sha.') parser.add_argument('--repository', dest='repository', required=False, type=str, help='Product repository.') parser.add_argument('--queue', dest='queue', default='testQueue', required=False, type=str, help='Test queue') parser.add_argument('--build-number', dest='build_number', default='1234.1', required=False, type=str, help='Build number') parser.add_argument('--locale', dest='locale', default='en-US', required=False, type=str, help='Locale') parser.add_argument('--perf-hash', dest='perf_hash', default='testSha', required=False, type=str, help='Sha of the performance repo') parser.add_argument('--get-perf-hash', dest="get_perf_hash", required=False, action='store_true', default=False, help='Discover the hash of the performance repository') parser.add_argument('--output-file', dest='output_file', required=False, default=os.path.join( get_tools_directory(), 'machine-setup' + global_extension), type=str, help='Filename to write the setup script to') parser.add_argument('--install-dir', dest='install_dir', required=False, type=str, help='Directory to install dotnet to') parser.add_argument('--not-in-lab', dest='not_in_lab', required=False, action='store_true', default=False, help='Indicates that this is not running in perflab') def __is_valid_dotnet_path(dp: str) -> str: if not os.path.isdir(dp): raise ArgumentTypeError('Path {} does not exist'.format(dp)) if not os.path.isfile(os.path.join(dp, 'dotnet')): raise ArgumentTypeError('Could not find dotnet in {}'.format(dp)) return dp parser.add_argument('--dotnet-path', dest='dotnet_path', required=False, type=__is_valid_dotnet_path, help='Path to a custom dotnet') # Generic arguments. parser.add_argument( '-q', '--quiet', required=False, default=False, action='store_true', help='Turns off verbosity.', ) parser.add_argument( '--build-configs', dest="build_configs", required=False, nargs='+', default=[], help='Configurations used in the build in key=value format') parser.add_argument('--maui-version', dest='maui_version', default='', required=False, type=str, help='Version of Maui used to build app packages') return parser
def add_arguments(parser: ArgumentParser) -> ArgumentParser: '''Adds new arguments to the specified ArgumentParser object.''' if not isinstance(parser, ArgumentParser): raise TypeError('Invalid parser.') # Download DotNet Cli dotnet.add_arguments(parser) micro_benchmarks.add_arguments(parser) parser.add_argument('--branch', dest='branch', required=False, type=str, help='Product branch.') parser.add_argument('--commit-sha', dest='commit_sha', required=False, type=str, help='Product commit sha.') parser.add_argument('--repository', dest='repository', required=False, type=str, help='Product repository.') parser.add_argument('--queue', dest='queue', default='testQueue', required=False, type=str, help='Test queue') parser.add_argument('--build-number', dest='build_number', default='1234.1', required=False, type=str, help='Build number') parser.add_argument('--locale', dest='locale', default='en-US', required=False, type=str, help='Locale') parser.add_argument('--perf-hash', dest='perf_hash', default='testSha', required=False, type=str, help='Sha of the performance repo') parser.add_argument('--get-perf-hash', dest="get_perf_hash", required=False, action='store_true', default=False, help='Discover the hash of the performance repository') parser.add_argument('--output-file', dest='output_file', required=False, default=os.path.join( get_tools_directory(), 'machine-setup' + global_extension), type=str, help='Filename to write the setup script to') # Generic arguments. parser.add_argument( '-q', '--quiet', required=False, default=False, action='store_true', help='Turns off verbosity.', ) parser.add_argument( '--build-configs', dest="build_configs", required=False, nargs='+', default=[], help='Configurations used in the build in key=value format') return parser
def add_arguments(parser: ArgumentParser) -> ArgumentParser: '''Adds new arguments to the specified ArgumentParser object.''' if not isinstance(parser, ArgumentParser): raise TypeError('Invalid parser.') # Download DotNet Cli dotnet.add_arguments(parser) # Restore/Build/Run functionality for MicroBenchmarks.csproj micro_benchmarks.add_arguments(parser) # .NET Runtime Options. parser.add_argument( '--optimization-level', dest='optimization_level', required=False, default='tiered', choices=['tiered', 'full_opt', 'min_opt'] ) PRODUCT_INFO = [ 'init-tools', # Default 'repo', 'cli', ] parser.add_argument( '--cli-source-info', dest='cli_source_info', required=False, default=PRODUCT_INFO[0], choices=PRODUCT_INFO, help='Specifies where the product information comes from.', ) parser.add_argument( '--cli-branch', dest='cli_branch', required=False, type=str, help='Product branch.' ) parser.add_argument( '--cli-commit-sha', dest='cli_commit_sha', required=False, type=str, help='Product commit sha.' ) parser.add_argument( '--cli-repository', dest='cli_repository', required=False, type=str, help='Product repository.' ) def __is_valid_datetime(dt: str) -> str: try: datetime.strptime(dt, '%Y-%m-%dT%H:%M:%SZ') return dt except ValueError: raise ArgumentTypeError( 'Datetime "{}" is in the wrong format.'.format(dt)) parser.add_argument( '--cli-source-timestamp', dest='cli_source_timestamp', required=False, type=__is_valid_datetime, help='''Product timestamp of the soruces used to generate this build (date-time from RFC 3339, Section 5.6. "%%Y-%%m-%%dT%%H:%%M:%%SZ").''' ) # BenchView acquisition, and fuctionality parser.add_argument( '--generate-benchview-data', dest='generate_benchview_data', action='store_true', default=False, help='Flags indicating whether BenchView data should be generated.' ) parser.add_argument( '--upload-to-benchview-container', dest='upload_to_benchview_container', required=False, type=str, help='Name of the Azure Storage Container to upload to.' ) # TODO: Make these arguments dependent on `generate_benchview_data`? is_benchview_commit_name_defined = 'BenchviewCommitName' in os.environ default_submission_name = os.environ['BenchviewCommitName'] \ if is_benchview_commit_name_defined else None parser.add_argument( '--benchview-submission-name', dest='benchview_submission_name', default=default_submission_name, required=False, type=str, help='BenchView submission name.' ) parser.add_argument( '--benchview-run-type', dest='benchview_run_type', default='local', choices=['rolling', 'private', 'local'], type=str.lower, help='BenchView submission type.' ) parser.add_argument( '--benchview-config-name', dest='benchview_config_name', # Uses as default args.configuration required=False, type=str, help="BenchView's (user facing) configuration display name." ) parser.add_argument( '--benchview-machinepool', dest='benchview_machinepool', default=platform.platform(), required=False, type=str, help="A logical name that groups test results into a single *machine*." ) parser.add_argument( '--benchview-config', dest='benchview_config', metavar=('key', 'value'), action='append', required=False, nargs=2, help='''A configuration property defined as a {key:value} pair. This is used to describe the benchmark results. For example, some types of configurations can be: optimization level (tiered, full opt, min opt), configuration (debug/release), profile (on/off), etc.''' ) # Generic arguments. parser.add_argument( '-q', '--quiet', required=False, default=False, action='store_true', help='Turns off verbosity.', ) parser.add_argument( '--build-only', dest='build_only', required=False, default=False, action='store_true', help='Builds the benchmarks but does not run them.', ) parser.add_argument( '--run-only', dest='run_only', required=False, default=False, action='store_true', help='Attempts to run the benchmarks without building.', ) return parser