1 module deimos.git2.submodule;
2 
3 import deimos.git2.common;
4 import deimos.git2.oid;
5 import deimos.git2.util;
6 import deimos.git2.types;
7 
8 extern (C):
9 
10 enum git_submodule_status_t {
11 	GIT_SUBMODULE_STATUS_IN_HEAD           = (1u << 0),
12 	GIT_SUBMODULE_STATUS_IN_INDEX          = (1u << 1),
13 	GIT_SUBMODULE_STATUS_IN_CONFIG         = (1u << 2),
14 	GIT_SUBMODULE_STATUS_IN_WD             = (1u << 3),
15 	GIT_SUBMODULE_STATUS_INDEX_ADDED       = (1u << 4),
16 	GIT_SUBMODULE_STATUS_INDEX_DELETED     = (1u << 5),
17 	GIT_SUBMODULE_STATUS_INDEX_MODIFIED    = (1u << 6),
18 	GIT_SUBMODULE_STATUS_WD_UNINITIALIZED  = (1u << 7),
19 	GIT_SUBMODULE_STATUS_WD_ADDED          = (1u << 8),
20 	GIT_SUBMODULE_STATUS_WD_DELETED        = (1u << 9),
21 	GIT_SUBMODULE_STATUS_WD_MODIFIED       = (1u << 10),
22 	GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED = (1u << 11),
23 	GIT_SUBMODULE_STATUS_WD_WD_MODIFIED    = (1u << 12),
24 	GIT_SUBMODULE_STATUS_WD_UNTRACKED      = (1u << 13),
25 }
26 mixin _ExportEnumMembers!git_submodule_status_t;
27 
28 enum GIT_SUBMODULE_STATUS__IN_FLAGS = 0x000Fu;
29 enum GIT_SUBMODULE_STATUS__INDEX_FLAGS = 0x0070u;
30 enum GIT_SUBMODULE_STATUS__WD_FLAGS = 0x3F80u;
31 
32 auto GIT_SUBMODULE_STATUS_IS_UNMODIFIED(T)(T S)
33 {
34 	return (((S) & ~git_submodule_status_t.GIT_SUBMODULE_STATUS__IN_FLAGS) == 0);
35 }
36 
37 auto GIT_SUBMODULE_STATUS_IS_INDEX_UNMODIFIED(T)(T S)
38 {
39 	return (((S) & git_submodule_status_t.GIT_SUBMODULE_STATUS__INDEX_FLAGS) == 0);
40 }
41 
42 auto GIT_SUBMODULE_STATUS_IS_WD_UNMODIFIED(T)(T S)
43 {
44 	return (((S) & git_submodule_status_t.GIT_SUBMODULE_STATUS__WD_FLAGS) == 0);
45 }
46 
47 auto GIT_SUBMODULE_STATUS_IS_WD_DIRTY(T)(T S)
48 {
49 	return (((S) & (git_submodule_status_t.GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED |
50 	git_submodule_status_t.GIT_SUBMODULE_STATUS_WD_WD_MODIFIED |
51 	git_submodule_status_t.GIT_SUBMODULE_STATUS_WD_UNTRACKED)) != 0);
52 }
53 
54 int git_submodule_lookup(
55 	git_submodule **submodule,
56 	git_repository *repo,
57 	const(char)* name);
58 int git_submodule_foreach(
59 	git_repository *repo,
60 	int function(git_submodule *sm, const(char)* name, void *payload) callback,
61 	void *payload);
62 int git_submodule_add_setup(
63 	git_submodule **submodule,
64 	git_repository *repo,
65 	const(char)* url,
66 	const(char)* path,
67 	int use_gitlink);
68 int git_submodule_add_finalize(git_submodule *submodule);
69 int git_submodule_add_to_index(
70 	git_submodule *submodule,
71 	int write_index);
72 int git_submodule_save(git_submodule *submodule);
73 git_repository * git_submodule_owner(git_submodule *submodule);
74 const(char)*  git_submodule_name(git_submodule *submodule);
75 const(char)*  git_submodule_path(git_submodule *submodule);
76 const(char)*  git_submodule_url(git_submodule *submodule);
77 int git_submodule_set_url(git_submodule *submodule, const(char)* url);
78 const(git_oid)*  git_submodule_index_id(git_submodule *submodule);
79 const(git_oid)*  git_submodule_head_id(git_submodule *submodule);
80 const(git_oid)*  git_submodule_wd_id(git_submodule *submodule);
81 git_submodule_ignore_t git_submodule_ignore(
82 	git_submodule *submodule);
83 git_submodule_ignore_t git_submodule_set_ignore(
84 	git_submodule *submodule,
85 	git_submodule_ignore_t ignore);
86 git_submodule_update_t git_submodule_update(
87 	git_submodule *submodule);
88 git_submodule_update_t git_submodule_set_update(
89 	git_submodule *submodule,
90 	git_submodule_update_t update);
91 int git_submodule_fetch_recurse_submodules(
92 	git_submodule *submodule);
93 int git_submodule_set_fetch_recurse_submodules(
94 	git_submodule *submodule,
95 	int fetch_recurse_submodules);
96 int git_submodule_init(git_submodule *submodule, int overwrite);
97 int git_submodule_sync(git_submodule *submodule);
98 int git_submodule_open(
99 	git_repository **repo,
100 	git_submodule *submodule);
101 int git_submodule_reload(git_submodule *submodule);
102 int git_submodule_reload_all(git_repository *repo);
103 int git_submodule_status(
104 	uint *status,
105 	git_submodule *submodule);
106 int git_submodule_location(
107 	uint *location_status,
108 	git_submodule *submodule);