1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-19 00:17:51 +02:00

refactor try/except blocks to safe_print function

This commit is contained in:
Kelly Brazil
2022-04-26 14:25:34 -07:00
parent 0b407123c2
commit a4ef52b533
2 changed files with 27 additions and 26 deletions

View File

@ -84,16 +84,7 @@ if PYGMENTS_INSTALLED:
} }
def asciify(string):
"""
Return a string downgraded from Unicode to ASCII with some simple
conversions.
"""
string = string.replace('©', '(c)')
# the ascii() function adds single quotes around the string
string = ascii(string)[1:-1]
string = string.replace(r'\n', '\n')
return string
def set_env_colors(env_colors=None): def set_env_colors(env_colors=None):
@ -449,17 +440,11 @@ def main():
sys.exit(0) sys.exit(0)
if help_me: if help_me:
try: utils.safe_print(help_doc(sys.argv))
print(help_doc(sys.argv))
except UnicodeEncodeError:
print(asciify(help_doc(sys.argv)))
sys.exit(0) sys.exit(0)
if version_info: if version_info:
try: utils.safe_print(versiontext())
print(versiontext())
except UnicodeEncodeError:
print(asciify(versiontext()))
sys.exit(0) sys.exit(0)
# if magic syntax used, try to run the command and error if it's not found, etc. # if magic syntax used, try to run the command and error if it's not found, etc.
@ -474,10 +459,7 @@ def main():
try: try:
magic_stdout, magic_stderr, magic_exit_code = run_user_command(run_command) magic_stdout, magic_stderr, magic_exit_code = run_user_command(run_command)
if magic_stderr: if magic_stderr:
try: utils.safe_print(magic_stderr[:-1], file=sys.stderr)
print(magic_stderr[:-1], file=sys.stderr)
except UnicodeEncodeError:
print(asciify(magic_stderr[:-1], file=sys.stderr))
except OSError as e: except OSError as e:
if debug: if debug:

View File

@ -9,6 +9,25 @@ from functools import lru_cache
from typing import List, Iterable, Union, Optional from typing import List, Iterable, Union, Optional
def asciify(string: str) -> str:
"""
Return a string downgraded from Unicode to ASCII with some simple
conversions.
"""
string = string.replace('©', '(c)')
# the ascii() function adds single quotes around the string
string = ascii(string)[1:-1]
string = string.replace(r'\n', '\n')
return string
def safe_print(string: str, sep=' ', end='\n', file=sys.stdout, flush=False) -> None:
try:
print(string, sep=sep, end=end, file=file, flush=flush)
except UnicodeEncodeError:
print(asciify(string), sep=sep, end=end, file=file, flush=flush)
def warning_message(message_lines: List[str]) -> None: def warning_message(message_lines: List[str]) -> None:
""" """
Prints warning message for non-fatal issues. The first line is Prints warning message for non-fatal issues. The first line is
@ -36,13 +55,13 @@ def warning_message(message_lines: List[str]) -> None:
first_line = message_lines.pop(0) first_line = message_lines.pop(0)
first_str = f'jc: Warning - {first_line}' first_str = f'jc: Warning - {first_line}'
first_str = first_wrapper.fill(first_str) first_str = first_wrapper.fill(first_str)
print(first_str, file=sys.stderr) safe_print(first_str, file=sys.stderr)
for line in message_lines: for line in message_lines:
if line == '': if line == '':
continue continue
message = next_wrapper.fill(line) message = next_wrapper.fill(line)
print(message, file=sys.stderr) safe_print(message, file=sys.stderr)
def error_message(message_lines: List[str]) -> None: def error_message(message_lines: List[str]) -> None:
@ -68,13 +87,13 @@ def error_message(message_lines: List[str]) -> None:
first_line = message_lines.pop(0) first_line = message_lines.pop(0)
first_str = f'jc: Error - {first_line}' first_str = f'jc: Error - {first_line}'
first_str = first_wrapper.fill(first_str) first_str = first_wrapper.fill(first_str)
print(first_str, file=sys.stderr) safe_print(first_str, file=sys.stderr)
for line in message_lines: for line in message_lines:
if line == '': if line == '':
continue continue
message = next_wrapper.fill(line) message = next_wrapper.fill(line)
print(message, file=sys.stderr) safe_print(message, file=sys.stderr)
def compatibility(mod_name: str, compatible: List, quiet: bool = False) -> None: def compatibility(mod_name: str, compatible: List, quiet: bool = False) -> None: