mirror of
https://github.com/arl/gitmux.git
synced 2026-09-10 07:26:18 -04:00
Add ability to hide specific flags by setting their symbols to empty string (#132)
* Initial plan * Test commit for clean state --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
parent
3d6516be61
commit
70a31330cd
|
|
@ -306,11 +306,11 @@ func (f *Formater) formatFlag(style, symbol string, count int) string {
|
|||
func (f *Formater) flags() string {
|
||||
var flags []string
|
||||
if f.st.IsClean {
|
||||
if f.st.NumStashed != 0 {
|
||||
if f.st.NumStashed != 0 && f.Symbols.Stashed != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed))
|
||||
}
|
||||
|
||||
if !f.Options.HideClean {
|
||||
if !f.Options.HideClean && f.Symbols.Clean != "" {
|
||||
flags = append(flags, fmt.Sprintf("%s%s", f.Styles.Clean, f.Symbols.Clean))
|
||||
}
|
||||
|
||||
|
|
@ -319,23 +319,23 @@ func (f *Formater) flags() string {
|
|||
}
|
||||
}
|
||||
|
||||
if f.st.NumStaged != 0 {
|
||||
if f.st.NumStaged != 0 && f.Symbols.Staged != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Staged, f.Symbols.Staged, f.st.NumStaged))
|
||||
}
|
||||
|
||||
if f.st.NumConflicts != 0 {
|
||||
if f.st.NumConflicts != 0 && f.Symbols.Conflict != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Conflict, f.Symbols.Conflict, f.st.NumConflicts))
|
||||
}
|
||||
|
||||
if f.st.NumModified != 0 {
|
||||
if f.st.NumModified != 0 && f.Symbols.Modified != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Modified, f.Symbols.Modified, f.st.NumModified))
|
||||
}
|
||||
|
||||
if f.st.NumStashed != 0 {
|
||||
if f.st.NumStashed != 0 && f.Symbols.Stashed != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed))
|
||||
}
|
||||
|
||||
if f.st.NumUntracked != 0 {
|
||||
if f.st.NumUntracked != 0 && f.Symbols.Untracked != "" {
|
||||
flags = append(flags, f.formatFlag(f.Styles.Untracked, f.Symbols.Untracked, f.st.NumUntracked))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -979,6 +979,186 @@ func Test_stats(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestFlagsWithEmptySymbols(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
styles styles
|
||||
symbols symbols
|
||||
st *gitstatus.Status
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "empty stashed symbol hides stash count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Modified: "StyleMod",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Modified: "SymbolMod",
|
||||
Stashed: "", // empty symbol should hide this flag
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
NumStashed: 5,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumModified: 2,
|
||||
},
|
||||
},
|
||||
want: "StyleClear" + "StyleModSymbolMod2",
|
||||
},
|
||||
{
|
||||
name: "empty modified symbol hides modified count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Modified: "StyleMod",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Modified: "", // empty symbol should hide this flag
|
||||
Stashed: "SymbolStash",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
NumStashed: 1,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumModified: 2,
|
||||
},
|
||||
},
|
||||
want: "StyleClear" + "StyleStashSymbolStash1",
|
||||
},
|
||||
{
|
||||
name: "empty staged symbol hides staged count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Staged: "StyleStaged",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Staged: "", // empty symbol should hide this flag
|
||||
Stashed: "SymbolStash",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
NumStashed: 1,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumStaged: 3,
|
||||
},
|
||||
},
|
||||
want: "StyleClear" + "StyleStashSymbolStash1",
|
||||
},
|
||||
{
|
||||
name: "empty untracked symbol hides untracked count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Untracked: "StyleUntracked",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Untracked: "", // empty symbol should hide this flag
|
||||
Stashed: "SymbolStash",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
NumStashed: 1,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumUntracked: 7,
|
||||
},
|
||||
},
|
||||
want: "StyleClear" + "StyleStashSymbolStash1",
|
||||
},
|
||||
{
|
||||
name: "empty conflict symbol hides conflict count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Conflict: "StyleConflict",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Conflict: "", // empty symbol should hide this flag
|
||||
Stashed: "SymbolStash",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
NumStashed: 1,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumConflicts: 3,
|
||||
},
|
||||
},
|
||||
want: "StyleClear" + "StyleStashSymbolStash1",
|
||||
},
|
||||
{
|
||||
name: "empty clean symbol hides clean flag",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Clean: "StyleClean",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Clean: "", // empty symbol should hide this flag
|
||||
Stashed: "SymbolStash",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
IsClean: true,
|
||||
NumStashed: 1,
|
||||
},
|
||||
want: "StyleClear" + "StyleStashSymbolStash1",
|
||||
},
|
||||
{
|
||||
name: "empty stashed symbol in clean state hides stash count",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Clean: "StyleClean",
|
||||
},
|
||||
symbols: symbols{
|
||||
Clean: "SymbolClean",
|
||||
Stashed: "", // empty symbol should hide this flag
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
IsClean: true,
|
||||
NumStashed: 1,
|
||||
},
|
||||
want: "StyleClear" + "StyleCleanSymbolClean",
|
||||
},
|
||||
{
|
||||
name: "all symbols empty shows nothing",
|
||||
styles: styles{
|
||||
Clear: "StyleClear",
|
||||
Clean: "StyleClean",
|
||||
Staged: "StyleStaged",
|
||||
Modified: "StyleMod",
|
||||
Conflict: "StyleConflict",
|
||||
Untracked: "StyleUntracked",
|
||||
Stashed: "StyleStash",
|
||||
},
|
||||
symbols: symbols{
|
||||
Clean: "",
|
||||
Staged: "",
|
||||
Modified: "",
|
||||
Conflict: "",
|
||||
Untracked: "",
|
||||
Stashed: "",
|
||||
},
|
||||
st: &gitstatus.Status{
|
||||
IsClean: false,
|
||||
NumStashed: 1,
|
||||
Porcelain: gitstatus.Porcelain{
|
||||
NumStaged: 3,
|
||||
NumModified: 2,
|
||||
NumConflicts: 1,
|
||||
NumUntracked: 4,
|
||||
},
|
||||
},
|
||||
want: "",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
f := &Formater{
|
||||
Config: Config{Styles: tt.styles, Symbols: tt.symbols},
|
||||
st: tt.st,
|
||||
}
|
||||
|
||||
compareStrings(t, tt.want, f.flags())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func compareStrings(t *testing.T, want, got string) {
|
||||
if got != want {
|
||||
t.Errorf(`
|
||||
|
|
|
|||
Loading…
Reference in a new issue