Files
FEX-Emu--FEX/Source/Tools/FEXGetConfig/Main.cpp
T
Ryan Houdek f161e3bfb0 Massive amount of IWYU cleanup
This isn't quite a 100% clean sweep of IWYU.
There are some false positives where clang fails.
Additionally there are still a few missed in the frontend side of things
that I didn't get to
2021-08-28 00:32:15 -07:00

80 lines
2.4 KiB
C++

#include "ConfigDefines.h"
#include "OptionParser.h"
#include "Common/RootFSSetup.h"
#include "git_version.h"
#include <FEXCore/Config/Config.h>
#include <filesystem>
#include <stdio.h>
#include <string>
int main(int argc, char **argv, char **envp) {
FEXCore::Config::Initialize();
FEXCore::Config::AddLayer(FEXCore::Config::CreateMainLayer());
// No FEX arguments passed through command line
FEXCore::Config::AddLayer(FEXCore::Config::CreateEnvironmentLayer(envp));
FEXCore::Config::Load();
// Load the arguments
optparse::OptionParser Parser = optparse::OptionParser()
.description("Simple application to get a couple of FEX options");
Parser.add_option("--install-prefix")
.action("store_true")
.help("Print the FEX install prefix");
Parser.add_option("--app")
.help("Load an application profile for this application if it exists");
Parser.add_option("--current-rootfs")
.action("store_true")
.help("Print the directory that contains the FEX rootfs. Mounted in the case of squashfs");
Parser.add_option("--current-rootfs-lock")
.action("store_true")
.help("SquashFS lock file if squashfs is mounted");
Parser.add_option("--version")
.action("store_true")
.help("Print the installed FEX-Emu version");
optparse::Values Options = Parser.parse_args(argc, argv);
if (Options.is_set_by_user("app")) {
// Load the application config if one was provided
auto ProgramName = std::filesystem::path(Options["app"]).filename();
FEXCore::Config::AddLayer(FEXCore::Config::CreateAppLayer(ProgramName, true));
FEXCore::Config::AddLayer(FEXCore::Config::CreateAppLayer(ProgramName, false));
}
// Reload the meta layer
FEXCore::Config::ReloadMetaLayer();
if (Options.is_set_by_user("version")) {
fprintf(stdout, GIT_DESCRIBE_STRING "\n");
}
if (Options.is_set_by_user("install_prefix")) {
fprintf(stdout, FEX_INSTALL_PREFIX "\n");
}
if (Options.is_set_by_user("current_rootfs_lock")) {
auto LockFile = FEX::RootFS::GetRootFSLockFile();
if (FEX::RootFS::CheckLockExists(LockFile)) {
fprintf(stdout, "%s\n", LockFile.c_str());
}
}
if (Options.is_set_by_user("current_rootfs")) {
// Ensure RootFS is setup before config options try to pull CONFIG_ROOTFS
auto Status = FEX::RootFS::UpdateRootFSPath();
if (Status) {
FEX_CONFIG_OPT(LDPath, ROOTFS);
fprintf(stdout, "%s\n", LDPath().c_str());
}
}
return 0;
}