]> git.ipfire.org Git - pakfire.git/commitdiff
Drop functions to enable/disable a repository
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Jan 2018 13:33:12 +0000 (14:33 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 20 Jan 2018 13:33:12 +0000 (14:33 +0100)
This is implemented in the repositories itself

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/package.c
src/_pakfire/pakfire.c
src/_pakfire/repo.c
src/_pakfire/repo.h
src/pakfire/cli.py
src/pakfire/repository/__init__.py

index 9468a1fba91d44d90935ff07d04bdc7a05f52e04..f3003c5d833816bb786f5a1ee5f450796af76655 100644 (file)
@@ -447,12 +447,12 @@ static PyObject* Package_get_cache_path(PackageObject* self) {
 static PyObject* Package_get_repo(PackageObject* self) {
        PakfireRepo repo = pakfire_package_get_repo(self->package);
        if (!repo)
-               return NULL;
+               Py_RETURN_NONE;
 
-       const char* name = pakfire_repo_get_name(repo);
+       PyObject* obj = new_repo(&RepoType, repo);
        pakfire_repo_unref(repo);
 
-       return new_repo(self->pakfire, name);
+       return obj;
 }
 
 static int Package_set_repo(PackageObject* self, PyObject* value) {
index 09aa2600baa31b5b10209726c5bb5abe835c1289..e12b5d809f92e78909bad00a143e5d9d52a3bb79 100644 (file)
@@ -79,6 +79,22 @@ static PyObject* Pakfire_get_arch(PakfireObject* self) {
     return PyUnicode_FromString(arch);
 }
 
+static PyObject* Pakfire_get_repo(PakfireObject* self, PyObject* args) {
+       const char* name = NULL;
+
+       if (!PyArg_ParseTuple(args, "s", &name))
+               return NULL;
+
+       PakfireRepo repo = pakfire_get_repo(self->pakfire, name);
+       if (!repo)
+               Py_RETURN_NONE;
+
+       PyObject* obj = new_repo(&RepoType, repo);
+       pakfire_repo_unref(repo);
+
+       return obj;
+}
+
 static PyObject* Pakfire_get_cache_path(PakfireObject* self) {
        char* path = pakfire_get_cache_path(self->pakfire, NULL);
        if (!path)
@@ -104,8 +120,8 @@ static PyObject* Pakfire_get_installed_repo(PakfireObject* self) {
        if (!repo)
                Py_RETURN_NONE;
 
-       PyObject* obj = new_repo(self, pakfire_repo_get_name(repo));
-       Py_XINCREF(obj);
+       PyObject* obj = new_repo(&RepoType, repo);
+       pakfire_repo_unref(repo);
 
        return obj;
 }
@@ -294,6 +310,12 @@ static struct PyMethodDef Pakfire_methods[] = {
                METH_VARARGS,
                NULL
        },
+       {
+               "get_repo",
+               (PyCFunction)Pakfire_get_repo,
+               METH_VARARGS,
+               NULL
+       },
        {
                "import_key",
                (PyCFunction)Pakfire_import_key,
index 48b17e74ccc6bd7c5b4a05bb191d8edda2266716..00a1b9fb1dc07b75ea86ed3ba1b15c756e5b5848 100644 (file)
 #include "package.h"
 #include "repo.h"
 
-PyObject* new_repo(PakfireObject* pakfire, const char* name) {
-       PyObject* args = Py_BuildValue("Os", (PyObject *)pakfire, name);
-       PyObject* repo = PyObject_CallObject((PyObject *)&RepoType, args);
-
-       Py_DECREF(args);
+PyObject* new_repo(PyTypeObject* type, PakfireRepo repo) {
+       RepoObject* self = (RepoObject *)type->tp_alloc(type, 0);
+       if (self) {
+               self->repo = pakfire_repo_ref(repo);
+       }
 
-       return repo;
+       return (PyObject*)self;
 }
 
 static PyObject* Repo_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
index ecda9a28cb874fabbe6519899cfb85143003e55e..3a25f0ecac142a66f5c1f1eb3988e5bc88451943 100644 (file)
@@ -35,6 +35,6 @@ typedef struct {
 
 extern PyTypeObject RepoType;
 
-PyObject* new_repo(PakfireObject* pakfire, const char* name);
+PyObject* new_repo(PyTypeObject* type, PakfireRepo repo);
 
 #endif /* PYTHON_PAKFIRE_REPO_H */
index bb2e42eec99455e659df3fb2d1a412601929fcfa..4b76d27796eefe40e04fb5f4a62628969b6e05b3 100644 (file)
@@ -192,12 +192,14 @@ class Cli(object):
                p = base.Pakfire()
 
                # Disable repositories.
-               for repo in ns.disable_repo:
-                       p.repos.disable_repo(repo)
+               for repo_name in ns.disable_repo:
+                       repo = p.get_repo(repo_name)
+                       repo.enabled = False
 
                # Enable repositories.
-               for repo in ns.enable_repo:
-                       p.repos.enable_repo(repo)
+               for repo_name in ns.enable_repo:
+                       repo = p.get_repo(repo_name)
+                       repo.enabled = True
 
                return p
 
index 4225bd0c2d23f0ad5698e09381613fc68fd9c915..05a8e2574c381037a36f93c7f805d7157de1185b 100644 (file)
@@ -170,22 +170,6 @@ class Repositories(object):
                except KeyError:
                        return self.dummy
 
-       def enable_repo(self, name):
-               for repo in self:
-                       if repo == self.local:
-                               continue
-
-                       if repo.name == name or name == "*":
-                               repo.enabled = True
-
-       def disable_repo(self, name):
-               for repo in self:
-                       if repo == self.local:
-                               continue
-
-                       if repo.name == name or name == "*":
-                               repo.enabled = False
-
        def clean(self):
                log.info("Cleaning up all repository caches...")