]> git.ipfire.org Git - pakfire.git/commitdiff
Don't execute a transaction when it is empty
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 2 Nov 2017 18:14:50 +0000 (19:14 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 2 Nov 2017 18:14:50 +0000 (19:14 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/transaction.c
src/libpakfire/libpakfire.sym
src/pakfire/cli.py

index 6004f84dbd014c665d82b6be589f952357997fc3..2f84fd0991ec293e47d60b222393cf096a5a5686 100644 (file)
@@ -111,6 +111,10 @@ static PyObject* Transaction_dump(TransactionObject* self) {
        return PyUnicode_FromString(string);
 }
 
+static Py_ssize_t Transaction_len(TransactionObject* self) {
+       return pakfire_transaction_count(self->transaction);
+}
+
 static struct PyMethodDef Transaction_methods[] = {
        {
                "dump",
@@ -132,6 +136,10 @@ static struct PyGetSetDef Transaction_getsetters[] = {
        { NULL },
 };
 
+static PySequenceMethods Transaction_sequence = {
+       sq_length:          (lenfunc)Transaction_len,
+};
+
 PyTypeObject TransactionType = {
        PyVarObject_HEAD_INIT(NULL, 0)
        tp_name:            "_pakfire.Transaction",
@@ -144,6 +152,7 @@ PyTypeObject TransactionType = {
        tp_methods:         Transaction_methods,
        tp_getset:          Transaction_getsetters,
        tp_iter:            (getiterfunc)Transaction_iter,
+       tp_as_sequence:     &Transaction_sequence,
 };
 
 static PyObject* TransactionIterator_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
index dee81712c821de8f1b6318ee582cbc5343f4d513..05024cd6eb406b9b124d0682c60bb838de4cb121 100644 (file)
@@ -263,6 +263,7 @@ global:
        pakfire_step_needs_download;
 
        # transaction
+       pakfire_transaction_count;
        pakfire_transaction_create;
        pakfire_transaction_dump;
        pakfire_transaction_free;
index 70f8c8d42121033e559a551c2c27e45b4cfadf2f..105ba1e88a4e611d7a0f05794a655cb14d87df5d 100644 (file)
@@ -262,6 +262,12 @@ class Cli(object):
                        self.ui.message(line)
 
        def _execute_transaction(self, transaction):
+               # Don't do anything if the transaction is empty
+               if len(transaction) == 0:
+                       self.ui.message(_("Nothing to do"))
+                       return
+
+               # Dump the transaction
                self._dump_transaction(transaction)
 
                # Ask the user to confirm to go ahead