1 module deimos.git2.status; 2 3 import deimos.git2.common; 4 import deimos.git2.diff; 5 import deimos.git2.strarray; 6 import deimos.git2.util; 7 import deimos.git2.types; 8 9 extern (C): 10 11 enum git_status_t { 12 GIT_STATUS_CURRENT = 0, 13 14 GIT_STATUS_INDEX_NEW = (1u << 0), 15 GIT_STATUS_INDEX_MODIFIED = (1u << 1), 16 GIT_STATUS_INDEX_DELETED = (1u << 2), 17 GIT_STATUS_INDEX_RENAMED = (1u << 3), 18 GIT_STATUS_INDEX_TYPECHANGE = (1u << 4), 19 20 GIT_STATUS_WT_NEW = (1u << 7), 21 GIT_STATUS_WT_MODIFIED = (1u << 8), 22 GIT_STATUS_WT_DELETED = (1u << 9), 23 GIT_STATUS_WT_TYPECHANGE = (1u << 10), 24 GIT_STATUS_WT_RENAMED = (1u << 11), 25 GIT_STATUS_WT_UNREADABLE = (1u << 12), 26 GIT_STATUS_IGNORED = (1u << 14), 27 GIT_STATUS_CONFLICTED = (1u << 15), 28 } 29 mixin _ExportEnumMembers!git_status_t; 30 31 alias git_status_cb = int function( 32 const(char)* path, uint status_flags, void *payload); 33 34 enum git_status_show_t { 35 GIT_STATUS_SHOW_INDEX_AND_WORKDIR = 0, 36 GIT_STATUS_SHOW_INDEX_ONLY = 1, 37 GIT_STATUS_SHOW_WORKDIR_ONLY = 2, 38 } 39 mixin _ExportEnumMembers!git_status_show_t; 40 41 enum git_status_opt_t { 42 GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1u << 0), 43 GIT_STATUS_OPT_INCLUDE_IGNORED = (1u << 1), 44 GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1u << 2), 45 GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1u << 3), 46 GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1u << 4), 47 GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1u << 5), 48 GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = (1u << 6), 49 GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX = (1u << 7), 50 GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR = (1u << 8), 51 GIT_STATUS_OPT_SORT_CASE_SENSITIVELY = (1u << 9), 52 GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY = (1u << 10), 53 GIT_STATUS_OPT_RENAMES_FROM_REWRITES = (1u << 11), 54 GIT_STATUS_OPT_NO_REFRESH = (1u << 12), 55 GIT_STATUS_OPT_UPDATE_INDEX = (1u << 13), 56 GIT_STATUS_OPT_INCLUDE_UNREADABLE = (1u << 14), 57 GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED = (1u << 15), 58 } 59 mixin _ExportEnumMembers!git_status_opt_t; 60 61 enum GIT_STATUS_OPT_DEFAULTS = 62 (git_status_opt_t.GIT_STATUS_OPT_INCLUDE_IGNORED | 63 git_status_opt_t.GIT_STATUS_OPT_INCLUDE_UNTRACKED | 64 git_status_opt_t.GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS); 65 66 struct git_status_options { 67 uint version_; 68 git_status_show_t show; 69 uint flags; 70 git_strarray pathspec; 71 } 72 73 enum GIT_STATUS_OPTIONS_VERSION = 1; 74 enum git_status_options GIT_STATUS_OPTIONS_INIT = { GIT_STATUS_OPTIONS_VERSION }; 75 76 struct git_status_entry { 77 git_status_t status; 78 git_diff_delta *head_to_index; 79 git_diff_delta *index_to_workdir; 80 } 81 82 int git_status_foreach( 83 git_repository *repo, 84 git_status_cb callback, 85 void *payload); 86 int git_status_foreach_ext( 87 git_repository *repo, 88 const(git_status_options)* opts, 89 git_status_cb callback, 90 void *payload); 91 int git_status_file( 92 uint *status_flags, 93 git_repository *repo, 94 const(char)* path); 95 int git_status_list_new( 96 git_status_list **out_, 97 git_repository *repo, 98 const(git_status_options)* opts); 99 size_t git_status_list_entrycount( 100 git_status_list *statuslist); 101 const(git_status_entry)* git_status_byindex( 102 git_status_list *statuslist, 103 size_t idx); 104 void git_status_list_free( 105 git_status_list *statuslist); 106 int git_status_should_ignore( 107 int *ignored, 108 git_repository *repo, 109 const(char)* path); 110 int git_status_init_options(git_status_options *opts, uint version_);