--- a/src/StreamletAttributeFinder.h Sat Jan 18 16:41:59 2020 +0100
+++ b/src/StreamletAttributeFinder.h Sat Jan 18 20:09:34 2020 +0100
@@ -43,11 +43,15 @@
std::map<int, std::shared_ptr<SubProcess>> subProcesses;
std::map<int, std::vector<AttributeMetadata>> cachedMetadata;
- string_t getExecCommand(const RequestedField& field) {
- // TODO: move to another directory, exec, not script + use custom $PATH with no prefix
- return SCRIPT_PREFIX + field.name;
+ string_t getStreamletPath() {
+ const char* originalPath = getenv("PATH");
+ const char* streamletPath = getenv("RELPIPE_IN_FILESYSTEM_STREAMLET_PATH");
+
+ if (originalPath && streamletPath) return convertor.from_bytes(std::string(streamletPath) + ":" + originalPath);
+ else if (originalPath) return convertor.from_bytes(std::string(originalPath));
+ else if (streamletPath) return convertor.from_bytes(std::string(streamletPath));
+ else return L"";
}
-
protected:
void startFile(const fs::path& file, const string& fileRaw, bool exists) override {
@@ -86,7 +90,7 @@
return cachedMetadata[field.id];
} else {
- std::vector<string_t> commandLine = {getExecCommand(field)};
+ std::vector<string_t> commandLine = {field.name};
std::map<string_t, string_t> environment;
for (auto mn : StreamletMsg::getMessageNames()) {
@@ -94,6 +98,8 @@
environment[L"EXEC_MSG_" + std::to_wstring(mn.first)] = mn.second;
}
+ environment[L"PATH"] = getStreamletPath();
+
shared_ptr<SubProcess> subProcess(SubProcess::create(commandLine, environment));
subProcesses[field.id] = subProcess;