Add getter for global and system config
This commit is contained in:
parent
c4d17b759b
commit
068b833c87
@ -5,4 +5,7 @@
|
|||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
#include <git2.h>
|
#include <git2.h>
|
||||||
|
|
||||||
|
PyObject* Config_get_global_config(void);
|
||||||
|
PyObject* Config_get_system_config(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -54,6 +54,64 @@ Config_traverse(Config *self, visitproc visit, void *arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
Config_open(char *c_path) {
|
||||||
|
PyObject *py_path = Py_BuildValue("(s)", c_path);
|
||||||
|
Config *config = PyObject_GC_New(Config, &ConfigType);
|
||||||
|
|
||||||
|
Config_init(config, py_path, NULL);
|
||||||
|
|
||||||
|
Py_INCREF(config);
|
||||||
|
|
||||||
|
return (PyObject *)config;
|
||||||
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
Config_get_global_config(void)
|
||||||
|
{
|
||||||
|
char path[GIT_PATH_MAX];
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = git_config_find_global(path, GIT_PATH_MAX);
|
||||||
|
if (err < 0) {
|
||||||
|
if (err == GIT_ENOTFOUND) {
|
||||||
|
PyErr_SetString(PyExc_IOError, "Global config file not found.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return Error_set(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Config_open(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
Config_get_system_config(void)
|
||||||
|
{
|
||||||
|
char path[GIT_PATH_MAX];
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = git_config_find_system(path, GIT_PATH_MAX);
|
||||||
|
if (err < 0) {
|
||||||
|
if (err == GIT_ENOTFOUND) {
|
||||||
|
PyErr_SetString(PyExc_IOError, "System config file not found.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return Error_set(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Config_open(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
PyMethodDef Config_methods[] = {
|
||||||
|
{"get_system_config", (PyCFunction)Config_get_system_config,
|
||||||
|
METH_NOARGS | METH_STATIC,
|
||||||
|
"Return an object representing the system configuration file."},
|
||||||
|
{"get_global_config", (PyCFunction)Config_get_global_config,
|
||||||
|
METH_NOARGS | METH_STATIC,
|
||||||
|
"Return an object representing the global configuration file."},
|
||||||
|
{NULL}
|
||||||
|
};
|
||||||
|
|
||||||
PyTypeObject ConfigType = {
|
PyTypeObject ConfigType = {
|
||||||
PyVarObject_HEAD_INIT(NULL, 0)
|
PyVarObject_HEAD_INIT(NULL, 0)
|
||||||
"_pygit2.Config", /* tp_name */
|
"_pygit2.Config", /* tp_name */
|
||||||
@ -83,7 +141,7 @@ PyTypeObject ConfigType = {
|
|||||||
0, /* tp_weaklistoffset */
|
0, /* tp_weaklistoffset */
|
||||||
0, /* tp_iter */
|
0, /* tp_iter */
|
||||||
0, /* tp_iternext */
|
0, /* tp_iternext */
|
||||||
0, /* tp_methods */
|
Config_methods, /* tp_methods */
|
||||||
0, /* tp_members */
|
0, /* tp_members */
|
||||||
0, /* tp_getset */
|
0, /* tp_getset */
|
||||||
0, /* tp_base */
|
0, /* tp_base */
|
||||||
|
@ -40,6 +40,18 @@ config_filename = "test_config"
|
|||||||
|
|
||||||
class ConfigTest(utils.RepoTestCase):
|
class ConfigTest(utils.RepoTestCase):
|
||||||
|
|
||||||
|
def test_global_config(self):
|
||||||
|
try:
|
||||||
|
self.assertNotEqual(None, pygit2.Config.get_global_config())
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_system_config(self):
|
||||||
|
try:
|
||||||
|
self.assertNotEqual(None, pygit2.Config.get_system_config())
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
def test_new(self):
|
def test_new(self):
|
||||||
config_write = pygit2.Config(config_filename)
|
config_write = pygit2.Config(config_filename)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user