| OLD | NEW |
| 1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
| 2 # -*- coding: utf-8 -*- | 2 # -*- coding: utf-8 -*- |
| 3 | 3 |
| 4 # Copyright 2015 Google Inc. All Rights Reserved. | 4 # Copyright 2015 Google Inc. All Rights Reserved. |
| 5 # | 5 # |
| 6 # Licensed under the Apache License, Version 2.0 (the "License"); | 6 # Licensed under the Apache License, Version 2.0 (the "License"); |
| 7 # you may not use this file except in compliance with the License. | 7 # you may not use this file except in compliance with the License. |
| 8 # You may obtain a copy of the License at | 8 # You may obtain a copy of the License at |
| 9 # | 9 # |
| 10 # http://www.apache.org/licenses/LICENSE-2.0 | 10 # http://www.apache.org/licenses/LICENSE-2.0 |
| (...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 elif record.levelno == logging.WARNING: | 699 elif record.levelno == logging.WARNING: |
| 700 style = colorama.Fore.YELLOW + colorama.Style.BRIGHT | 700 style = colorama.Fore.YELLOW + colorama.Style.BRIGHT |
| 701 elif record.levelno == logging.INFO: | 701 elif record.levelno == logging.INFO: |
| 702 style = colorama.Fore.BLUE | 702 style = colorama.Fore.BLUE |
| 703 elif record.levelno == logging.DEBUG: | 703 elif record.levelno == logging.DEBUG: |
| 704 style = colorama.Fore.CYAN + colorama.Style.DIM | 704 style = colorama.Fore.CYAN + colorama.Style.DIM |
| 705 | 705 |
| 706 return style + super(Formatter, self).format(record) | 706 return style + super(Formatter, self).format(record) |
| 707 | 707 |
| 708 | 708 |
| 709 def unicode_arg(arg): |
| 710 """Converts a bytestring command-line argument into a Unicode string.""" |
| 711 if sys.stdin.encoding: |
| 712 return arg.decode(sys.stdin.encoding) |
| 713 |
| 714 return arg.decode(sys.getfilesystemencoding()) |
| 715 |
| 716 |
| 709 def main(): | 717 def main(): |
| 710 """Executes the script and handles command line arguments.""" | 718 """Executes the script and handles command line arguments.""" |
| 711 # Set up parsers, then parse the command line arguments. | 719 # Set up parsers, then parse the command line arguments. |
| 712 desc = 'Semi-automatically convert Chrome Apps into progressive web apps.' | 720 desc = 'Semi-automatically convert Chrome Apps into progressive web apps.' |
| 713 parser = argparse.ArgumentParser(description=desc) | 721 parser = argparse.ArgumentParser(description=desc) |
| 714 parser.add_argument('-v', '--verbose', help='Verbose logging', | 722 parser.add_argument('-v', '--verbose', help='Verbose logging', |
| 715 action='store_true') | 723 action='store_true') |
| 716 subparsers = parser.add_subparsers(dest='mode') | 724 subparsers = parser.add_subparsers(dest='mode') |
| 717 | 725 |
| 718 parser_convert = subparsers.add_parser( | 726 parser_convert = subparsers.add_parser( |
| 719 'convert', help='Convert a Chrome App into a progressive web app.') | 727 'convert', help='Convert a Chrome App into a progressive web app.') |
| 720 parser_convert.add_argument('input', help='Chrome App input directory') | |
| 721 parser_convert.add_argument( | 728 parser_convert.add_argument( |
| 722 'output', help='Progressive web app output directory') | 729 'input', help='Chrome App input directory', type=unicode_arg) |
| 730 parser_convert.add_argument( |
| 731 'output', help='Progressive web app output directory', type=unicode_arg) |
| 723 parser_convert.add_argument('-c', '--config', help='Configuration file', | 732 parser_convert.add_argument('-c', '--config', help='Configuration file', |
| 724 required=True, metavar='config') | 733 required=True, metavar='config', type=unicode_arg) |
| 725 parser_convert.add_argument('-f', '--force', help='Force output overwrite', | 734 parser_convert.add_argument('-f', '--force', help='Force output overwrite', |
| 726 action='store_true') | 735 action='store_true') |
| 727 | 736 |
| 728 parser_config = subparsers.add_parser( | 737 parser_config = subparsers.add_parser( |
| 729 'config', help='Print a default configuration file to stdout.') | 738 'config', help='Print a default configuration file to stdout.') |
| 730 parser_config.add_argument('output', help='Output config file path') | 739 parser_config.add_argument('output', help='Output config file path', |
| 740 type=unicode_arg) |
| 731 parser_config.add_argument('-i', '--interactive', | 741 parser_config.add_argument('-i', '--interactive', |
| 732 help='Whether to interactively generate the config file', | 742 help='Whether to interactively generate the config file', |
| 733 action='store_true') | 743 action='store_true') |
| 734 | 744 |
| 735 args = parser.parse_args() | 745 args = parser.parse_args() |
| 736 | 746 |
| 737 # Set up logging. | 747 # Set up logging. |
| 738 logging_level = logging.DEBUG if args.verbose else logging.INFO | 748 logging_level = logging.DEBUG if args.verbose else logging.INFO |
| 739 logging.root.setLevel(logging_level) | 749 logging.root.setLevel(logging_level) |
| 740 colorama.init(autoreset=True) | 750 colorama.init(autoreset=True) |
| 741 logging_format = ':%(levelname)s: \t%(message)s' | 751 logging_format = ':%(levelname)s: \t%(message)s' |
| 742 formatter = Formatter(logging_format) | 752 formatter = Formatter(logging_format) |
| 743 handler = logging.StreamHandler(sys.stdout) | 753 handler = logging.StreamHandler(sys.stdout) |
| 744 handler.setFormatter(formatter) | 754 handler.setFormatter(formatter) |
| 745 logging.root.addHandler(handler) | 755 logging.root.addHandler(handler) |
| 746 | 756 |
| 747 # Main program. | 757 # Main program. |
| 748 if args.mode == 'config': | 758 if args.mode == 'config': |
| 749 configuration.generate_and_save(args.output, args.interactive) | 759 configuration.generate_and_save(args.output, args.interactive) |
| 750 | 760 |
| 751 elif args.mode == 'convert': | 761 elif args.mode == 'convert': |
| 752 config = configuration.load(args.config) | 762 config = configuration.load(args.config) |
| 753 convert_app(args.input, args.output, config, args.force) | 763 convert_app(args.input, args.output, config, args.force) |
| 754 | 764 |
| 755 | 765 |
| 756 if __name__ == '__main__': | 766 if __name__ == '__main__': |
| 757 sys.exit(main()) | 767 sys.exit(main()) |
| OLD | NEW |