///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2026- Equinor ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include #include #include #include #include #include #include //================================================================================================== /// Runs `python -m rips.taskmaestro_helper `, which prints exactly one JSON document //================================================================================================== namespace RimWorkflowHelperProcess { constexpr int defaultTimeoutMs = 60000; std::expected runSync( const QStringList& args, const QByteArray& stdinData = {}, int timeoutMs = defaultTimeoutMs, const QString& extraPythonPath = {} ); QStringList helperArguments( const QStringList& args ); QProcessEnvironment environment( const QString& extraPythonPath ); std::expected parseOutput( int exitCode, const QByteArray& standardOutput, const QByteArray& standardError ); // The `{"status": "invalid", "error": {...}}` document printed on stdout, if any. parseOutput() // reduces it to a message; this keeps the task and field the error refers to. std::optional invalidResult( const QByteArray& standardOutput ); QString errorMessage( const QJsonObject& error ); } // namespace RimWorkflowHelperProcess