Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: src/caterpillar.py

Issue 1645873003: Decoded command-line inputs to Unicode strings. Resolves #24. (Closed) Base URL: git@github.com:chromium/caterpillar.git@master
Patch Set: Response to CR Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698