summaryrefslogtreecommitdiffstats
path: root/pkg/commands
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-03-14 18:46:22 +1100
committerJesse Duffield <jessedduffield@gmail.com>2021-03-30 21:57:00 +1100
commit77a7619690ff21bc572470a1573de7f6c212d13b (patch)
treeaeaed221d56eefca152dd191c9b0291cbd09812e /pkg/commands
parent9f2d7adb8ea8135b402cda8cbb84a97744ec7357 (diff)
showing changes for directories
Diffstat (limited to 'pkg/commands')
-rw-r--r--pkg/commands/files.go9
-rw-r--r--pkg/commands/models/file.go17
-rw-r--r--pkg/commands/models/status_line.go8
-rw-r--r--pkg/commands/models/status_line_node.go25
4 files changed, 48 insertions, 11 deletions
diff --git a/pkg/commands/files.go b/pkg/commands/files.go
index 55a5f55d3..c73a898b4 100644
--- a/pkg/commands/files.go
+++ b/pkg/commands/files.go
@@ -158,23 +158,22 @@ func (c *GitCommand) WorktreeFileDiff(file *models.File, plain bool, cached bool
return s
}
-func (c *GitCommand) WorktreeFileDiffCmdStr(file *models.File, plain bool, cached bool) string {
+func (c *GitCommand) WorktreeFileDiffCmdStr(node models.IStatusLine, plain bool, cached bool) string {
cachedArg := ""
trackedArg := "--"
colorArg := c.colorArg()
- split := strings.Split(file.Name, models.RENAME_SEPARATOR) // in case of a renamed file we get the new filename
- fileName := c.OSCommand.Quote(split[len(split)-1])
+ path := c.OSCommand.Quote(node.GetPath())
if cached {
cachedArg = "--cached"
}
- if !file.Tracked && !file.HasStagedChanges && !cached {
+ if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached {
trackedArg = "--no-index -- /dev/null"
}
if plain {
colorArg = "never"
}
- return fmt.Sprintf("git diff --submodule --no-ext-diff --color=%s %s %s %s", colorArg, cachedArg, trackedArg, fileName)
+ return fmt.Sprintf("git diff --submodule --no-ext-diff --color=%s %s %s %s", colorArg, cachedArg, trackedArg, path)
}
func (c *GitCommand) ApplyPatch(patch string, flags ...string) error {
diff --git a/pkg/commands/models/file.go b/pkg/commands/models/file.go
index 4e20b7708..32e90f718 100644
--- a/pkg/commands/models/file.go
+++ b/pkg/commands/models/file.go
@@ -59,3 +59,20 @@ func (f *File) SubmoduleConfig(configs []*SubmoduleConfig) *SubmoduleConfig {
return nil
}
+
+func (f *File) GetHasUnstagedChanges() bool {
+ return f.HasUnstagedChanges
+}
+
+func (f *File) GetHasStagedChanges() bool {
+ return f.HasStagedChanges
+}
+
+func (f *File) GetIsTracked() bool {
+ return f.Tracked
+}
+
+func (f *File) GetPath() string {
+ names := f.Names()
+ return names[len(names)-1]
+}
diff --git a/pkg/commands/models/status_line.go b/pkg/commands/models/status_line.go
new file mode 100644
index 000000000..57a54573c
--- /dev/null
+++ b/pkg/commands/models/status_line.go
@@ -0,0 +1,8 @@
+package models
+
+type IStatusLine interface {
+ GetHasUnstagedChanges() bool
+ GetHasStagedChanges() bool
+ GetIsTracked() bool
+ GetPath() string
+}
diff --git a/pkg/commands/models/status_line_node.go b/pkg/commands/models/status_line_node.go
index f2031888b..92f0bba03 100644
--- a/pkg/commands/models/status_line_node.go
+++ b/pkg/commands/models/status_line_node.go
@@ -20,23 +20,23 @@ func (s *StatusLineNode) GetShortStatus() string {
firstChar := " "
secondChar := " "
- if s.HasStagedChanges() {
+ if s.GetHasStagedChanges() {
firstChar = "M"
}
- if s.HasUnstagedChanges() {
+ if s.GetHasUnstagedChanges() {
secondChar = "M"
}
return firstChar + secondChar
}
-func (s *StatusLineNode) HasUnstagedChanges() bool {
+func (s *StatusLineNode) GetHasUnstagedChanges() bool {
if s.IsLeaf() {
return s.File.HasUnstagedChanges
}
for _, child := range s.Children {
- if child.HasUnstagedChanges() {
+ if child.GetHasUnstagedChanges() {
return true
}
}
@@ -44,13 +44,13 @@ func (s *StatusLineNode) HasUnstagedChanges() bool {
return false
}
-func (s *StatusLineNode) HasStagedChanges() bool {
+func (s *StatusLineNode) GetHasStagedChanges() bool {
if s.IsLeaf() {
return s.File.HasStagedChanges
}
for _, child := range s.Children {
- if child.HasStagedChanges() {
+ if child.GetHasStagedChanges() {
return true
}
}
@@ -136,3 +136,16 @@ func (s *StatusLineNode) sortChildren() {
// TODO: think about making this in-place
s.Children = sortedChildren
}
+
+func (s *StatusLineNode) GetIsTracked() bool {
+ if s.File != nil {
+ return s.File.GetIsTracked()
+ }
+
+ // pretty sure I'm allowed to do this
+ return true
+}
+
+func (s *StatusLineNode) GetPath() string {
+ return s.Path
+}