diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index d935825..106c7cb 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -14,7 +14,7 @@ jobs: - name: install meson run: apt-get -yq install meson - name: Install build dependencies - run: apt-get -yq install libusb-1.0-0-dev libspdlog-dev libpango1.0-dev libcairo2-dev gcovr + run: apt-get -yq install libusb-1.0-0-dev libspdlog-dev libfmt-dev libpango1.0-dev libcairo2-dev gcovr - name: setup builddir run: meson setup builddir -Db_coverage=true - name: build all targets diff --git a/README.md b/README.md index b0bfc7c..9af98b5 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ pacman -S libusb spdlog pango cairo meson gcovr Install dependencies on Debian/Ubuntu ``` bash -apt-get install libusb-1.0-0-dev libspdlog-dev libpango1.0-dev libcairo2-dev meson gcovr +apt-get install libusb-1.0-0-dev libspdlog-dev libfmt-dev libpango1.0-dev libcairo2-dev meson gcovr ``` ## Build diff --git a/meson.build b/meson.build index 84a0756..fdc0c4a 100644 --- a/meson.build +++ b/meson.build @@ -6,6 +6,7 @@ project('ptprnt', 'cpp', usb_dep = dependency('libusb-1.0') log_dep = dependency('spdlog') +fmt_dep = dependency('fmt') pangocairo_dep = dependency('pangocairo') # CLI11 @@ -23,7 +24,7 @@ ptprnt_exe = executable( 'ptprnt', 'src/main.cpp', install: true, - dependencies : [usb_dep, log_dep, pangocairo_dep, cli11_dep], + dependencies : [usb_dep, log_dep, fmt_dep, pangocairo_dep, cli11_dep], include_directories: incdir, sources: [ptprnt_srcs], cpp_args : ['-DPROJ_VERSION="'+meson.project_version()+'"'], diff --git a/src/PtouchPrint.cpp b/src/PtouchPrint.cpp index f3528b4..60caab3 100644 --- a/src/PtouchPrint.cpp +++ b/src/PtouchPrint.cpp @@ -16,14 +16,25 @@ along with this program. If not, see . */ +#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE +#define SPDLOG_DEBUG_ON +#define SPDLOG_TRACE_ON #include "PtouchPrint.hpp" #include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include #include "CLI/Option.hpp" #include "P700Printer.hpp" @@ -45,9 +56,9 @@ int PtouchPrint::init(int argc, char** argv) { } if (mVerboseFlag) { - setupLogger(spdlog::level::trace); + setupLogger(spdlog::level::debug); } else { - setupLogger(spdlog::level::critical); + setupLogger(spdlog::level::err); } if (!mUsbDeviceFactory.init()) { @@ -59,10 +70,12 @@ int PtouchPrint::init(int argc, char** argv) { } int PtouchPrint::run() { + spdlog::debug("ptprnt version {}", mVersionString); + SPDLOG_TRACE("testing trace"); auto numFoundPrinters = getCompatiblePrinters(); if (numFoundPrinters == 0) { spdlog::error( - "No compatible printers found, please make sure if they are turned on and connected"); + "No compatible printers found, please make sure that they are turned on and connected"); return -1; } else if (numFoundPrinters > 1) { spdlog::warn("Found more than one compatible printer. Currently not supported."); @@ -84,7 +97,7 @@ int PtouchPrint::run() { //printer->printText("wurst", 1); for (auto& cmd : mCommands) { - std::cout << cmd.second << std::endl; + spdlog::debug("Command: {}", cmd.second); } return 0; @@ -113,13 +126,22 @@ unsigned int PtouchPrint::getCompatiblePrinters() { } void PtouchPrint::setupLogger(spdlog::level::level_enum lvl) { - spdlog::set_level(lvl); - spdlog::debug("Starting ptprnt {}", mVersionString); + auto consoleSink = std::make_shared(); + consoleSink->set_level(lvl); + consoleSink->set_pattern("%^%L:%$ %v"); + + auto fileSink = std::make_shared("ptprnt.log", true); + fileSink->set_level(spdlog::level::trace); + fileSink->set_pattern("%Y-%m-%d %H:%m:%S:%e [pid:%P tid:%t] [%^%l%$] %v (%@)"); + std::vector sinks{consoleSink, fileSink}; + auto logger = std::make_shared("default_logger", sinks.begin(), sinks.end()); + logger->set_level(spdlog::level::trace); + spdlog::set_default_logger(logger); } void PtouchPrint::setupCliParser() { auto printVersion = [this](std::size_t) { - std::cout << "ptprnt version: " << mVersionString << std::endl; + fmt::print("ptprnt version: {}\n", mVersionString); }; // General options diff --git a/src/interface/IPrinterDriver.hpp b/src/interface/IPrinterDriver.hpp index 0a0ccda..e90dec1 100644 --- a/src/interface/IPrinterDriver.hpp +++ b/src/interface/IPrinterDriver.hpp @@ -30,6 +30,7 @@ namespace ptprnt { class IPrinterDriver { public: + virtual ~IPrinterDriver() = default; virtual const std::string_view getDriverName() = 0; virtual const std::string_view getName() = 0; virtual const std::string_view getVersion() = 0; diff --git a/src/libusbwrap/UsbDevice.hpp b/src/libusbwrap/UsbDevice.hpp index c713e45..7e32ebc 100644 --- a/src/libusbwrap/UsbDevice.hpp +++ b/src/libusbwrap/UsbDevice.hpp @@ -29,8 +29,8 @@ namespace libusbwrap { class UsbDevice : public IUsbDevice { public: - UsbDevice(libusb_context* ctx, libusb_device* dev); - ~UsbDevice(); + explicit UsbDevice(libusb_context* ctx, libusb_device* dev); + ~UsbDevice() override; // delete copy ctor and assignment UsbDevice(const UsbDevice&) = delete; diff --git a/src/libusbwrap/interface/IUsbDevice.hpp b/src/libusbwrap/interface/IUsbDevice.hpp index 9fec3f1..5025c59 100644 --- a/src/libusbwrap/interface/IUsbDevice.hpp +++ b/src/libusbwrap/interface/IUsbDevice.hpp @@ -24,8 +24,9 @@ enum class Speed { class IUsbDevice { public: - virtual bool open() = 0; - virtual void close() = 0; + virtual ~IUsbDevice() = default; + virtual bool open() = 0; + virtual void close() = 0; // libusb wrappers virtual bool detachKernelDriver(int interfaceNo) = 0; diff --git a/src/libusbwrap/interface/IUsbDeviceFactory.hpp b/src/libusbwrap/interface/IUsbDeviceFactory.hpp index 5e11ee6..a31cdc7 100644 --- a/src/libusbwrap/interface/IUsbDeviceFactory.hpp +++ b/src/libusbwrap/interface/IUsbDeviceFactory.hpp @@ -9,7 +9,8 @@ namespace libusbwrap { class IUsbDeviceFactory { public: - virtual std::vector> findAllDevices() = 0; + virtual ~IUsbDeviceFactory() = default; + virtual std::vector> findAllDevices() = 0; virtual std::vector> findDevices(uint16_t vid, uint16_t pid) = 0; }; } // namespace libusbwrap \ No newline at end of file