mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
* feat: crashpad on windows * feat: inline it * feat: more crashpad * chore: remove qBreakpad * fix: add mention to crashpad * refactor: version string * feat: add crashpad module * refactor: build crashpad from source * fix: minor adjustments * chore: add changelog entry * fix: formatting and include * fix: format * build: use flags similar to release profile * ci: build with crashpad on windows * ci: recurse submodules * ci: always include crashpad * fix: try 7z for some reason zstd just doesn't run * fix: wrong path for symbols * fix: copy pls don't build * ci: use new cache key * fix: missing pragma * ci: add workflow without crashpad * docs: elevate changelog entry * fix: add link to cmake issue * fix: windows include issue Someone (crashpad) includes Windows.h before winsock2.h * fix: working directory * fix: another working directory
100 lines
2.5 KiB
C++
100 lines
2.5 KiB
C++
#include "BrowserExtension.hpp"
|
|
#include "common/Args.hpp"
|
|
#include "common/Env.hpp"
|
|
#include "common/Modes.hpp"
|
|
#include "common/QLogging.hpp"
|
|
#include "common/Version.hpp"
|
|
#include "providers/Crashpad.hpp"
|
|
#include "providers/IvrApi.hpp"
|
|
#include "providers/NetworkConfigurationProvider.hpp"
|
|
#include "providers/twitch/api/Helix.hpp"
|
|
#include "RunGui.hpp"
|
|
#include "singletons/Paths.hpp"
|
|
#include "singletons/Settings.hpp"
|
|
#include "util/AttachToConsole.hpp"
|
|
|
|
#include <QApplication>
|
|
#include <QCommandLineParser>
|
|
#include <QMessageBox>
|
|
#include <QStringList>
|
|
|
|
#include <memory>
|
|
|
|
using namespace chatterino;
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
QApplication a(argc, argv);
|
|
|
|
QCoreApplication::setApplicationName("chatterino");
|
|
QCoreApplication::setApplicationVersion(CHATTERINO_VERSION);
|
|
QCoreApplication::setOrganizationDomain("chatterino.com");
|
|
|
|
Paths *paths{};
|
|
|
|
try
|
|
{
|
|
paths = new Paths;
|
|
}
|
|
catch (std::runtime_error &error)
|
|
{
|
|
QMessageBox box;
|
|
if (Modes::instance().isPortable)
|
|
{
|
|
box.setText(
|
|
error.what() +
|
|
QStringLiteral(
|
|
"\n\nInfo: Portable mode requires the application to "
|
|
"be in a writeable location. If you don't want "
|
|
"portable mode reinstall the application. "
|
|
"https://chatterino.com."));
|
|
}
|
|
else
|
|
{
|
|
box.setText(error.what());
|
|
}
|
|
box.exec();
|
|
return 1;
|
|
}
|
|
|
|
initArgs(a);
|
|
|
|
#ifdef CHATTERINO_WITH_CRASHPAD
|
|
const auto crashpadHandler = installCrashHandler();
|
|
#endif
|
|
|
|
// run in gui mode or browser extension host mode
|
|
if (getArgs().shouldRunBrowserExtensionHost)
|
|
{
|
|
runBrowserExtensionHost();
|
|
}
|
|
else if (getArgs().printVersion)
|
|
{
|
|
attachToConsole();
|
|
|
|
auto version = Version::instance();
|
|
qInfo().noquote() << QString("%1 (commit %2%3)")
|
|
.arg(version.fullVersion())
|
|
.arg(version.commitHash())
|
|
.arg(Modes::instance().isNightly
|
|
? ", " + version.dateOfBuild()
|
|
: "");
|
|
}
|
|
else
|
|
{
|
|
if (getArgs().verbose)
|
|
{
|
|
attachToConsole();
|
|
}
|
|
|
|
NetworkConfigurationProvider::applyFromEnv(Env::get());
|
|
|
|
IvrApi::initialize();
|
|
Helix::initialize();
|
|
|
|
Settings settings(paths->settingsDirectory);
|
|
|
|
runGui(a, *paths, settings);
|
|
}
|
|
return 0;
|
|
}
|