summaryrefslogtreecommitdiffstats
path: root/pre_commit/output.py
diff options
context:
space:
mode:
Diffstat (limited to 'pre_commit/output.py')
-rw-r--r--pre_commit/output.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/pre_commit/output.py b/pre_commit/output.py
new file mode 100644
index 0000000..24f9d84
--- /dev/null
+++ b/pre_commit/output.py
@@ -0,0 +1,32 @@
+import contextlib
+import sys
+from typing import Any
+from typing import IO
+from typing import Optional
+
+
+def write(s: str, stream: IO[bytes] = sys.stdout.buffer) -> None:
+ stream.write(s.encode())
+ stream.flush()
+
+
+def write_line_b(
+ s: Optional[bytes] = None,
+ stream: IO[bytes] = sys.stdout.buffer,
+ logfile_name: Optional[str] = None,
+) -> None:
+ with contextlib.ExitStack() as exit_stack:
+ output_streams = [stream]
+ if logfile_name:
+ stream = exit_stack.enter_context(open(logfile_name, 'ab'))
+ output_streams.append(stream)
+
+ for output_stream in output_streams:
+ if s is not None:
+ output_stream.write(s)
+ output_stream.write(b'\n')
+ output_stream.flush()
+
+
+def write_line(s: Optional[str] = None, **kwargs: Any) -> None:
+ write_line_b(s.encode() if s is not None else s, **kwargs)