| # pylint: disable=E1103 |
| # Copyright (C) 2020 Igalia S.L. |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; either |
| # version 2.1 of the License, or (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # Lesser General Public License for more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with this program; if not, write to the |
| # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
| # Boston, MA 02110-1301, USA. |
| |
| from __future__ import print_function |
| import argparse |
| import sys |
| import traceback |
| |
| from webkitpy.common.host import Host |
| from webkitpy.port import configuration_options, platform_options, factory |
| from webkitcorepy.string_utils import decode |
| |
| def main(argv): |
| option_parser = argparse.ArgumentParser(usage="%(prog)s [options] [url]", add_help=False) |
| groups = [("Platform options", platform_options()), ("Configuration options", configuration_options())] |
| |
| # Convert options to argparse, so that we can use parse_known_args() which is not supported in optparse. |
| # FIXME: Globally migrate to argparse. https://bugs.webkit.org/show_bug.cgi?id=213463 |
| for group_name, group_options in groups: |
| option_group = option_parser.add_argument_group(group_name) |
| |
| for option in group_options: |
| # Skip deprecated option |
| if option.get_opt_string() != "--target": |
| default = None |
| if option.default != ("NO", "DEFAULT"): |
| default = option.default |
| option_group.add_argument(option.get_opt_string(), action=option.action, dest=option.dest, |
| help=option.help, const=option.const, default=default) |
| |
| option_parser.add_argument('url', metavar='url', type=lambda s: decode(s, 'utf8'), nargs='?', |
| help='Website URL to load') |
| options, args = option_parser.parse_known_args(argv) |
| |
| if not options.platform: |
| options.platform = "mac" |
| |
| # Convert unregistered command-line arguments to utf-8 and append parsed |
| # URL. convert_arg_line_to_args() returns a list containing a single |
| # string, so it needs to be split again. |
| browser_args = [decode(s, "utf-8") for s in option_parser.convert_arg_line_to_args(' '.join(args))[0].split()] |
| if options.url: |
| browser_args.append(options.url) |
| |
| try: |
| port = factory.PortFactory(Host()).get(options.platform, options=options) |
| return port.run_minibrowser(browser_args) |
| except BaseException as e: |
| if isinstance(e, Exception): |
| print('\n%s raised: %s' % (e.__class__.__name__, str(e)), file=sys.stderr) |
| traceback.print_exc(file=sys.stderr) |
| return 1 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |