core: add per-config shell id

Will be useful for future functionality such as IPC and caching.
This commit is contained in:
outfoxxed 2024-08-02 02:09:55 -07:00
parent 79b2fea52e
commit d582bb7b57
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
3 changed files with 22 additions and 9 deletions

View file

@ -5,6 +5,7 @@
#include <qcommandlineoption.h>
#include <qcommandlineparser.h>
#include <qcoreapplication.h>
#include <qcryptographichash.h>
#include <qdir.h>
#include <qfileinfo.h>
#include <qguiapplication.h>
@ -31,10 +32,12 @@ int qs_main(int argc, char** argv) {
auto useQApplication = false;
auto nativeTextRendering = false;
auto desktopSettingsAware = true;
auto shellId = QString();
QHash<QString, QString> envOverrides;
int debugPort = -1;
bool waitForDebug = false;
bool printCurrent = false;
{
const auto app = QCoreApplication(argc, argv);
@ -85,7 +88,7 @@ int qs_main(int argc, char** argv) {
}
{
auto printCurrent = parser.isSet(currentOption);
printCurrent = parser.isSet(currentOption);
// NOLINTBEGIN
#define CHECK(rname, name, level, label, expr) \
@ -274,9 +277,9 @@ int qs_main(int argc, char** argv) {
#undef CHECK
#undef OPTSTR
qInfo() << "config file path:" << configFilePath;
shellId = QCryptographicHash::hash(configFilePath.toUtf8(), QCryptographicHash::Md5).toHex();
if (printCurrent) return 0;
qInfo() << "config file path:" << configFilePath;
}
if (!QFile(configFilePath).exists()) {
@ -315,6 +318,8 @@ int qs_main(int argc, char** argv) {
auto var = envPragma.sliced(0, splitIdx).trimmed();
auto val = envPragma.sliced(splitIdx + 1).trimmed();
envOverrides.insert(var, val);
} else if (pragma.startsWith("ShellId ")) {
shellId = pragma.sliced(8).trimmed();
} else {
qCritical() << "Unrecognized pragma" << pragma;
return -1;
@ -325,6 +330,12 @@ int qs_main(int argc, char** argv) {
file.close();
}
if (printCurrent) {
qInfo() << "shell id:" << shellId;
return 0;
}
for (auto [var, val]: envOverrides.asKeyValueRange()) {
qputenv(var.toUtf8(), val.toUtf8());
}
@ -396,7 +407,7 @@ int qs_main(int argc, char** argv) {
QQuickWindow::setTextRenderType(QQuickWindow::NativeTextRendering);
}
auto root = RootWrapper(configFilePath);
auto root = RootWrapper(configFilePath, shellId);
QGuiApplication::setQuitOnLastWindowClosed(false);
auto code = QGuiApplication::exec();