forked from quickshell/quickshell
core/log: add filesystem logger
This commit is contained in:
parent
46f48f2f87
commit
6bf4826ae7
9 changed files with 299 additions and 53 deletions
91
src/core/paths.cpp
Normal file
91
src/core/paths.cpp
Normal file
|
@ -0,0 +1,91 @@
|
|||
#include "paths.hpp"
|
||||
#include <utility>
|
||||
|
||||
#include <qdatetime.h>
|
||||
#include <qdir.h>
|
||||
#include <qlogging.h>
|
||||
#include <qloggingcategory.h>
|
||||
#include <qstandardpaths.h>
|
||||
#include <qtenvironmentvariables.h>
|
||||
#include <unistd.h>
|
||||
|
||||
Q_LOGGING_CATEGORY(logPaths, "quickshell.paths", QtWarningMsg);
|
||||
|
||||
QsPaths* QsPaths::instance() {
|
||||
static auto* instance = new QsPaths(); // NOLINT
|
||||
return instance;
|
||||
}
|
||||
|
||||
void QsPaths::init(QString shellId) { QsPaths::instance()->shellId = std::move(shellId); }
|
||||
|
||||
QDir* QsPaths::cacheDir() {
|
||||
if (this->cacheState == DirState::Unknown) {
|
||||
auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
|
||||
dir = QDir(dir.filePath("quickshell"));
|
||||
dir = QDir(dir.filePath(this->shellId));
|
||||
this->mCacheDir = dir;
|
||||
|
||||
qCDebug(logPaths) << "Initialized cache path:" << dir.path();
|
||||
|
||||
if (!dir.mkpath(".")) {
|
||||
qCCritical(logPaths) << "Cannot create cache directory at" << dir.path();
|
||||
|
||||
this->cacheState = DirState::Failed;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->cacheState == DirState::Failed) return nullptr;
|
||||
else return &this->mCacheDir;
|
||||
}
|
||||
|
||||
QDir* QsPaths::runDir() {
|
||||
if (this->runState == DirState::Unknown) {
|
||||
auto runtimeDir = qEnvironmentVariable("XDG_RUNTIME_DIR");
|
||||
if (runtimeDir.isEmpty()) {
|
||||
runtimeDir = QString("/run/user/$1").arg(getuid());
|
||||
qCInfo(logPaths) << "XDG_RUNTIME_DIR was not set, defaulting to" << runtimeDir;
|
||||
}
|
||||
|
||||
auto dir = QDir(runtimeDir);
|
||||
dir = QDir(dir.filePath("quickshell"));
|
||||
dir = QDir(dir.filePath(this->shellId));
|
||||
this->mRunDir = dir;
|
||||
|
||||
qCDebug(logPaths) << "Initialized runtime path:" << dir.path();
|
||||
|
||||
if (!dir.mkpath(".")) {
|
||||
qCCritical(logPaths) << "Cannot create runtime directory at" << dir.path();
|
||||
|
||||
this->runState = DirState::Failed;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->runState == DirState::Failed) return nullptr;
|
||||
else return &this->mRunDir;
|
||||
}
|
||||
|
||||
QDir* QsPaths::instanceRunDir() {
|
||||
if (this->instanceRunState == DirState::Unknown) {
|
||||
auto* runtimeDir = this->runDir();
|
||||
|
||||
if (!runtimeDir) {
|
||||
qCCritical(logPaths) << "Cannot create instance runtime directory as main runtim directory "
|
||||
"could not be created.";
|
||||
this->instanceRunState = DirState::Failed;
|
||||
} else {
|
||||
this->mInstanceRunDir =
|
||||
runtimeDir->filePath(QString("run-%1").arg(QDateTime::currentMSecsSinceEpoch()));
|
||||
|
||||
qCDebug(logPaths) << "Initialized instance runtime path:" << this->mInstanceRunDir.path();
|
||||
|
||||
if (!this->mInstanceRunDir.mkpath(".")) {
|
||||
qCCritical(logPaths) << "Cannot create instance runtime directory at"
|
||||
<< this->mInstanceRunDir.path();
|
||||
this->instanceRunState = DirState::Failed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->runState == DirState::Failed) return nullptr;
|
||||
else return &this->mInstanceRunDir;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue