summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Roztocil <jakub@roztocil.co>2022-05-05 16:53:54 +0200
committerJakub Roztocil <jakub@roztocil.co>2022-05-05 16:53:54 +0200
commitebb767ce77e3b41d30b458680a7607b28a8d3c63 (patch)
tree6cfbb348f1ce6c8a1e5b1588e8c55976fba058bd
parent3afe01bb8e8122023bba118ff546520b2357bfaa (diff)
`render_description()` and layout explorationisidentical/feature/dont-crop-styles
-rw-r--r--httpie/cli/definition.py15
-rw-r--r--httpie/output/ui/rich_help.py29
2 files changed, 35 insertions, 9 deletions
diff --git a/httpie/cli/definition.py b/httpie/cli/definition.py
index 306e36c3..1489e6f6 100644
--- a/httpie/cli/definition.py
+++ b/httpie/cli/definition.py
@@ -112,8 +112,7 @@ positional_arguments.add_argument(
search==httpie
- '=' Data fields to be serialized into a JSON object (with --json, -j)
- or form data (with --form, -f):
+ '=' Data fields to be serialized into a JSON object (with --json, -j) or form data (with --form, -f):
name=HTTPie language=Python description='CLI HTTP client'
@@ -246,7 +245,7 @@ def format_style_help(available_styles, *, isolation_mode: bool = False):
text = """
Output coloring style (default is "{default}"). It can be one of:
- {available_styles}
+ {available_styles}
"""
if isolation_mode:
text += '\n\n'
@@ -472,8 +471,8 @@ output_options.add_argument(
requests/responses (such as redirects). For the second level and higher,
print these as well as the response metadata.
- Level one is a shortcut for: --all --print={''.join(sorted(BASE_OUTPUT_OPTIONS))}
- Level two is a shortcut for: --all --print={''.join(sorted(OUTPUT_OPTIONS))}
+ -v (level one) is a shortcut for: --all --print={''.join(sorted(BASE_OUTPUT_OPTIONS))}
+ -vv (level two) is a shortcut for: --all --print={''.join(sorted(OUTPUT_OPTIONS))}
""",
)
output_options.add_argument(
@@ -629,7 +628,7 @@ def format_auth_help(auth_plugins_mapping, *, isolation_mode: bool = False):
text = """
The authentication mechanism to be used. Defaults to "{default}".
- {auth_types}
+{auth_types}
"""
auth_plugins = list(auth_plugins_mapping.values())
@@ -643,8 +642,8 @@ def format_auth_help(auth_plugins_mapping, *, isolation_mode: bool = False):
text += 'For finding out all available authentication types in your system, try:\n\n'
text += ' $ http --auth-type'
- auth_types = '\n\n '.join(
- '"{type}": {name}{package}{description}'.format(
+ auth_types = '\n'.join(
+ ' "{type}": {name}{package}{description}'.format(
type=plugin.auth_type,
name=plugin.name,
package=(
diff --git a/httpie/output/ui/rich_help.py b/httpie/output/ui/rich_help.py
index 749c20e9..324d47ca 100644
--- a/httpie/output/ui/rich_help.py
+++ b/httpie/output/ui/rich_help.py
@@ -42,6 +42,32 @@ class OptionsHighlighter(RegexHighlighter):
options_highlighter = OptionsHighlighter()
+def render_description(raw: str) -> str:
+ final = []
+ line_break = '\n'
+ space = ' '
+ para = line_break + line_break
+ empty_line = False
+ for line in raw.splitlines():
+ if not line:
+ empty_line = True
+ continue
+
+ is_indented = line.startswith(space)
+ is_prev_indented = final and final[-1].startswith(space)
+
+ if not empty_line and not is_indented and final:
+ final.append(space)
+ elif empty_line:
+ final.append(para)
+ if is_prev_indented and is_indented:
+ final.append(line_break)
+ final.append(line)
+ empty_line = False
+
+ return ''.join(final)
+
+
def unpack_argument(
argument: Argument,
) -> Tuple[Text, Text]:
@@ -153,10 +179,11 @@ def to_help_message(
)
description.append('\n')
elif raw_form.get('choices'):
- description.append(f'{{{", ".join(raw_form["choices"])}}}')
+ description.append(Text(f'{{{", ".join(raw_form["choices"])}}}', style=STYLE_METAVAR))
description.append('\n')
description_text = raw_form.get('description', '').strip()
+ description_text = render_description(description_text)
# description_text = SINGLE_NEWLINE_RE.sub(' ', description_text)
description.append(description_text)
description.append('\n')