summaryrefslogtreecommitdiffstats
path: root/scripts/devscripts/logger.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 15:53:52 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 15:53:52 +0000
commitefe47381c599b07e4c7bbdb2e91e8090a541c887 (patch)
tree05cf57183f5a23394eca11b00f97a74a5dfdf79d /scripts/devscripts/logger.py
parentInitial commit. (diff)
downloaddevscripts-efe47381c599b07e4c7bbdb2e91e8090a541c887.tar.xz
devscripts-efe47381c599b07e4c7bbdb2e91e8090a541c887.zip
Adding upstream version 2.23.4+deb12u1.upstream/2.23.4+deb12u1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'scripts/devscripts/logger.py')
-rw-r--r--scripts/devscripts/logger.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/devscripts/logger.py b/scripts/devscripts/logger.py
new file mode 100644
index 0000000..f99de37
--- /dev/null
+++ b/scripts/devscripts/logger.py
@@ -0,0 +1,75 @@
+# logger.py - A simple logging helper class
+#
+# Copyright (C) 2010, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software
+# for any purpose with or without fee is hereby granted, provided
+# that the above copyright notice and this permission notice appear
+# in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import os
+import sys
+
+
+def escape_arg(arg):
+ """Shell-escape arg, if necessary.
+ Fairly simplistic, doesn't escape anything except whitespace.
+ """
+ if " " not in arg:
+ return arg
+ return '"%s"' % arg.replace("\\", r"\\").replace('"', r"\"")
+
+
+class Logger:
+ script_name = os.path.basename(sys.argv[0])
+ verbose = False
+
+ stdout = sys.stdout
+ stderr = sys.stderr
+
+ @classmethod
+ def _print(cls, format_, message, args=None, stderr=False):
+ if args:
+ message = message % args
+ stream = cls.stderr if stderr else cls.stdout
+ stream.write((format_ + "\n") % (cls.script_name, message))
+
+ @classmethod
+ def command(cls, cmd):
+ if cls.verbose:
+ cls._print("%s: I: %s", " ".join(escape_arg(arg) for arg in cmd))
+
+ @classmethod
+ def debug(cls, message, *args):
+ if cls.verbose:
+ cls._print("%s: D: %s", message, args, stderr=True)
+
+ @classmethod
+ def error(cls, message, *args):
+ cls._print("%s: Error: %s", message, args, stderr=True)
+
+ @classmethod
+ def warn(cls, message, *args):
+ cls._print("%s: Warning: %s", message, args, stderr=True)
+
+ @classmethod
+ def info(cls, message, *args):
+ if cls.verbose:
+ cls._print("%s: I: %s", message, args)
+
+ @classmethod
+ def normal(cls, message, *args):
+ cls._print("%s: %s", message, args)
+
+ @classmethod
+ def set_verbosity(cls, verbose):
+ cls.verbose = verbose