wt-status.h 2.54 KB
Newer Older
1 2 3
#ifndef STATUS_H
#define STATUS_H

4
#include <stdio.h>
5
#include "string-list.h"
6
#include "color.h"
7

8
enum color_wt_status {
9
	WT_STATUS_HEADER = 0,
10 11 12
	WT_STATUS_UPDATED,
	WT_STATUS_CHANGED,
	WT_STATUS_UNTRACKED,
13
	WT_STATUS_NOBRANCH,
14
	WT_STATUS_UNMERGED,
15
	WT_STATUS_LOCAL_BRANCH,
16 17 18
	WT_STATUS_REMOTE_BRANCH,
	WT_STATUS_ONBRANCH,
	WT_STATUS_MAXSLOT
19 20
};

21
enum untracked_status_type {
22 23
	SHOW_NO_UNTRACKED_FILES,
	SHOW_NORMAL_UNTRACKED_FILES,
24 25 26
	SHOW_ALL_UNTRACKED_FILES
};

27 28 29 30 31 32 33
/* from where does this commit originate */
enum commit_whence {
	FROM_COMMIT,     /* normal */
	FROM_MERGE,      /* commit came from merge */
	FROM_CHERRY_PICK /* commit came from cherry-pick */
};

34 35 36 37 38
struct wt_status_change_data {
	int worktree_status;
	int index_status;
	int stagemask;
	char *head_path;
39 40
	unsigned dirty_submodule       : 2;
	unsigned new_submodule_commits : 1;
41 42
};

43 44 45 46
struct wt_status {
	int is_initial;
	char *branch;
	const char *reference;
47
	struct pathspec pathspec;
48 49
	int verbose;
	int amend;
50
	enum commit_whence whence;
51
	int nowarn;
52
	int use_color;
53
	int display_comment_prefix;
54 55
	int relative_paths;
	int submodule_summary;
56
	int show_ignored_files;
57
	enum untracked_status_type show_untracked_files;
58
	const char *ignore_submodule_arg;
59
	char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN];
60
	unsigned colopts;
61
	int null_termination;
62
	int show_branch;
63
	int hints;
64

65 66 67
	/* These are computed during processing of the individual sections */
	int commitable;
	int workdir_dirty;
68
	const char *index_file;
69
	FILE *fp;
70
	const char *prefix;
71
	struct string_list change;
72
	struct string_list untracked;
73
	struct string_list ignored;
74
	uint32_t untracked_in_ms;
75 76
};

77 78 79 80 81 82 83 84
struct wt_status_state {
	int merge_in_progress;
	int am_in_progress;
	int am_empty_patch;
	int rebase_in_progress;
	int rebase_interactive_in_progress;
	int cherry_pick_in_progress;
	int bisect_in_progress;
85
	int revert_in_progress;
86 87
	char *branch;
	char *onto;
88 89
	char *detached_from;
	unsigned char detached_sha1[20];
90
	unsigned char revert_head_sha1[20];
91
	unsigned char cherry_pick_head_sha1[20];
92 93
};

94 95
void wt_status_prepare(struct wt_status *s);
void wt_status_print(struct wt_status *s);
96
void wt_status_collect(struct wt_status *s);
97
void wt_status_get_state(struct wt_status_state *state, int get_detached_from);
98

99
void wt_shortstatus_print(struct wt_status *s);
100
void wt_porcelain_print(struct wt_status *s);
101

102 103 104 105
__attribute__((format (printf, 3, 4)))
void status_printf_ln(struct wt_status *s, const char *color, const char *fmt, ...);
__attribute__((format (printf, 3, 4)))
void status_printf(struct wt_status *s, const char *color, const char *fmt, ...);
106

107
#endif /* STATUS_H */