// Copyright Epic Games, Inc. All Rights Reserved. #include "zenutil/authutils.h" #include "zenutil/config/commandlineoptions.h" #include namespace zen { using namespace std::literals; std::string_view GetOidcTokenPathEnvVariableName() { #if ZEN_PLATFORM_WINDOWS return "UE-OidcTokenExePath"sv; #endif #if ZEN_PLATFORM_LINUX || ZEN_PLATFORM_MAC return "UE_OidcTokenExePath"sv; #endif } std::filesystem::path FindOidcTokenExePath(std::string_view OidcTokenAuthExecutablePath) { if (OidcTokenAuthExecutablePath.empty()) { std::filesystem::path OidcTokenPath = GetEnvVariable(GetOidcTokenPathEnvVariableName()); if (IsFile(OidcTokenPath)) { return OidcTokenPath; } const std::string OidcExecutableName = "OidcToken" ZEN_EXE_SUFFIX_LITERAL; OidcTokenPath = (GetRunningExecutablePath().parent_path() / OidcExecutableName).make_preferred(); if (IsFile(OidcTokenPath)) { return OidcTokenPath; } OidcTokenPath = (std::filesystem::current_path() / OidcExecutableName).make_preferred(); if (IsFile(OidcTokenPath)) { return OidcTokenPath; } } else { std::filesystem::path OidcTokenPath = std::filesystem::absolute(StringToPath(OidcTokenAuthExecutablePath)).make_preferred(); if (IsFile(OidcTokenPath)) { return OidcTokenPath; } } return {}; }; } // namespace zen