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