aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-20 14:24:08 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-20 14:24:08 +0100
commit22a7e9f3c40b4b6eb68a5343e4870e76c4bfcf63 (patch)
treeb927a520d1d25951a7b22ade23b470168db67a72 /src/crepe/api
parent02845c3d25130e9473604cb2eeee42a7a7a8eadf (diff)
process feedback on #39
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/Asset.cpp5
-rw-r--r--src/crepe/api/Asset.h16
2 files changed, 19 insertions, 2 deletions
diff --git a/src/crepe/api/Asset.cpp b/src/crepe/api/Asset.cpp
index 3fe3ceb..e148367 100644
--- a/src/crepe/api/Asset.cpp
+++ b/src/crepe/api/Asset.cpp
@@ -2,9 +2,10 @@
#include <stdexcept>
#include <whereami.h>
-#include "Asset.h"
#include "api/Config.h"
+#include "Asset.h"
+
using namespace crepe;
using namespace std;
@@ -15,7 +16,7 @@ const string & Asset::get_path() const noexcept { return this->src; }
string Asset::find_asset(const string & src) const {
auto & cfg = Config::get_instance();
- auto & root_pattern = cfg.asset.root_pattern;
+ string & root_pattern = cfg.asset.root_pattern;
// if root_pattern is empty, find_asset must return all paths as-is
if (root_pattern.empty()) return src;
diff --git a/src/crepe/api/Asset.h b/src/crepe/api/Asset.h
index 77596ac..bfd0ac7 100644
--- a/src/crepe/api/Asset.h
+++ b/src/crepe/api/Asset.h
@@ -40,6 +40,22 @@ private:
const std::string src;
private:
+ /**
+ * \brief Locate asset path, or throw exception if it cannot be found
+ *
+ * This function resolves asset locations relative to crepe::Config::root_pattern if it is
+ * set and \p src is a relative path. If \p src is an absolute path, it is canonicalized.
+ * This function only returns if the file can be found.
+ *
+ * \param src Arbitrary path to resource file
+ *
+ * \returns \p src if crepe::Config::root_pattern is empty
+ * \returns Canonical path to \p src
+ *
+ * \throws std::runtime_error if root_pattern cannot be found
+ * \throws std::filesystem::filesystem_error if the resolved path does not exist
+ * \throws std::filesystem::filesystem_error if the path cannot be canonicalized
+ */
std::string find_asset(const std::string & src) const;
/**
* \returns The path to the current executable