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) {
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)
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;
}
METH_VARARGS,
NULL
},
+ {
+ "get_repo",
+ (PyCFunction)Pakfire_get_repo,
+ METH_VARARGS,
+ NULL
+ },
{
"import_key",
(PyCFunction)Pakfire_import_key,
#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) {
extern PyTypeObject RepoType;
-PyObject* new_repo(PakfireObject* pakfire, const char* name);
+PyObject* new_repo(PyTypeObject* type, PakfireRepo repo);
#endif /* PYTHON_PAKFIRE_REPO_H */
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
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...")