SYMBOL INDEX (716 symbols across 110 files) FILE: .github/scripts/coverage.py class bcolors (line 7) | class bcolors: FILE: cmd/dive/cli/cli.go function Application (line 12) | func Application(id clio.Identification) clio.Application { function Command (line 17) | func Command(id clio.Identification) *cobra.Command { function create (line 22) | func create(id clio.Identification) (clio.Application, *cobra.Command) { FILE: cmd/dive/cli/cli_build_test.go function Test_Build_Dockerfile (line 10) | func Test_Build_Dockerfile(t *testing.T) { function Test_Build_Containerfile (line 30) | func Test_Build_Containerfile(t *testing.T) { function Test_Build_CI_gate_fail (line 50) | func Test_Build_CI_gate_fail(t *testing.T) { function Test_BuildFailure (line 62) | func Test_BuildFailure(t *testing.T) { FILE: cmd/dive/cli/cli_ci_test.go function Test_CI_DefaultCIConfig (line 9) | func Test_CI_DefaultCIConfig(t *testing.T) { function Test_CI_Fail (line 27) | func Test_CI_Fail(t *testing.T) { function Test_CI_LegacyRules (line 39) | func Test_CI_LegacyRules(t *testing.T) { FILE: cmd/dive/cli/cli_config_test.go function Test_Config (line 8) | func Test_Config(t *testing.T) { FILE: cmd/dive/cli/cli_json_test.go function Test_JsonOutput (line 11) | func Test_JsonOutput(t *testing.T) { FILE: cmd/dive/cli/cli_load_test.go function Test_LoadImage (line 12) | func Test_LoadImage(t *testing.T) { function runWithCombinedOutput (line 55) | func runWithCombinedOutput(t testing.TB, cmd string) { function assertLoadOutput (line 65) | func assertLoadOutput(t testing.TB, combined string) { function Test_FetchFailure (line 73) | func Test_FetchFailure(t *testing.T) { function cd (line 97) | func cd(t testing.TB, to string) { FILE: cmd/dive/cli/cli_test.go function TestMain (line 28) | func TestMain(m *testing.M) { function TestUpdateSnapshotDisabled (line 49) | func TestUpdateSnapshotDisabled(t *testing.T) { function repoPath (line 53) | func repoPath(t testing.TB, path string) string { function repoRoot (line 59) | func repoRoot(t testing.TB) string { function getTestCommand (line 75) | func getTestCommand(t testing.TB, cmd string) *cobra.Command { type capturer (line 102) | type capturer struct method WithSuppress (line 112) | func (c *capturer) WithSuppress() *capturer { method All (line 117) | func (c *capturer) All() *capturer { method WithStdout (line 123) | func (c *capturer) WithStdout() *capturer { method WithStderr (line 128) | func (c *capturer) WithStderr() *capturer { method Run (line 133) | func (c *capturer) Run(t testing.TB, f func()) string { function Capture (line 108) | func Capture() *capturer { FILE: cmd/dive/cli/internal/command/adapter/analyzer.go type Analyzer (line 13) | type Analyzer interface type analysisActionObserver (line 17) | type analysisActionObserver struct method Analyze (line 27) | func (a analysisActionObserver) Analyze(ctx context.Context, img *imag... function NewAnalyzer (line 21) | func NewAnalyzer() Analyzer { FILE: cmd/dive/cli/internal/command/adapter/evaluator.go type Evaluator (line 13) | type Evaluator interface type evaluationActionObserver (line 17) | type evaluationActionObserver struct method Evaluate (line 27) | func (c evaluationActionObserver) Evaluate(ctx context.Context, analys... function NewEvaluator (line 21) | func NewEvaluator(rules []ci.Rule) Evaluator { FILE: cmd/dive/cli/internal/command/adapter/exporter.go type Exporter (line 15) | type Exporter interface type jsonExporter (line 19) | type jsonExporter struct method ExportTo (line 29) | func (e *jsonExporter) ExportTo(ctx context.Context, analysis *image.A... function NewExporter (line 23) | func NewExporter(fs afero.Fs) Exporter { FILE: cmd/dive/cli/internal/command/adapter/resolver.go type imageActionObserver (line 13) | type imageActionObserver struct method Build (line 23) | func (i imageActionObserver) Build(ctx context.Context, options []stri... method Fetch (line 49) | func (i imageActionObserver) Fetch(ctx context.Context, id string) (*i... function ImageResolver (line 17) | func ImageResolver(resolver image.Resolver) image.Resolver { FILE: cmd/dive/cli/internal/command/build.go type buildOptions (line 12) | type buildOptions struct function Build (line 18) | func Build(app clio.Application) *cobra.Command { FILE: cmd/dive/cli/internal/command/ci/evaluator.go type Evaluation (line 15) | type Evaluation struct type Evaluator (line 20) | type Evaluator struct method isRuleEnabled (line 75) | func (e Evaluator) isRuleEnabled(rule Rule) bool { method Evaluate (line 79) | func (e Evaluator) Evaluate(ctx context.Context, analysis *image.Analy... method report (line 158) | func (e Evaluator) report(analysis *image.Analysis) string { method renderAnalysisSection (line 168) | func (e Evaluator) renderAnalysisSection(analysis *image.Analysis) str... method renderInefficientFilesSection (line 188) | func (e Evaluator) renderInefficientFilesSection(analysis *image.Analy... method renderEvaluationSection (line 212) | func (e Evaluator) renderEvaluationSection() string { method formatRuleResult (line 234) | func (e Evaluator) formatRuleResult(ruleName string, result RuleResult... method renderStatusSummary (line 260) | func (e Evaluator) renderStatusSummary() string { type format (line 30) | type format struct type ResultTally (line 42) | type ResultTally struct type ReferenceFile (line 50) | type ReferenceFile struct function NewEvaluator (line 56) | func NewEvaluator(rules []Rule) Evaluator { function formatKeyValue (line 305) | func formatKeyValue(f format, key, value string) string { FILE: cmd/dive/cli/internal/command/ci/evaluator_test.go function Test_Evaluator (line 17) | func Test_Evaluator(t *testing.T) { function Test_Evaluator_Misconfigurations (line 107) | func Test_Evaluator_Misconfigurations(t *testing.T) { function repoPath (line 178) | func repoPath(t testing.TB, path string) string { function repoRoot (line 184) | func repoRoot(t testing.TB) string { FILE: cmd/dive/cli/internal/command/ci/rule.go constant RuleUnknown (line 8) | RuleUnknown = iota constant RulePassed (line 9) | RulePassed constant RuleFailed (line 10) | RuleFailed constant RuleWarning (line 11) | RuleWarning constant RuleDisabled (line 12) | RuleDisabled constant RuleMisconfigured (line 13) | RuleMisconfigured constant RuleConfigured (line 14) | RuleConfigured type Rule (line 17) | type Rule interface type RuleStatus (line 23) | type RuleStatus method String (line 30) | func (status RuleStatus) String(f format) string { type RuleResult (line 25) | type RuleResult struct FILE: cmd/dive/cli/internal/command/ci/rules.go constant ciKeyLowestEfficiencyThreshold (line 13) | ciKeyLowestEfficiencyThreshold = "lowestEfficiency" constant ciKeyHighestWastedBytes (line 14) | ciKeyHighestWastedBytes = "highestWastedBytes" constant ciKeyHighestUserWastedPercent (line 15) | ciKeyHighestUserWastedPercent = "highestUserWastedPercent" function Rules (line 18) | func Rules(lowerEfficiency, highestWastedBytes, highestUserWastedPercent... function DisabledRule (line 44) | func DisabledRule(key string) Rule { type BaseRule (line 54) | type BaseRule struct method Key (line 61) | func (rule *BaseRule) Key() string { method Configuration (line 65) | func (rule *BaseRule) Configuration() string { method Evaluate (line 69) | func (rule *BaseRule) Evaluate(result *image.Analysis) (RuleStatus, st... type LowestEfficiencyRule (line 77) | type LowestEfficiencyRule struct method Evaluate (line 119) | func (r *LowestEfficiencyRule) Evaluate(analysis *image.Analysis) (Rul... type HighestWastedBytesRule (line 83) | type HighestWastedBytesRule struct method Evaluate (line 149) | func (r *HighestWastedBytesRule) Evaluate(analysis *image.Analysis) (R... type HighestUserWastedPercentRule (line 89) | type HighestUserWastedPercentRule struct method Evaluate (line 184) | func (r *HighestUserWastedPercentRule) Evaluate(analysis *image.Analys... function NewLowestEfficiencyRule (line 94) | func NewLowestEfficiencyRule(configValue string) (Rule, error) { function NewHighestWastedBytesRule (line 129) | func NewHighestWastedBytesRule(configValue string) (Rule, error) { function NewHighestUserWastedPercentRule (line 159) | func NewHighestUserWastedPercentRule(configValue string) (Rule, error) { function isRuleDisabled (line 193) | func isRuleDisabled(value string) bool { FILE: cmd/dive/cli/internal/command/export/export.go type Export (line 10) | type Export struct method Marshal (line 84) | func (exp *Export) Marshal() ([]byte, error) { type Layer (line 15) | type Layer struct type Image (line 24) | type Image struct type FileReference (line 31) | type FileReference struct function NewExport (line 38) | func NewExport(analysis *diveImage.Analysis) *Export { FILE: cmd/dive/cli/internal/command/export/export_test.go function Test_Export (line 9) | func Test_Export(t *testing.T) { FILE: cmd/dive/cli/internal/command/export/main_test.go function TestMain (line 23) | func TestMain(m *testing.M) { function TestUpdateSnapshotDisabled (line 44) | func TestUpdateSnapshotDisabled(t *testing.T) { function repoPath (line 48) | func repoPath(t testing.TB, path string) string { function repoRoot (line 54) | func repoRoot(t testing.TB) string { FILE: cmd/dive/cli/internal/command/root.go type rootOptions (line 19) | type rootOptions struct function Root (line 25) | func Root(app clio.Application) *cobra.Command { function setUI (line 63) | func setUI(app clio.Application, opts options.Application) error { function run (line 74) | func run(ctx context.Context, opts options.Application, img *image.Image... FILE: cmd/dive/cli/internal/options/analysis.go constant defaultContainerEngine (line 12) | defaultContainerEngine = "docker" type Analysis (line 20) | type Analysis struct method DescribeFields (line 36) | func (c *Analysis) DescribeFields(descriptions clio.FieldDescriptionSe... method AddFlags (line 41) | func (c *Analysis) AddFlags(flags clio.FlagSet) { method PostLoad (line 48) | func (c *Analysis) PostLoad() error { function DefaultAnalysis (line 28) | func DefaultAnalysis() Analysis { FILE: cmd/dive/cli/internal/options/application.go type Application (line 7) | type Application struct method V1Preferences (line 23) | func (c Application) V1Preferences() v1.Preferences { function DefaultApplication (line 14) | func DefaultApplication() Application { FILE: cmd/dive/cli/internal/options/ci.go constant defaultCIConfigPath (line 16) | defaultCIConfigPath = ".dive-ci" type CI (line 18) | type CI struct method DescribeFields (line 32) | func (c *CI) DescribeFields(descriptions clio.FieldDescriptionSet) { method AddFlags (line 37) | func (c *CI) AddFlags(flags clio.FlagSet) { method PostLoad (line 42) | func (c *CI) PostLoad() error { function DefaultCI (line 24) | func DefaultCI() CI { type legacyRuleFile (line 83) | type legacyRuleFile struct function fileExists (line 89) | func fileExists(path string) bool { function truthy (line 96) | func truthy(value string) bool { FILE: cmd/dive/cli/internal/options/ci_rules.go type CIRules (line 9) | type CIRules struct method DescribeFields (line 30) | func (c *CIRules) DescribeFields(descriptions clio.FieldDescriptionSet) { method AddFlags (line 36) | func (c *CIRules) AddFlags(flags clio.FlagSet) { method hasLegacyOptionsInUse (line 42) | func (c CIRules) hasLegacyOptionsInUse() bool { method PostLoad (line 46) | func (c *CIRules) PostLoad() error { function DefaultCIRules (line 22) | func DefaultCIRules() CIRules { FILE: cmd/dive/cli/internal/options/export.go type Export (line 17) | type Export struct method AddFlags (line 26) | func (o *Export) AddFlags(flags clio.FlagSet) { method PostLoad (line 30) | func (o *Export) PostLoad() error { function DefaultExport (line 22) | func DefaultExport() Export { FILE: cmd/dive/cli/internal/options/ui.go type UI (line 4) | type UI struct function DefaultUI (line 11) | func DefaultUI() UI { FILE: cmd/dive/cli/internal/options/ui_diff.go type UIDiff (line 15) | type UIDiff struct method DescribeFields (line 26) | func (c *UIDiff) DescribeFields(descriptions clio.FieldDescriptionSet) { method PostLoad (line 30) | func (c *UIDiff) PostLoad() error { function DefaultUIDiff (line 19) | func DefaultUIDiff() UIDiff { FILE: cmd/dive/cli/internal/options/ui_filetree.go type UIFiletree (line 15) | type UIFiletree struct method DescribeFields (line 30) | func (c *UIFiletree) DescribeFields(descriptions clio.FieldDescription... method PostLoad (line 36) | func (c *UIFiletree) PostLoad() error { function DefaultUIFiletree (line 21) | func DefaultUIFiletree() UIFiletree { FILE: cmd/dive/cli/internal/options/ui_keybindings.go type UIKeybindings (line 14) | type UIKeybindings struct method PostLoad (line 95) | func (c *UIKeybindings) PostLoad() error { method DescribeFields (line 149) | func (c *UIKeybindings) DescribeFields(descriptions clio.FieldDescript... type GlobalBindings (line 23) | type GlobalBindings struct type NavigationBindings (line 30) | type NavigationBindings struct type LayerBindings (line 39) | type LayerBindings struct type FiletreeBindings (line 44) | type FiletreeBindings struct function DefaultUIKeybinding (line 57) | func DefaultUIKeybinding() UIKeybindings { function getUIBindingValues (line 67) | func getUIBindingValues(src, dst reflect.Value) { function createKeyBindings (line 108) | func createKeyBindings(src, dst reflect.Value) error { FILE: cmd/dive/cli/internal/options/ui_layers.go type UILayers (line 8) | type UILayers struct method DescribeFields (line 18) | func (c *UILayers) DescribeFields(descriptions clio.FieldDescriptionSe... function DefaultUILayers (line 12) | func DefaultUILayers() UILayers { FILE: cmd/dive/cli/internal/ui/no_ui.go type NoUI (line 11) | type NoUI struct method Setup (line 19) | func (n *NoUI) Setup(subscription partybus.Unsubscribable) error { method Handle (line 24) | func (n *NoUI) Handle(_ partybus.Event) error { method Teardown (line 28) | func (n NoUI) Teardown(_ bool) error { function None (line 15) | func None() *NoUI { FILE: cmd/dive/cli/internal/ui/v1.go type V1UI (line 23) | type V1UI struct method Setup (line 56) | func (n *V1UI) Setup(subscription partybus.Unsubscribable) error { method Handle (line 93) | func (n *V1UI) Handle(e partybus.Event) error { method writeToStdout (line 161) | func (n *V1UI) writeToStdout(s string) { method writeToStderr (line 165) | func (n *V1UI) writeToStderr(s string) { method Teardown (line 174) | func (n V1UI) Teardown(_ bool) error { type format (line 34) | type format struct function NewV1UI (line 41) | func NewV1UI(cfg v1.Preferences, out io.Writer, quiet bool, verbosity in... type environWithoutCI (line 72) | type environWithoutCI struct method Environ (line 75) | func (e environWithoutCI) Environ() []string { method Getenv (line 86) | func (e environWithoutCI) Getenv(s string) string { FILE: cmd/dive/cli/internal/ui/v1/app/app.go constant debug (line 14) | debug = false type app (line 16) | type app struct method quit (line 134) | func (a *app) quit() error { function Run (line 23) | func Run(ctx context.Context, c v1.Config) error { function newApp (line 55) | func newApp(ctx context.Context, gui *gocui.Gui, cfg v1.Config) (*app, e... FILE: cmd/dive/cli/internal/ui/v1/app/controller.go type controller (line 14) | type controller struct method onFileTreeViewExtract (line 62) | func (c *controller) onFileTreeViewExtract(p string) error { method onFileTreeViewOptionChange (line 66) | func (c *controller) onFileTreeViewOptionChange() error { method onFilterEdit (line 74) | func (c *controller) onFilterEdit(filter string) error { method onLayerChange (line 95) | func (c *controller) onLayerChange(selection viewmodel.LayerSelection)... method UpdateAndRender (line 115) | func (c *controller) UpdateAndRender() error { method Update (line 130) | func (c *controller) Update() error { method Render (line 141) | func (c *controller) Render() error { method NextPane (line 154) | func (c *controller) NextPane() (err error) { method PrevPane (line 178) | func (c *controller) PrevPane() (err error) { method ToggleView (line 202) | func (c *controller) ToggleView() (err error) { method CloseFilterView (line 219) | func (c *controller) CloseFilterView() error { method ToggleFilterView (line 228) | func (c *controller) ToggleFilterView() error { function newController (line 21) | func newController(ctx context.Context, g *gocui.Gui, cfg v1.Config) (*c... FILE: cmd/dive/cli/internal/ui/v1/app/job_control_other.go function handle_ctrl_z (line 11) | func handle_ctrl_z(_ *gocui.Gui, _ *gocui.View) error { FILE: cmd/dive/cli/internal/ui/v1/app/job_control_unix.go function handle_ctrl_z (line 13) | func handle_ctrl_z(g *gocui.Gui, v *gocui.View) error { FILE: cmd/dive/cli/internal/ui/v1/config.go type Config (line 13) | type Config struct method TreeComparer (line 45) | func (c *Config) TreeComparer() (filetree.Comparer, error) { type Preferences (line 24) | type Preferences struct function DefaultPreferences (line 34) | func DefaultPreferences() Preferences { type ContentReader (line 65) | type ContentReader interface FILE: cmd/dive/cli/internal/ui/v1/format/format.go constant selectedLeftBracketStr (line 28) | selectedLeftBracketStr = "┃" constant selectedRightBracketStr (line 29) | selectedRightBracketStr = "┣" constant selectedFillStr (line 30) | selectedFillStr = "━" constant leftBracketStr (line 32) | leftBracketStr = "│" constant rightBracketStr (line 33) | rightBracketStr = "├" constant fillStr (line 34) | fillStr = "─" constant selectStr (line 36) | selectStr = " ● " function init (line 52) | func init() { function RenderNoHeader (line 70) | func RenderNoHeader(width int, selected bool) string { function RenderHeader (line 77) | func RenderHeader(title string, width int, selected bool) string { function RenderHelpKey (line 98) | func RenderHelpKey(control, title string, selected bool) string { FILE: cmd/dive/cli/internal/ui/v1/key/binding.go type BindingInfo (line 10) | type BindingInfo struct type Binding (line 19) | type Binding struct method RegisterSelectionFn (line 65) | func (binding *Binding) RegisterSelectionFn(selectedFn func() bool) { method onAction (line 69) | func (binding *Binding) onAction(*gocui.Gui, *gocui.View) error { method isSelected (line 76) | func (binding *Binding) isSelected() bool { method RenderKeyHelp (line 84) | func (binding *Binding) RenderKeyHelp() string { function GenerateBindings (line 26) | func GenerateBindings(gui *gocui.Gui, influence string, infos []BindingI... function newBinding (line 49) | func newBinding(gui *gocui.Gui, influence string, keys []keybinding.Key,... FILE: cmd/dive/cli/internal/ui/v1/key/config.go type Config (line 8) | type Config struct method Setup (line 13) | func (c *Config) Setup() error { type Bindings (line 26) | type Bindings struct type GlobalBindings (line 33) | type GlobalBindings struct type NavigationBindings (line 40) | type NavigationBindings struct type LayerBindings (line 49) | type LayerBindings struct type FiletreeBindings (line 54) | type FiletreeBindings struct function DefaultBindings (line 67) | func DefaultBindings() Bindings { FILE: cmd/dive/cli/internal/ui/v1/layout/area.go type Area (line 3) | type Area struct FILE: cmd/dive/cli/internal/ui/v1/layout/compound/layer_details_column.go type LayerDetailsCompoundLayout (line 11) | type LayerDetailsCompoundLayout struct method Name (line 26) | func (cl *LayerDetailsCompoundLayout) Name() string { method OnLayoutChange (line 31) | func (cl *LayerDetailsCompoundLayout) OnLayoutChange() error { method layoutRow (line 49) | func (cl *LayerDetailsCompoundLayout) layoutRow(g *gocui.Gui, minX, mi... method Layout (line 70) | func (cl *LayerDetailsCompoundLayout) Layout(g *gocui.Gui, minX, minY,... method RequestedSize (line 94) | func (cl *LayerDetailsCompoundLayout) RequestedSize(available int) *int { method IsVisible (line 109) | func (cl *LayerDetailsCompoundLayout) IsVisible() bool { function NewLayerDetailsCompoundLayout (line 18) | func NewLayerDetailsCompoundLayout(layer *view.Layer, layerDetails *view... FILE: cmd/dive/cli/internal/ui/v1/layout/layout.go type Layout (line 5) | type Layout interface FILE: cmd/dive/cli/internal/ui/v1/layout/location.go constant LocationFooter (line 4) | LocationFooter Location = iota constant LocationHeader (line 5) | LocationHeader constant LocationColumn (line 6) | LocationColumn type Location (line 9) | type Location FILE: cmd/dive/cli/internal/ui/v1/layout/manager.go type Constraint (line 9) | type Constraint type Manager (line 11) | type Manager struct method Add (line 23) | func (lm *Manager) Add(element Layout, location Location) { method planAndLayoutHeaders (line 30) | func (lm *Manager) planAndLayoutHeaders(g *gocui.Gui, area Area) (Area... method planFooters (line 60) | func (lm *Manager) planFooters(g *gocui.Gui, area Area) (Area, []int) { method planAndLayoutColumns (line 92) | func (lm *Manager) planAndLayoutColumns(g *gocui.Gui, area Area) (Area... method layoutFooters (line 148) | func (lm *Manager) layoutFooters(g *gocui.Gui, area Area, footerHeight... method notifyLayoutChange (line 174) | func (lm *Manager) notifyLayoutChange() error { method Layout (line 186) | func (lm *Manager) Layout(g *gocui.Gui) error { method layout (line 198) | func (lm *Manager) layout(g *gocui.Gui, curMaxX, curMaxY int) error { function NewManager (line 17) | func NewManager() *Manager { FILE: cmd/dive/cli/internal/ui/v1/layout/manager_test.go type testElement (line 9) | type testElement struct method Name (line 25) | func (te *testElement) Name() string { method Layout (line 28) | func (te *testElement) Layout(g *gocui.Gui, minX, minY, maxX, maxY int... method RequestedSize (line 41) | func (te *testElement) RequestedSize(available int) *int { method IsVisible (line 47) | func (te *testElement) IsVisible() bool { method OnLayoutChange (line 50) | func (te *testElement) OnLayoutChange() error { function newTestElement (line 16) | func newTestElement(t *testing.T, size int, layoutArea Area, location Lo... type layoutReturn (line 54) | type layoutReturn struct function Test_planAndLayoutHeaders (line 59) | func Test_planAndLayoutHeaders(t *testing.T) { function Test_planAndLayoutColumns (line 159) | func Test_planAndLayoutColumns(t *testing.T) { function Test_layout (line 259) | func Test_layout(t *testing.T) { FILE: cmd/dive/cli/internal/ui/v1/view/cursor.go function CursorDown (line 10) | func CursorDown(g *gocui.Gui, v *gocui.View) error { function CursorUp (line 15) | func CursorUp(g *gocui.Gui, v *gocui.View) error { function CursorStep (line 20) | func CursorStep(g *gocui.Gui, v *gocui.View, step int) error { FILE: cmd/dive/cli/internal/ui/v1/view/debug.go type Debug (line 13) | type Debug struct method SetCurrentView (line 35) | func (v *Debug) SetCurrentView(r Helper) { method Name (line 39) | func (v *Debug) Name() string { method Setup (line 44) | func (v *Debug) Setup(view *gocui.View, header *gocui.View) error { method IsVisible (line 62) | func (v *Debug) IsVisible() bool { method Update (line 67) | func (v *Debug) Update() error { method OnLayoutChange (line 72) | func (v *Debug) OnLayoutChange() error { method Render (line 81) | func (v *Debug) Render() error { method Layout (line 103) | func (v *Debug) Layout(g *gocui.Gui, minX, minY, maxX, maxY int) error { method RequestedSize (line 122) | func (v *Debug) RequestedSize(available int) *int { function newDebugView (line 24) | func newDebugView(gui *gocui.Gui) *Debug { FILE: cmd/dive/cli/internal/ui/v1/view/filetree.go type ViewOptionChangeListener (line 18) | type ViewOptionChangeListener type ViewExtractListener (line 20) | type ViewExtractListener type FileTree (line 24) | type FileTree struct method AddViewOptionChangeListener (line 67) | func (v *FileTree) AddViewOptionChangeListener(listener ...ViewOptionC... method AddViewExtractListener (line 71) | func (v *FileTree) AddViewExtractListener(listener ...ViewExtractListe... method SetTitle (line 75) | func (v *FileTree) SetTitle(title string) { method SetFilterRegex (line 79) | func (v *FileTree) SetFilterRegex(filterRegex *regexp.Regexp) { method Name (line 83) | func (v *FileTree) Name() string { method Setup (line 88) | func (v *FileTree) Setup(view, header *gocui.View) error { method IsVisible (line 204) | func (v *FileTree) IsVisible() bool { method resetCursor (line 209) | func (v *FileTree) resetCursor() { method SetTree (line 215) | func (v *FileTree) SetTree(bottomTreeStart, bottomTreeStop, topTreeSta... method CursorDown (line 229) | func (v *FileTree) CursorDown() error { method CursorUp (line 240) | func (v *FileTree) CursorUp() error { method CursorLeft (line 248) | func (v *FileTree) CursorLeft() error { method CursorRight (line 258) | func (v *FileTree) CursorRight() error { method PageDown (line 268) | func (v *FileTree) PageDown() error { method PageUp (line 277) | func (v *FileTree) PageUp() error { method toggleCollapse (line 291) | func (v *FileTree) toggleCollapse() error { method toggleCollapseAll (line 301) | func (v *FileTree) toggleCollapseAll() error { method toggleSortOrder (line 313) | func (v *FileTree) toggleSortOrder() error { method extractFile (line 323) | func (v *FileTree) extractFile() error { method toggleWrapTree (line 335) | func (v *FileTree) toggleWrapTree() error { method notifyOnViewOptionChangeListeners (line 351) | func (v *FileTree) notifyOnViewOptionChangeListeners() error { method toggleAttributes (line 362) | func (v *FileTree) toggleAttributes() error { method toggleShowDiffType (line 382) | func (v *FileTree) toggleShowDiffType(diffType filetree.DiffType) error { method OnLayoutChange (line 399) | func (v *FileTree) OnLayoutChange() error { method Update (line 408) | func (v *FileTree) Update() error { method Render (line 422) | func (v *FileTree) Render() error { method KeyHelp (line 452) | func (v *FileTree) KeyHelp() string { method Layout (line 460) | func (v *FileTree) Layout(g *gocui.Gui, minX, minY, maxX, maxY int) er... method RequestedSize (line 492) | func (v *FileTree) RequestedSize(available int) *int { function newFileTreeView (line 42) | func newFileTreeView(gui *gocui.Gui, cfg v1.Config, initial int) (v *Fil... FILE: cmd/dive/cli/internal/ui/v1/view/filter.go type FilterEditListener (line 14) | type FilterEditListener type Filter (line 18) | type Filter struct method AddFilterEditListener (line 49) | func (v *Filter) AddFilterEditListener(listener ...FilterEditListener) { method Name (line 53) | func (v *Filter) Name() string { method Setup (line 58) | func (v *Filter) Setup(view, header *gocui.View) error { method ToggleVisible (line 79) | func (v *Filter) ToggleVisible() error { method IsVisible (line 101) | func (v *Filter) IsVisible() bool { method Edit (line 109) | func (v *Filter) Edit(view *gocui.View, key gocui.Key, ch rune, mod go... method notifyFilterEditListeners (line 130) | func (v *Filter) notifyFilterEditListeners() { method Update (line 142) | func (v *Filter) Update() error { method Render (line 147) | func (v *Filter) Render() error { method KeyHelp (line 158) | func (v *Filter) KeyHelp() string { method OnLayoutChange (line 163) | func (v *Filter) OnLayoutChange() error { method Layout (line 171) | func (v *Filter) Layout(g *gocui.Gui, minX, minY, maxX, maxY int) error { method RequestedSize (line 186) | func (v *Filter) RequestedSize(available int) *int { function newFilterView (line 33) | func newFilterView(gui *gocui.Gui) *Filter { FILE: cmd/dive/cli/internal/ui/v1/view/image_details.go type ImageDetails (line 17) | type ImageDetails struct method Name (line 30) | func (v *ImageDetails) Name() string { method Setup (line 34) | func (v *ImageDetails) Setup(body, header *gocui.View) error { method Render (line 82) | func (v *ImageDetails) Render() error { method OnLayoutChange (line 130) | func (v *ImageDetails) OnLayoutChange() error { method IsVisible (line 138) | func (v *ImageDetails) IsVisible() bool { method PageUp (line 142) | func (v *ImageDetails) PageUp() error { method PageDown (line 150) | func (v *ImageDetails) PageDown() error { method CursorUp (line 158) | func (v *ImageDetails) CursorUp() error { method CursorDown (line 165) | func (v *ImageDetails) CursorDown() error { method KeyHelp (line 173) | func (v *ImageDetails) KeyHelp() string { method Update (line 178) | func (v *ImageDetails) Update() error { FILE: cmd/dive/cli/internal/ui/v1/view/layer.go type Layer (line 17) | type Layer struct method AddLayerChangeListener (line 60) | func (v *Layer) AddLayerChangeListener(listener ...LayerChangeListener) { method notifyLayerChangeListeners (line 64) | func (v *Layer) notifyLayerChangeListeners() error { method Name (line 88) | func (v *Layer) Name() string { method Setup (line 93) | func (v *Layer) Setup(body *gocui.View, header *gocui.View) error { method height (line 150) | func (v *Layer) height() uint { method CompareMode (line 155) | func (v *Layer) CompareMode() viewmodel.LayerCompareMode { method IsVisible (line 160) | func (v *Layer) IsVisible() bool { method PageDown (line 165) | func (v *Layer) PageDown() error { method PageUp (line 184) | func (v *Layer) PageUp() error { method CursorDown (line 203) | func (v *Layer) CursorDown() error { method CursorUp (line 215) | func (v *Layer) CursorUp() error { method SetOrigin (line 227) | func (v *Layer) SetOrigin(x, y int) error { method SetCursor (line 235) | func (v *Layer) SetCursor(layer int) error { method CurrentLayer (line 246) | func (v *Layer) CurrentLayer() *image.Layer { method setCompareMode (line 251) | func (v *Layer) setCompareMode(compareMode viewmodel.LayerCompareMode)... method renderCompareBar (line 257) | func (v *Layer) renderCompareBar(layerIdx int) string { method ConstrainLayout (line 271) | func (v *Layer) ConstrainLayout() { method ExpandLayout (line 278) | func (v *Layer) ExpandLayout() { method OnLayoutChange (line 286) | func (v *Layer) OnLayoutChange() error { method Update (line 295) | func (v *Layer) Update() error { method Render (line 302) | func (v *Layer) Render() error { method LayerCount (line 366) | func (v *Layer) LayerCount() int { method KeyHelp (line 371) | func (v *Layer) KeyHelp() string { function newLayerView (line 33) | func newLayerView(gui *gocui.Gui, cfg v1.Config) (c *Layer, err error) { FILE: cmd/dive/cli/internal/ui/v1/view/layer_change_listener.go type LayerChangeListener (line 7) | type LayerChangeListener FILE: cmd/dive/cli/internal/ui/v1/view/layer_details.go type LayerDetails (line 16) | type LayerDetails struct method Name (line 25) | func (v *LayerDetails) Name() string { method Setup (line 29) | func (v *LayerDetails) Setup(body, header *gocui.View) error { method Render (line 71) | func (v *LayerDetails) Render() error { method OnLayoutChange (line 109) | func (v *LayerDetails) OnLayoutChange() error { method IsVisible (line 117) | func (v *LayerDetails) IsVisible() bool { method CursorUp (line 122) | func (v *LayerDetails) CursorUp() error { method CursorDown (line 130) | func (v *LayerDetails) CursorDown() error { method KeyHelp (line 138) | func (v *LayerDetails) KeyHelp() string { method Update (line 143) | func (v *LayerDetails) Update() error { method SetCursor (line 147) | func (v *LayerDetails) SetCursor(x, y int) error { FILE: cmd/dive/cli/internal/ui/v1/view/renderer.go type Renderer (line 4) | type Renderer interface type Helper (line 10) | type Helper interface FILE: cmd/dive/cli/internal/ui/v1/view/status.go type Status (line 17) | type Status struct method SetCurrentView (line 43) | func (v *Status) SetCurrentView(r Helper) { method Name (line 47) | func (v *Status) Name() string { method AddHelpKeys (line 51) | func (v *Status) AddHelpKeys(keys ...*key.Binding) { method Setup (line 56) | func (v *Status) Setup(view *gocui.View) error { method IsVisible (line 67) | func (v *Status) IsVisible() bool { method Update (line 72) | func (v *Status) Update() error { method OnLayoutChange (line 77) | func (v *Status) OnLayoutChange() error { method Render (line 86) | func (v *Status) Render() error { method KeyHelp (line 108) | func (v *Status) KeyHelp() string { method Layout (line 116) | func (v *Status) Layout(g *gocui.Gui, minX, minY, maxX, maxY int) error { method RequestedSize (line 129) | func (v *Status) RequestedSize(available int) *int { function newStatusView (line 30) | func newStatusView(gui *gocui.Gui) *Status { FILE: cmd/dive/cli/internal/ui/v1/view/views.go type View (line 8) | type View interface type Views (line 14) | type Views struct method Renderers (line 58) | func (views *Views) Renderers() []Renderer { function NewViews (line 24) | func NewViews(g *gocui.Gui, cfg v1.Config) (*Views, error) { FILE: cmd/dive/cli/internal/ui/v1/viewmodel/filetree.go type FileTreeViewModel (line 18) | type FileTreeViewModel struct method Setup (line 78) | func (vm *FileTreeViewModel) Setup(lowerBound, height int) { method height (line 84) | func (vm *FileTreeViewModel) height() int { method bufferIndexUpperBound (line 92) | func (vm *FileTreeViewModel) bufferIndexUpperBound() int { method IsVisible (line 97) | func (vm *FileTreeViewModel) IsVisible() bool { method ResetCursor (line 102) | func (vm *FileTreeViewModel) ResetCursor() { method SetTreeByLayer (line 109) | func (vm *FileTreeViewModel) SetTreeByLayer(bottomTreeStart, bottomTre... method CursorUp (line 136) | func (vm *FileTreeViewModel) CursorUp() bool { method CursorDown (line 151) | func (vm *FileTreeViewModel) CursorDown() bool { method CurrentNode (line 166) | func (vm *FileTreeViewModel) CurrentNode(filterRegex *regexp.Regexp) *... method CursorLeft (line 171) | func (vm *FileTreeViewModel) CursorLeft(filterRegex *regexp.Regexp) er... method CursorRight (line 221) | func (vm *FileTreeViewModel) CursorRight(filterRegex *regexp.Regexp) e... method PageDown (line 253) | func (vm *FileTreeViewModel) PageDown() error { method PageUp (line 279) | func (vm *FileTreeViewModel) PageUp() error { method getAbsPositionNode (line 304) | func (vm *FileTreeViewModel) getAbsPositionNode(filterRegex *regexp.Re... method ToggleCollapse (line 339) | func (vm *FileTreeViewModel) ToggleCollapse(filterRegex *regexp.Regexp... method ToggleCollapseAll (line 348) | func (vm *FileTreeViewModel) ToggleCollapseAll() error { method ToggleSortOrder (line 369) | func (vm *FileTreeViewModel) ToggleSortOrder() error { method ConstrainLayout (line 375) | func (vm *FileTreeViewModel) ConstrainLayout() { method ExpandLayout (line 383) | func (vm *FileTreeViewModel) ExpandLayout() { method ToggleAttributes (line 391) | func (vm *FileTreeViewModel) ToggleAttributes() error { method ToggleShowDiffType (line 401) | func (vm *FileTreeViewModel) ToggleShowDiffType(diffType filetree.Diff... method Update (line 406) | func (vm *FileTreeViewModel) Update(filterRegex *regexp.Regexp, width,... method Render (line 452) | func (vm *FileTreeViewModel) Render() error { function NewFileTreeViewModel (line 41) | func NewFileTreeViewModel(cfg v1.Config, initialLayer int) (treeViewMode... FILE: cmd/dive/cli/internal/ui/v1/viewmodel/filetree_test.go function TestUpdateSnapshotDisabled (line 25) | func TestUpdateSnapshotDisabled(t *testing.T) { function fileExists (line 29) | func fileExists(filename string) bool { function testCaseDataFilePath (line 37) | func testCaseDataFilePath(name string) string { function helperLoadBytes (line 41) | func helperLoadBytes(t *testing.T) []byte { function helperCaptureBytes (line 51) | func helperCaptureBytes(t *testing.T, data []byte) { function initializeTestViewModel (line 66) | func initializeTestViewModel(t *testing.T) *FileTreeViewModel { function runTestCase (line 81) | func runTestCase(t *testing.T, vm *FileTreeViewModel, width, height int,... function checkError (line 108) | func checkError(t *testing.T, err error, message string) { function TestFileTreeGoCase (line 114) | func TestFileTreeGoCase(t *testing.T) { function TestFileTreeNoAttributes (line 124) | func TestFileTreeNoAttributes(t *testing.T) { function TestFileTreeRestrictedHeight (line 134) | func TestFileTreeRestrictedHeight(t *testing.T) { function TestFileTreeDirCollapse (line 144) | func TestFileTreeDirCollapse(t *testing.T) { function assertPath (line 174) | func assertPath(t *testing.T, vm *FileTreeViewModel, expected string, ms... function TestFileTreeDirCollapseAll (line 181) | func TestFileTreeDirCollapseAll(t *testing.T) { function TestFileTreeSelectLayer (line 194) | func TestFileTreeSelectLayer(t *testing.T) { function TestFileShowAggregateChanges (line 213) | func TestFileShowAggregateChanges(t *testing.T) { function TestFileTreePageDown (line 231) | func TestFileTreePageDown(t *testing.T) { function TestFileTreePageUp (line 252) | func TestFileTreePageUp(t *testing.T) { function TestFileTreeDirCursorRight (line 275) | func TestFileTreeDirCursorRight(t *testing.T) { function TestFileTreeFilterTree (line 307) | func TestFileTreeFilterTree(t *testing.T) { function TestFileTreeHideAddedRemovedModified (line 322) | func TestFileTreeHideAddedRemovedModified(t *testing.T) { function TestFileTreeHideUnmodified (line 351) | func TestFileTreeHideUnmodified(t *testing.T) { function TestFileTreeHideTypeWithFilter (line 374) | func TestFileTreeHideTypeWithFilter(t *testing.T) { function repoPath (line 402) | func repoPath(t testing.TB, path string) string { function repoRoot (line 408) | func repoRoot(t testing.TB) string { FILE: cmd/dive/cli/internal/ui/v1/viewmodel/layer_compare.go constant CompareSingleLayer (line 4) | CompareSingleLayer LayerCompareMode = iota constant CompareAllLayers (line 5) | CompareAllLayers type LayerCompareMode (line 8) | type LayerCompareMode FILE: cmd/dive/cli/internal/ui/v1/viewmodel/layer_selection.go type LayerSelection (line 7) | type LayerSelection struct FILE: cmd/dive/cli/internal/ui/v1/viewmodel/layer_set_state.go type LayerSetState (line 5) | type LayerSetState struct method GetCompareIndexes (line 20) | func (state *LayerSetState) GetCompareIndexes() (bottomTreeStart, bott... function NewLayerSetState (line 12) | func NewLayerSetState(layers []*image.Layer, compareMode LayerCompareMod... FILE: cmd/dive/cli/internal/ui/v1/viewmodel/layer_set_state_test.go function TestGetCompareIndexes (line 7) | func TestGetCompareIndexes(t *testing.T) { FILE: cmd/dive/main.go constant applicationName (line 30) | applicationName = "dive" constant notProvided (line 31) | notProvided = "[not provided]" function main (line 43) | func main() { FILE: dive/filetree/comparer.go type TreeIndexKey (line 7) | type TreeIndexKey struct method String (line 20) | func (index TreeIndexKey) String() string { function NewTreeIndexKey (line 11) | func NewTreeIndexKey(bottomTreeStart, bottomTreeStop, topTreeStart, topT... type Comparer (line 31) | type Comparer struct method GetPathErrors (line 45) | func (cmp *Comparer) GetPathErrors(key TreeIndexKey) ([]PathError, err... method GetTree (line 53) | func (cmp *Comparer) GetTree(key TreeIndexKey) (*FileTree, error) { method get (line 70) | func (cmp *Comparer) get(key TreeIndexKey) (*FileTree, []PathError, er... method NaturalIndexes (line 86) | func (cmp *Comparer) NaturalIndexes() <-chan TreeIndexKey { method AggregatedIndexes (line 118) | func (cmp *Comparer) AggregatedIndexes() <-chan TreeIndexKey { method BuildCache (line 148) | func (cmp *Comparer) BuildCache() (errors []error) { function NewComparer (line 37) | func NewComparer(refTrees []*FileTree) Comparer { FILE: dive/filetree/diff.go constant Unmodified (line 8) | Unmodified DiffType = iota constant Modified (line 9) | Modified constant Added (line 10) | Added constant Removed (line 11) | Removed type DiffType (line 15) | type DiffType method String (line 18) | func (diff DiffType) String() string { method merge (line 35) | func (diff DiffType) merge(other DiffType) DiffType { FILE: dive/filetree/efficiency.go type EfficiencyData (line 10) | type EfficiencyData struct type EfficiencySlice (line 18) | type EfficiencySlice method Len (line 21) | func (efs EfficiencySlice) Len() int { method Swap (line 26) | func (efs EfficiencySlice) Swap(i, j int) { method Less (line 31) | func (efs EfficiencySlice) Less(i, j int) bool { function Efficiency (line 38) | func Efficiency(trees []*FileTree) (float64, EfficiencySlice) { FILE: dive/filetree/efficiency_test.go function checkError (line 7) | func checkError(t *testing.T, err error, message string) { function TestEfficiency (line 13) | func TestEfficiency(t *testing.T) { function TestEfficiency_ScratchImage (line 59) | func TestEfficiency_ScratchImage(t *testing.T) { FILE: dive/filetree/file_info.go type FileInfo (line 13) | type FileInfo struct method Copy (line 93) | func (data *FileInfo) Copy() *FileInfo { method Compare (line 111) | func (data *FileInfo) Compare(other FileInfo) DiffType { function NewFileInfoFromTarHeader (line 26) | func NewFileInfoFromTarHeader(reader *tar.Reader, header *tar.Header, pa... function NewFileInfo (line 45) | func NewFileInfo(realPath, path string, info os.FileInfo) FileInfo { function getHashFromReader (line 123) | func getHashFromReader(reader io.Reader) uint64 { FILE: dive/filetree/file_node.go constant AttributeFormat (line 15) | AttributeFormat = "%s%s %11s %10s " type FileNode (line 26) | type FileNode struct method renderTreeLine (line 54) | func (node *FileNode) renderTreeLine(spaces []bool, last bool, collaps... method Copy (line 78) | func (node *FileNode) Copy(parent *FileNode) *FileNode { method AddChild (line 90) | func (node *FileNode) AddChild(name string, data FileInfo) (child *Fil... method Remove (line 109) | func (node *FileNode) Remove() error { method String (line 125) | func (node *FileNode) String() string { method MetadataString (line 139) | func (node *FileNode) MetadataString() string { method GetSize (line 184) | func (node *FileNode) GetSize() int64 { method VisitDepthChildFirst (line 210) | func (node *FileNode) VisitDepthChildFirst(visitor Visitor, evaluator ... method VisitDepthParentFirst (line 233) | func (node *FileNode) VisitDepthParentFirst(visitor Visitor, evaluator... method IsWhiteout (line 265) | func (node *FileNode) IsWhiteout() bool { method IsLeaf (line 270) | func (node *FileNode) IsLeaf() bool { method Path (line 275) | func (node *FileNode) Path() string { method deriveDiffType (line 300) | func (node *FileNode) deriveDiffType(diffType DiffType) error { method AssignDiffType (line 314) | func (node *FileNode) AssignDiffType(diffType DiffType) error { method compare (line 333) | func (node *FileNode) compare(other *FileNode) DiffType { function NewNode (line 37) | func NewNode(parent *FileNode, name string, data FileInfo) (node *FileNo... FILE: dive/filetree/file_node_test.go function TestAddChild (line 7) | func TestAddChild(t *testing.T) { function TestRemoveChild (line 49) | func TestRemoveChild(t *testing.T) { function TestPath (line 85) | func TestPath(t *testing.T) { function TestIsWhiteout (line 96) | func TestIsWhiteout(t *testing.T) { function TestDiffTypeFromAddedChildren (line 115) | func TestDiffTypeFromAddedChildren(t *testing.T) { function TestDiffTypeFromRemovedChildren (line 133) | func TestDiffTypeFromRemovedChildren(t *testing.T) { function TestDirSize (line 154) | func TestDirSize(t *testing.T) { FILE: dive/filetree/file_tree.go constant newLine (line 13) | newLine = "\n" constant noBranchSpace (line 14) | noBranchSpace = " " constant branchSpace (line 15) | branchSpace = "│ " constant middleItem (line 16) | middleItem = "├─" constant lastItem (line 17) | lastItem = "└─" constant whiteoutPrefix (line 18) | whiteoutPrefix = ".wh." constant doubleWhiteoutPrefix (line 19) | doubleWhiteoutPrefix = ".wh..wh.." constant uncollapsedItem (line 20) | uncollapsedItem = "─ " constant collapsedItem (line 21) | collapsedItem = "⊕ " type FileTree (line 25) | type FileTree struct method renderStringTreeBetween (line 58) | func (tree *FileTree) renderStringTreeBetween(startRow, stopRow int, s... method VisibleSize (line 130) | func (tree *FileTree) VisibleSize() int { method String (line 159) | func (tree *FileTree) String(showAttributes bool) string { method StringBetween (line 164) | func (tree *FileTree) StringBetween(start, stop int, showAttributes bo... method Copy (line 169) | func (tree *FileTree) Copy() *FileTree { method VisitDepthChildFirst (line 196) | func (tree *FileTree) VisitDepthChildFirst(visitor Visitor, evaluator ... method VisitDepthParentFirst (line 202) | func (tree *FileTree) VisitDepthParentFirst(visitor Visitor, evaluator... method Stack (line 208) | func (tree *FileTree) Stack(upper *FileTree) (failed []PathError, stac... method GetNode (line 228) | func (tree *FileTree) GetNode(path string) (*FileNode, error) { method AddPath (line 244) | func (tree *FileTree) AddPath(filepath string, data FileInfo) (*FileNo... method RemovePath (line 285) | func (tree *FileTree) RemovePath(path string) error { method CompareAndMark (line 301) | func (tree *FileTree) CompareAndMark(upper *FileTree) ([]PathError, er... method markRemoved (line 368) | func (tree *FileTree) markRemoved(path string) error { function NewFileTree (line 35) | func NewFileTree() (tree *FileTree) { type renderParams (line 48) | type renderParams struct type Visitor (line 190) | type Visitor type VisitEvaluator (line 193) | type VisitEvaluator type compareMark (line 293) | type compareMark struct function StackTreeRange (line 377) | func StackTreeRange(trees []*FileTree, start, stop int) (*FileTree, []Pa... FILE: dive/filetree/file_tree_test.go function stringInSlice (line 9) | func stringInSlice(a string, list []string) bool { function AssertDiffType (line 18) | func AssertDiffType(node *FileNode, expectedDiffType DiffType) error { function TestStringCollapsed (line 25) | func TestStringCollapsed(t *testing.T) { function TestString (line 64) | func TestString(t *testing.T) { function TestStringBetween (line 89) | func TestStringBetween(t *testing.T) { function TestRejectPurelyRelativePath (line 129) | func TestRejectPurelyRelativePath(t *testing.T) { function TestAddRelativePath (line 143) | func TestAddRelativePath(t *testing.T) { function TestAddPath (line 163) | func TestAddPath(t *testing.T) { function TestAddWhiteoutPath (line 210) | func TestAddWhiteoutPath(t *testing.T) { function TestRemovePath (line 234) | func TestRemovePath(t *testing.T) { function TestStack (line 287) | func TestStack(t *testing.T) { function TestCopy (line 382) | func TestCopy(t *testing.T) { function TestCompareWithNoChanges (line 437) | func TestCompareWithNoChanges(t *testing.T) { function TestCompareWithAdds (line 479) | func TestCompareWithAdds(t *testing.T) { function TestCompareWithChanges (line 549) | func TestCompareWithChanges(t *testing.T) { function TestCompareWithRemoves (line 662) | func TestCompareWithRemoves(t *testing.T) { function TestStackRange (line 733) | func TestStackRange(t *testing.T) { function TestRemoveOnIterate (line 805) | func TestRemoveOnIterate(t *testing.T) { FILE: dive/filetree/node_data.go type NodeData (line 6) | type NodeData struct method Copy (line 22) | func (data *NodeData) Copy() *NodeData { function NewNodeData (line 13) | func NewNodeData() *NodeData { FILE: dive/filetree/node_data_test.go function TestAssignDiffType (line 7) | func TestAssignDiffType(t *testing.T) { function TestMergeDiffTypes (line 19) | func TestMergeDiffTypes(t *testing.T) { function BlankFileChangeInfo (line 34) | func BlankFileChangeInfo(path string) (f *FileInfo) { FILE: dive/filetree/order_strategy.go type SortOrder (line 7) | type SortOrder constant ByName (line 10) | ByName = iota constant BySizeDesc (line 11) | BySizeDesc constant NumSortOrderConventions (line 13) | NumSortOrderConventions type OrderStrategy (line 16) | type OrderStrategy interface function GetSortOrderStrategy (line 20) | func GetSortOrderStrategy(sortOrder SortOrder) OrderStrategy { type orderByNameStrategy (line 30) | type orderByNameStrategy struct method orderKeys (line 32) | func (orderByNameStrategy) orderKeys(files map[string]*FileNode) []str... type orderBySizeDescStrategy (line 43) | type orderBySizeDescStrategy struct method orderKeys (line 45) | func (orderBySizeDescStrategy) orderKeys(files map[string]*FileNode) [... FILE: dive/filetree/path_error.go constant ActionAdd (line 6) | ActionAdd FileAction = iota constant ActionRemove (line 7) | ActionRemove type FileAction (line 10) | type FileAction method String (line 12) | func (fa FileAction) String() string { type PathError (line 23) | type PathError struct method String (line 37) | func (pe PathError) String() string { function NewPathError (line 29) | func NewPathError(path string, action FileAction, err error) PathError { FILE: dive/filetree/view_info.go type ViewInfo (line 4) | type ViewInfo struct method Copy (line 18) | func (view *ViewInfo) Copy() (newView *ViewInfo) { function NewViewInfo (line 10) | func NewViewInfo() (view *ViewInfo) { FILE: dive/get_image_resolver.go constant SourceUnknown (line 13) | SourceUnknown ImageSource = iota constant SourceDockerEngine (line 14) | SourceDockerEngine constant SourcePodmanEngine (line 15) | SourcePodmanEngine constant SourceDockerArchive (line 16) | SourceDockerArchive type ImageSource (line 19) | type ImageSource method String (line 23) | func (r ImageSource) String() string { function ParseImageSource (line 27) | func ParseImageSource(r string) ImageSource { function DeriveImageSource (line 42) | func DeriveImageSource(image string) (ImageSource, string) { function GetImageResolver (line 62) | func GetImageResolver(r ImageSource) (image.Resolver, error) { FILE: dive/image/analysis.go type Analysis (line 8) | type Analysis struct function Analyze (line 20) | func Analyze(ctx context.Context, img *Image) (*Analysis, error) { FILE: dive/image/docker/archive_resolver.go type archiveResolver (line 11) | type archiveResolver struct method Name (line 18) | func (r *archiveResolver) Name() string { method Fetch (line 22) | func (r *archiveResolver) Fetch(ctx context.Context, path string) (*im... method Build (line 36) | func (r *archiveResolver) Build(ctx context.Context, args []string) (*... method Extract (line 40) | func (r *archiveResolver) Extract(ctx context.Context, id string, l st... function NewResolverFromArchive (line 13) | func NewResolverFromArchive() *archiveResolver { FILE: dive/image/docker/build.go constant defaultDockerfileName (line 13) | defaultDockerfileName = "Dockerfile" constant defaultContainerfileName (line 14) | defaultContainerfileName = "Containerfile" function buildImageFromCli (line 17) | func buildImageFromCli(fs afero.Fs, buildArgs []string) (string, error) { function isFileFlagsAreSet (line 50) | func isFileFlagsAreSet(args []string, flags ...string) bool { function tryFindContainerfile (line 61) | func tryFindContainerfile(fs afero.Fs, buildArgs []string) (string, erro... FILE: dive/image/docker/build_test.go function TestIsFileFlagsAreSet (line 12) | func TestIsFileFlagsAreSet(t *testing.T) { function TestTryFindContainerfile (line 83) | func TestTryFindContainerfile(t *testing.T) { function create (line 220) | func create(t testing.TB, fs afero.Fs, path, contents string) { FILE: dive/image/docker/cli.go function runDockerCmd (line 13) | func runDockerCmd(cmdStr string, args ...string) error { function isDockerClientBinaryAvailable (line 34) | func isDockerClientBinaryAvailable() bool { FILE: dive/image/docker/config.go type config (line 8) | type config struct type rootFs (line 13) | type rootFs struct type historyEntry (line 18) | type historyEntry struct function newConfig (line 27) | func newConfig(configBytes []byte) config { function isConfig (line 47) | func isConfig(configBytes []byte) bool { FILE: dive/image/docker/docker_host_unix.go constant defaultDockerHost (line 6) | defaultDockerHost = "unix:///var/run/docker.sock" FILE: dive/image/docker/docker_host_windows.go constant defaultDockerHost (line 4) | defaultDockerHost = "npipe:////.pipe/docker_engine" FILE: dive/image/docker/engine_resolver.go type engineResolver (line 23) | type engineResolver struct method Name (line 30) | func (r *engineResolver) Name() string { method Fetch (line 34) | func (r *engineResolver) Fetch(ctx context.Context, id string) (*image... method Build (line 48) | func (r *engineResolver) Build(ctx context.Context, args []string) (*i... method Extract (line 56) | func (r *engineResolver) Extract(ctx context.Context, id string, l str... method fetchArchive (line 69) | func (r *engineResolver) fetchArchive(ctx context.Context, id string) ... function NewResolverFromEngine (line 25) | func NewResolverFromEngine() *engineResolver { function determineDockerHost (line 144) | func determineDockerHost() (string, error) { FILE: dive/image/docker/image_archive.go type ImageArchive (line 21) | type ImageArchive struct method ToImage (line 250) | func (img *ImageArchive) ToImage(id string) (*image.Image, error) { function NewImageArchive (line 27) | func NewImageArchive(tarFile io.ReadCloser) (*ImageArchive, error) { function processLayerTar (line 200) | func processLayerTar(name string, reader *tar.Reader) (*filetree.FileTre... function getFileList (line 221) | func getFileList(tarReader *tar.Reader) ([]filetree.FileInfo, error) { function ExtractFromImage (line 303) | func ExtractFromImage(tarFile io.ReadCloser, l string, p string) error { function extractInner (line 337) | func extractInner(reader *tar.Reader, p string) error { FILE: dive/image/docker/image_archive_analysis_test.go function Test_Analysis (line 7) | func Test_Analysis(t *testing.T) { FILE: dive/image/docker/layer.go type layer (line 11) | type layer struct method ToLayer (line 18) | func (l *layer) ToLayer() *image.Layer { FILE: dive/image/docker/manifest.go type manifest (line 8) | type manifest struct function newManifest (line 14) | func newManifest(manifestBytes []byte) manifest { FILE: dive/image/docker/testing.go function TestLoadArchive (line 12) | func TestLoadArchive(t testing.TB, tarPath string) (*ImageArchive, error) { function TestAnalysisFromArchive (line 23) | func TestAnalysisFromArchive(t testing.TB, path string) *image.Analysis { FILE: dive/image/image.go type Image (line 7) | type Image struct FILE: dive/image/layer.go constant LayerFormat (line 13) | LayerFormat = "%7s %s" type Layer (line 16) | type Layer struct method ShortId (line 26) | func (l *Layer) ShortId() string { method commandPreview (line 37) | func (l *Layer) commandPreview() string { method String (line 43) | func (l *Layer) String() string { FILE: dive/image/podman/build.go function buildImageFromCli (line 9) | func buildImageFromCli(buildArgs []string) (string, error) { FILE: dive/image/podman/cli.go function runPodmanCmd (line 16) | func runPodmanCmd(cmdStr string, args ...string) error { function streamPodmanCmd (line 36) | func streamPodmanCmd(args ...string) (error, io.Reader) { function isPodmanClientBinaryAvailable (line 60) | func isPodmanClientBinaryAvailable() bool { FILE: dive/image/podman/resolver.go type resolver (line 14) | type resolver struct method Name (line 21) | func (r *resolver) Name() string { method Build (line 25) | func (r *resolver) Build(ctx context.Context, args []string) (*image.I... method Fetch (line 33) | func (r *resolver) Fetch(ctx context.Context, id string) (*image.Image... method Extract (line 44) | func (r *resolver) Extract(ctx context.Context, id string, l string, p... method resolveFromDockerArchive (line 59) | func (r *resolver) resolveFromDockerArchive(id string) (*image.Image, ... function NewResolverFromEngine (line 16) | func NewResolverFromEngine() *resolver { FILE: dive/image/podman/resolver_unsupported.go type resolver (line 13) | type resolver struct method Name (line 20) | func (r *resolver) Name() string { method Build (line 23) | func (r *resolver) Build(ctx context.Context, args []string) (*image.I... method Fetch (line 27) | func (r *resolver) Fetch(ctx context.Context, id string) (*image.Image... method Extract (line 31) | func (r *resolver) Extract(ctx context.Context, id string, l string, p... function NewResolverFromEngine (line 15) | func NewResolverFromEngine() *resolver { FILE: dive/image/resolver.go type Resolver (line 5) | type Resolver interface type ContentReader (line 12) | type ContentReader interface FILE: internal/bus/bus.go function Set (line 7) | func Set(p partybus.Publisher) { function Get (line 11) | func Get() partybus.Publisher { function Publish (line 15) | func Publish(e partybus.Event) { FILE: internal/bus/event/event.go constant typePrefix (line 8) | typePrefix = "dive-cli" constant TaskStarted (line 11) | TaskStarted partybus.EventType = typePrefix + "-task-started" constant ExploreAnalysis (line 14) | ExploreAnalysis partybus.EventType = typePrefix + "-analysis" constant Report (line 17) | Report partybus.EventType = typePrefix + "-report" constant Notification (line 20) | Notification partybus.EventType = typePrefix + "-notification" FILE: internal/bus/event/parser/parsers.go type ErrBadPayload (line 12) | type ErrBadPayload struct method Error (line 18) | func (e *ErrBadPayload) Error() string { function newPayloadErr (line 22) | func newPayloadErr(t partybus.EventType, field string, value interface{}... function checkEventType (line 30) | func checkEventType(actual, expected partybus.EventType) error { function ParseTaskStarted (line 37) | func ParseTaskStarted(e partybus.Event) (progress.StagedProgressable, *p... function ParseExploreAnalysis (line 57) | func ParseExploreAnalysis(e partybus.Event) (image.Analysis, image.Conte... function ParseReport (line 70) | func ParseReport(e partybus.Event) (string, string, error) { function ParseNotification (line 89) | func ParseNotification(e partybus.Event) (string, string, error) { FILE: internal/bus/event/payload/explore.go type Explore (line 5) | type Explore struct FILE: internal/bus/event/payload/generic.go type genericProgressKey (line 8) | type genericProgressKey struct function SetGenericProgressToContext (line 10) | func SetGenericProgressToContext(ctx context.Context, mon *GenericProgre... function GetGenericProgressFromContext (line 14) | func GetGenericProgressFromContext(ctx context.Context) *GenericProgress { type GenericTask (line 22) | type GenericTask struct type GenericProgress (line 39) | type GenericProgress struct type Title (line 44) | type Title struct FILE: internal/bus/helpers.go function Report (line 11) | func Report(report string) { function Notify (line 21) | func Notify(message string) { function StartTask (line 28) | func StartTask(info payload.GenericTask) *payload.GenericProgress { function StartSizedTask (line 43) | func StartSizedTask(info payload.GenericTask, size int64, initialStage s... function ExploreAnalysis (line 58) | func ExploreAnalysis(analysis image.Analysis, reader image.ContentReader) { FILE: internal/log/log.go function Set (line 12) | func Set(l logger.Logger) { function Get (line 17) | func Get() logger.Logger { function Errorf (line 22) | func Errorf(format string, args ...interface{}) { function Error (line 27) | func Error(args ...interface{}) { function Warnf (line 32) | func Warnf(format string, args ...interface{}) { function Warn (line 37) | func Warn(args ...interface{}) { function Infof (line 42) | func Infof(format string, args ...interface{}) { function Info (line 47) | func Info(args ...interface{}) { function Debugf (line 52) | func Debugf(format string, args ...interface{}) { function Debug (line 57) | func Debug(args ...interface{}) { function Tracef (line 62) | func Tracef(format string, args ...interface{}) { function Trace (line 67) | func Trace(args ...interface{}) { function WithFields (line 72) | func WithFields(fields ...interface{}) logger.MessageLogger { function Nested (line 77) | func Nested(fields ...interface{}) logger.Logger { FILE: internal/utils/format.go function CleanArgs (line 8) | func CleanArgs(s []string) []string { FILE: internal/utils/view.go function IsNewView (line 10) | func IsNewView(errs ...error) bool {