(in-package :pkgmgr-print) (defparameter *debuglevel-debug* 1) (defparameter *debuglevel-info* 2) (defparameter *debuglevel-notice* 3) (defparameter *debuglevel-warn* 4) (defparameter *debuglevel-crit* 5) (defparameter *debuglevel-interactive* 100) (defvar *debuglevel* (let* ((lvl (or (ext:getenv "PKGMANAGER_DEBUGLEVEL") "notice")) (sym (intern (string-upcase (format nil "*debuglevel-~a*" lvl))))) (when (or (not (boundp sym)) (not (symbol-value sym))) (error 'extended-error :message (format nil "Debuglevel '~a' is invalid - incorrect PKGMANAGER_DEBUGLEVEL?" lvl))) (symbol-value sym))) (defun debug-output (str) (format t "[pkgmanager] ~a~%" str)) (defmacro print-level (level fmt &rest args) `(when (>= ,level pkgmgr-print:*debuglevel*) (pkgmgr-print:debug-output (format nil ,fmt ,@args)))) (defmacro print-debug (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-debug* ,fmt ,@args)) (defmacro print-info (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-info* ,fmt ,@args)) (defmacro print-notice (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-notice* ,fmt ,@args)) (defmacro print-warn (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-warn* ,fmt ,@args)) (defmacro print-crit (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-crit* ,fmt ,@args)) (defmacro print-interactive (fmt &rest args) `(print-level pkgmgr-print:*debuglevel-interactive* ,fmt ,@args)) (defmacro die (fmt &rest args) `(progn (pkgmgr-print:print-level pkgmgr-print:*debuglevel-crit* ,fmt ,@args) (ext:quit)))