logic: Added SourceGroupCustomCommand to use with SourcetrailDB binaries

* Added new Source Group type SourceGroupCustomCommand to UI and ProjectSettings
* The Source Group executes a specified command on every source file
* The variables $SOURCE_PATH, $PROJECT_PATH, $DB_PATH, $STORAGE_VERSION can be passed
* The commands are executed after all other source groups finished indexing
* The command is executed with working directory set to project directory
* Errors during command execution are shown as status update and in the Status View
* SourceGroupCustomCommand cannot be partially cleared, when one file needs clearing the project must be fully re-indexed
This commit is contained in:
Eberhard Graether
2018-12-11 14:05:26 +01:00
parent 21d947ed6c
commit 6d5a3c047d
101 changed files with 1108 additions and 235 deletions
@@ -0,0 +1,46 @@
#include "IndexerCommandCustom.h"
#include <QJsonArray>
#include <QJsonObject>
IndexerCommandType IndexerCommandCustom::getStaticIndexerCommandType()
{
return INDEXER_COMMAND_CUSTOM;
}
IndexerCommandCustom::IndexerCommandCustom(
const FilePath& sourceFilePath,
const std::wstring& customCommand
)
: IndexerCommand(sourceFilePath)
, m_customCommand(customCommand)
{
}
IndexerCommandType IndexerCommandCustom::getIndexerCommandType() const
{
return getStaticIndexerCommandType();
}
size_t IndexerCommandCustom::getByteSize(size_t stringSize) const
{
size_t size = IndexerCommand::getByteSize(stringSize);
return size;
}
const std::wstring& IndexerCommandCustom::getCustomCommand() const
{
return m_customCommand;
}
QJsonObject IndexerCommandCustom::doSerialize() const
{
QJsonObject jsonObject = IndexerCommand::doSerialize();
{
jsonObject["custom_command"] = QString::fromStdWString(m_customCommand);
}
return jsonObject;
}