From 2dba176aa8d97dc4965b0e848c59c5f8baace520 Mon Sep 17 00:00:00 2001 From: Jakub Roztocil Date: Tue, 17 Jul 2012 03:48:10 +0200 Subject: [PATCH] Added support for terminal colors under Windows. Tested on Python 2.7 under Windows 7 with PowerShell and cmd.exe. Closes #36 --- httpie/__main__.py | 1 + httpie/pretty.py | 17 +++++++++++++---- setup.py | 3 +++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/httpie/__main__.py b/httpie/__main__.py index c617266d..4c9565c0 100644 --- a/httpie/__main__.py +++ b/httpie/__main__.py @@ -12,6 +12,7 @@ from . import cli from . import pretty + TYPE_FORM = 'application/x-www-form-urlencoded; charset=utf-8' TYPE_JSON = 'application/json; charset=utf-8' diff --git a/httpie/pretty.py b/httpie/pretty.py index db6e5722..97a22ec3 100644 --- a/httpie/pretty.py +++ b/httpie/pretty.py @@ -9,15 +9,24 @@ from pygments.styles import get_style_by_name, STYLE_MAP from pygments.lexers import get_lexer_for_mimetype, HttpLexer from pygments.formatters.terminal256 import Terminal256Formatter from pygments.formatters.terminal import TerminalFormatter - +from requests.compat import is_windows from . import solarized +if is_windows: + import colorama + colorama.init() + # 256 looks better on Windows + FORMATTER = Terminal256Formatter +else: + FORMATTER = ( + Terminal256Formatter + if '256color' in os.environ.get('TERM', '') + else TerminalFormatter + ) + DEFAULT_STYLE = 'solarized' AVAILABLE_STYLES = [DEFAULT_STYLE] + list(STYLE_MAP.keys()) -FORMATTER = (Terminal256Formatter - if '256color' in os.environ.get('TERM', '') - else TerminalFormatter) application_content_type_re = re.compile(r'application/(.+\+)(json|xml)$') diff --git a/setup.py b/setup.py index 0c95f811..f56e6a61 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,9 @@ requirements = [ if sys.version_info[:2] in ((2, 6), (3, 1)): # argparse has been added in Python 3.2 / 2.7 requirements.append('argparse>=1.2.1') +if 'win32' in str(sys.platform).lower(): + # Terminal colors for Windows + requirements.append('colorama>=0.2.4') setup(