MCPcopy
hub / github.com/wagoodman/dive / MetadataString

Method MetadataString

dive/filetree/file_node.go:139–182  ·  view source on GitHub ↗

MetadatString returns the FileNode metadata in a columnar string.

()

Source from the content-addressed store, hash-verified

137
138// MetadatString returns the FileNode metadata in a columnar string.
139func (node *FileNode) MetadataString() string {
140 if node == nil {
141 return ""
142 }
143
144 dir := "-"
145 if node.Data.FileInfo.IsDir {
146 dir = "d"
147 }
148
149 fm := permbits.FileMode(node.Data.FileInfo.Mode)
150 var fileMode strings.Builder
151 fileMode.Grow(9)
152 cond := func(c bool, x, y byte) byte {
153 if c {
154 return x
155 } else {
156 return y
157 }
158 }
159 fileMode.WriteByte(cond(fm.UserRead(), 'r', '-'))
160 fileMode.WriteByte(cond(fm.UserWrite(), 'w', '-'))
161 fileMode.WriteByte(cond(fm.UserExecute(), cond(fm.Setuid(), 's', 'x'), cond(fm.Setuid(), 'S', '-')))
162
163 fileMode.WriteByte(cond(fm.GroupRead(), 'r', '-'))
164 fileMode.WriteByte(cond(fm.GroupWrite(), 'w', '-'))
165 fileMode.WriteByte(cond(fm.GroupExecute(), cond(fm.Setgid(), 's', 'x'), cond(fm.Setgid(), 'S', '-')))
166
167 fileMode.WriteByte(cond(fm.OtherRead(), 'r', '-'))
168 fileMode.WriteByte(cond(fm.OtherWrite(), 'w', '-'))
169 fileMode.WriteByte(cond(fm.OtherExecute(), cond(fm.Sticky(), 't', 'x'), cond(fm.Sticky(), 'T', '-')))
170
171 user := node.Data.FileInfo.Uid
172 group := node.Data.FileInfo.Gid
173 userGroup := fmt.Sprintf("%d:%d", user, group)
174
175 // don't include file sizes of children that have been removed (unless the node in question is a removed dir,
176 // then show the accumulated size of removed files)
177 sizeBytes := node.GetSize()
178
179 size := humanize.Bytes(uint64(sizeBytes))
180
181 return diffTypeColor[node.Data.DiffType].Sprint(fmt.Sprintf(AttributeFormat, dir, fileMode.String(), userGroup, size))
182}
183
184func (node *FileNode) GetSize() int64 {
185 if 0 <= node.Size {

Callers 2

TestDirSizeFunction · 0.80

Calls 2

GetSizeMethod · 0.95
StringMethod · 0.45

Tested by 1

TestDirSizeFunction · 0.64