2021-05-30 19:05:18 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <string>
|
2022-01-02 20:25:25 +00:00
|
|
|
#include <filesystem>
|
2021-05-30 19:05:18 +01:00
|
|
|
|
2023-08-13 15:47:51 +01:00
|
|
|
namespace Services
|
2021-05-30 19:05:18 +01:00
|
|
|
{
|
2022-12-26 21:47:09 +00:00
|
|
|
class PathService
|
2021-05-30 19:05:18 +01:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
/**
|
|
|
|
|
* Returns the path to the directory in which the Bloom binary resides.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
static std::string applicationDirPath();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the path to the Resources directory, located in the application directory.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
2022-01-02 20:25:25 +00:00
|
|
|
static std::string resourcesDirPath() {
|
2023-08-20 15:36:50 +01:00
|
|
|
return PathService::applicationDirPath() + "/../resources";
|
2021-05-30 19:05:18 +01:00
|
|
|
}
|
|
|
|
|
|
2022-01-02 20:25:25 +00:00
|
|
|
/**
|
|
|
|
|
* Returns the path to the current project's directory (the working directory, from which Bloom was run)
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
static std::string projectDirPath() {
|
|
|
|
|
return std::filesystem::current_path().string();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2022-07-23 15:37:22 +01:00
|
|
|
* Returns the path to the current project's configuration file (bloom.yaml).
|
2022-01-02 20:25:25 +00:00
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
static std::string projectConfigPath() {
|
2022-12-26 21:47:09 +00:00
|
|
|
return PathService::projectDirPath() + "/bloom.yaml";
|
2022-01-02 20:25:25 +00:00
|
|
|
}
|
2022-01-02 20:44:39 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the path to the current project's settings directory.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
static std::string projectSettingsDirPath() {
|
2022-12-26 21:47:09 +00:00
|
|
|
return PathService::projectDirPath() + "/.bloom";
|
2022-01-02 20:44:39 +00:00
|
|
|
}
|
|
|
|
|
|
2023-12-17 18:12:53 +00:00
|
|
|
/**
|
|
|
|
|
* Returns the path to the directory containing Bloom's target description files.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
2024-07-23 21:14:22 +01:00
|
|
|
static std::string targetDescriptionFilesDirPath() {
|
2023-12-17 18:12:53 +00:00
|
|
|
return PathService::resourcesDirPath() + "/TargetDescriptionFiles";
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-02 20:44:39 +00:00
|
|
|
/**
|
|
|
|
|
* Returns the path to the current project's settings file.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
static std::string projectSettingsPath() {
|
2022-12-26 21:47:09 +00:00
|
|
|
return PathService::projectSettingsDirPath() + "/settings.json";
|
2022-01-02 20:44:39 +00:00
|
|
|
}
|
|
|
|
|
|
2021-05-30 19:05:18 +01:00
|
|
|
/**
|
|
|
|
|
* Returns the path to Bloom's compiled resources.
|
|
|
|
|
*
|
|
|
|
|
* If the debug configuration is enabled, this function will return the absolute path to Bloom's source code,
|
|
|
|
|
* meaning we won't use compiled resources for debug builds. This is useful for debugging and tweaking QT UI
|
|
|
|
|
* files such as QT stylesheets and UI templates.
|
2021-11-02 23:26:11 +00:00
|
|
|
*
|
2021-05-30 19:05:18 +01:00
|
|
|
* @return
|
|
|
|
|
*/
|
2022-04-29 22:12:47 +01:00
|
|
|
static std::string compiledResourcesPath() {
|
2021-05-30 19:05:18 +01:00
|
|
|
#ifdef BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE
|
2022-04-03 17:00:40 +01:00
|
|
|
return {BLOOM_COMPILED_RESOURCES_PATH_OVERRIDE};
|
2021-05-30 19:05:18 +01:00
|
|
|
#else
|
2022-04-03 17:00:40 +01:00
|
|
|
return {":/compiled"};
|
2021-11-02 23:26:11 +00:00
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the domain name for the Bloom website.
|
|
|
|
|
*
|
|
|
|
|
* The domain name can be overridden via the BLOOM_HOME_DOMAIN_NAME_OVERRIDE compile definition.
|
|
|
|
|
* See CMakeLists.txt
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
2022-04-29 22:12:47 +01:00
|
|
|
static std::string homeDomainName() {
|
2021-11-02 23:26:11 +00:00
|
|
|
#ifdef BLOOM_HOME_DOMAIN_NAME_OVERRIDE
|
2022-04-03 17:00:40 +01:00
|
|
|
return {BLOOM_HOME_DOMAIN_NAME_OVERRIDE};
|
2021-11-02 23:26:11 +00:00
|
|
|
#else
|
2022-04-03 17:00:40 +01:00
|
|
|
return {"https://bloom.oscillate.io"};
|
2021-05-30 19:05:18 +01:00
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|