transaction: New script_output callback
Used to pass the outputs (stdout and stderr) of an executed scriptlet to the user.
This commit is contained in:
parent
b915955ebe
commit
0d6e2cff4d
|
@ -92,6 +92,14 @@ public:
|
|||
virtual void script_error(const TransactionItem * item, Nevra nevra, ScriptType type, uint64_t return_code);
|
||||
virtual void script_start(const TransactionItem * item, Nevra nevra, ScriptType type);
|
||||
virtual void script_stop(const TransactionItem * item, Nevra nevra, ScriptType type, uint64_t return_code);
|
||||
/// Called after the scriptlet finished
|
||||
/// @param item Transaction item
|
||||
/// @param nevra NEVRA of the package the scriptlet belongs to
|
||||
/// @param type Type of the scriptlet
|
||||
/// @param return_code Return code of the scriptlet: OK, non-critical error, error
|
||||
/// @param output Output produced by the scriptlet
|
||||
virtual void script_output(
|
||||
const TransactionItem * item, Nevra nevra, ScriptType type, uint64_t return_code, const std::string output);
|
||||
virtual void elem_progress(const TransactionItem & item, uint64_t amount, uint64_t total);
|
||||
virtual void verify_progress(uint64_t amount, uint64_t total);
|
||||
virtual void verify_start(uint64_t total);
|
||||
|
|
|
@ -672,6 +672,8 @@ void * Transaction::ts_callback(
|
|||
to_full_nevra_string(nevra),
|
||||
total);
|
||||
if (callbacks) {
|
||||
std::lock_guard<std::mutex> lock(transaction.last_script_output_mutex);
|
||||
callbacks->script_output(item, nevra, script_type, return_code, transaction.last_script_output);
|
||||
callbacks->script_error(item, nevra, script_type, return_code);
|
||||
}
|
||||
} else {
|
||||
|
@ -693,6 +695,8 @@ void * Transaction::ts_callback(
|
|||
if (callbacks) {
|
||||
callbacks->script_start(item, nevra, script_type);
|
||||
}
|
||||
std::lock_guard<std::mutex> lock(transaction.last_script_output_mutex);
|
||||
transaction.last_script_output = "";
|
||||
break;
|
||||
}
|
||||
case RPMCALLBACK_SCRIPT_STOP: {
|
||||
|
@ -706,6 +710,7 @@ void * Transaction::ts_callback(
|
|||
to_full_nevra_string(nevra),
|
||||
total);
|
||||
if (callbacks) {
|
||||
callbacks->script_output(item, nevra, script_type, total, transaction.last_script_output);
|
||||
callbacks->script_stop(item, nevra, script_type, total);
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -85,6 +85,8 @@ void TransactionCallbacks::script_start(const TransactionItem *, Nevra, ScriptTy
|
|||
|
||||
void TransactionCallbacks::script_stop(const TransactionItem *, Nevra, ScriptType, uint64_t) {}
|
||||
|
||||
void TransactionCallbacks::script_output(const TransactionItem *, Nevra, ScriptType, uint64_t, const std::string) {}
|
||||
|
||||
void TransactionCallbacks::elem_progress(const TransactionItem &, uint64_t, uint64_t) {}
|
||||
|
||||
void TransactionCallbacks::verify_progress(uint64_t, uint64_t) {}
|
||||
|
|
Loading…
Reference in New Issue