1 module deimos.git2.config;
2 
3 import deimos.git2.common;
4 import deimos.git2.types;
5 import deimos.git2.util;
6 import deimos.git2.sys.config;
7 
8 extern (C):
9 
10 enum git_config_level_t {
11 	GIT_CONFIG_LEVEL_SYSTEM = 1,
12 	GIT_CONFIG_LEVEL_XDG = 2,
13 	GIT_CONFIG_LEVEL_GLOBAL = 3,
14 	GIT_CONFIG_LEVEL_LOCAL = 4,
15 	GIT_CONFIG_LEVEL_APP = 5,
16 	GIT_CONFIG_HIGHEST_LEVEL = -1,
17 }
18 mixin _ExportEnumMembers!git_config_level_t;
19 
20 struct git_config_entry {
21 	const(char)* name;
22 	const(char)* value;
23 	git_config_level_t level;
24 }
25 
26 alias git_config_foreach_cb = int function(const(git_config_entry)*, void *);
27 struct git_config_iterator {
28 	@disable this();
29 	@disable this(this);
30 }
31 
32 enum git_cvar_t {
33 	GIT_CVAR_FALSE = 0,
34 	GIT_CVAR_TRUE = 1,
35 	GIT_CVAR_INT32,
36 	GIT_CVAR_STRING
37 }
38 mixin _ExportEnumMembers!git_cvar_t;
39 
40 struct git_cvar_map {
41 	git_cvar_t cvar_type;
42 	const(char)* str_match;
43 	int map_value;
44 }
45 
46 int git_config_find_global(char *out_, size_t length);
47 int git_config_find_xdg(char *out_, size_t length);
48 int git_config_find_system(char *out_, size_t length);
49 int git_config_open_default(git_config **out_);
50 int git_config_new(git_config **out_);
51 int git_config_add_file_ondisk(
52 	git_config *cfg,
53 	const(char)* path,
54 	git_config_level_t level,
55 	int force);
56 int git_config_open_ondisk(git_config **out_, const(char)* path);
57 int git_config_open_level(
58 	git_config **out_,
59 	const(git_config)* parent,
60 	git_config_level_t level);
61 int git_config_open_global(git_config **out_, git_config *config);
62 int git_config_refresh(git_config *cfg);
63 void git_config_free(git_config *cfg);
64 int git_config_get_entry(
65 	const(git_config_entry)** out_,
66 	const(git_config)* cfg,
67 	const(char)* name);
68 int git_config_get_int32(int32_t *out_, const(git_config)* cfg, const(char)* name);
69 int git_config_get_int64(int64_t *out_, const(git_config)* cfg, const(char)* name);
70 int git_config_get_bool(int *out_, const(git_config)* cfg, const(char)* name);
71 int git_config_get_string(const(char)** out_, const(git_config)* cfg, const(char)* name);
72 int git_config_get_multivar_foreach(const(git_config)* cfg, const(char)* name, const(char)* regexp, git_config_foreach_cb callback, void *payload);
73 int git_config_multivar_iterator_new(git_config_iterator** out_, const(git_config)* cfg, const(char)* name, const(char)* regexp);
74 int git_config_next(git_config_entry** entry, git_config_iterator *iter);
75 void git_config_iterator_free(git_config_iterator *iter);
76 int git_config_set_int32(git_config *cfg, const(char)* name, int32_t value);
77 int git_config_set_int64(git_config *cfg, const(char)* name, int64_t value);
78 int git_config_set_bool(git_config *cfg, const(char)* name, int value);
79 int git_config_set_string(git_config *cfg, const(char)* name, const(char)* value);
80 int git_config_set_multivar(git_config *cfg, const(char)* name, const(char)* regexp, const(char)* value);
81 int git_config_delete_entry(git_config *cfg, const(char)* name);
82 int git_config_delete_multivar(git_config *cfg, const(char)* name, const(char)* regexp);
83 int git_config_foreach(
84 	const(git_config)* cfg,
85 	git_config_foreach_cb callback,
86 	void *payload);
87 int git_config_iterator_new(git_config_iterator** out_, const(git_config)* cfg);
88 int git_config_iterator_glob_new(git_config_iterator** out_, const(git_config)* cfg, const(char)* regexp);
89 int git_config_foreach_match(
90 	const(git_config)* cfg,
91 	const(char)* regexp,
92 	git_config_foreach_cb callback,
93 	void *payload);
94 int git_config_get_mapped(
95 	int *out_,
96 	const(git_config)* cfg,
97 	const(char)* name,
98 	const(git_cvar_map)* maps,
99 	size_t map_n);
100 int git_config_lookup_map_value(
101 	int *out_,
102 	const(git_cvar_map)* maps,
103 	size_t map_n,
104 	const(char)* value);
105 int git_config_parse_bool(int *out_, const(char)* value);
106 int git_config_parse_int32(int32_t *out_, const(char)* value);
107 int git_config_parse_int64(int64_t *out_, const(char)* value);
108 int git_config_backend_foreach_match(
109 	git_config_backend *backend,
110 	const(char)* regexp,
111 	int function(const(git_config_entry)*, void*) fn,
112 	void *data);