Skip to content

Commit

Permalink
Merge pull request #1092 from aemengo/add-homepages-to-inspect-image
Browse files Browse the repository at this point in the history
Add buildpack homepages to inspect-image output
  • Loading branch information
jromero committed Mar 9, 2021
2 parents efc6749 + fc74b7a commit 6d538b8
Show file tree
Hide file tree
Showing 22 changed files with 171 additions and 95 deletions.
Expand Up @@ -33,11 +33,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
simple/nested-level-1 nested-l1-version
simple/nested-level-2 nested-l2-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -
simple/nested-level-1 nested-l1-version -
simple/nested-level-2 nested-l2-version -

Detection Order:
└ Group #1:
Expand Down Expand Up @@ -79,11 +79,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
simple/nested-level-1 nested-l1-version
simple/nested-level-2 nested-l2-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -
simple/nested-level-1 nested-l1-version -
simple/nested-level-2 nested-l2-version -

Detection Order:
└ Group #1:
Expand Down
20 changes: 10 additions & 10 deletions acceptance/testdata/pack_fixtures/inspect_builder_nested_output.txt
Expand Up @@ -33,11 +33,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
simple/nested-level-1 nested-l1-version
simple/nested-level-2 nested-l2-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -
simple/nested-level-1 nested-l1-version -
simple/nested-level-2 nested-l2-version -

Detection Order:
└ Group #1:
Expand Down Expand Up @@ -81,11 +81,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
simple/nested-level-1 nested-l1-version
simple/nested-level-2 nested-l2-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -
simple/nested-level-1 nested-l1-version -
simple/nested-level-2 nested-l2-version -

Detection Order:
└ Group #1:
Expand Down
12 changes: 6 additions & 6 deletions acceptance/testdata/pack_fixtures/inspect_builder_output.txt
Expand Up @@ -33,9 +33,9 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -

Detection Order:
└ Group #1:
Expand Down Expand Up @@ -75,9 +75,9 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
noop.buildpack noop.buildpack.later-version http://geocities.com/cool-bp
noop.buildpack noop.buildpack.version
read/env read-env-version
simple/layers simple-layers-version
noop.buildpack noop.buildpack.version -
read/env read-env-version -
simple/layers simple-layers-version -

Detection Order:
└ Group #1:
Expand Down
Expand Up @@ -9,8 +9,8 @@ Stacks:

Buildpacks:
ID VERSION HOMEPAGE
simple/layers simple-layers-version
simple/layers/parent simple-layers-parent-version
simple/layers simple-layers-version -
simple/layers/parent simple-layers-parent-version -

Detection Order:
└ Group #1:
Expand Down
Expand Up @@ -17,8 +17,8 @@ Run Images:
{{.run_image_mirror}}

Buildpacks:
ID VERSION
simple/layers simple-layers-version
ID VERSION HOMEPAGE
simple/layers simple-layers-version -

Processes:
TYPE SHELL COMMAND ARGS
Expand Down
Expand Up @@ -13,8 +13,8 @@ Run Images:
{{.run_image_mirror}}

Buildpacks:
ID VERSION
simple/layers simple-layers-version
ID VERSION HOMEPAGE
simple/layers simple-layers-version -

Processes:
TYPE SHELL COMMAND ARGS
Expand Down
19 changes: 12 additions & 7 deletions internal/builder/writer/human_readable.go
Expand Up @@ -8,6 +8,8 @@ import (
"text/tabwriter"
"text/template"

strs "github.com/buildpacks/pack/internal/strings"

"github.com/buildpacks/pack/internal/style"

"github.com/buildpacks/pack/internal/dist"
Expand Down Expand Up @@ -283,29 +285,32 @@ func buildpacksOutput(buildpacks []dist.BuildpackInfo, builderName string) (stri
return fmt.Sprintf("%s %s\n", output, none), warnings, nil
}

tabWriterBuf := bytes.Buffer{}
spaceStrippingWriter := &trailingSpaceStrippingWriter{
output: &tabWriterBuf,
}
var (
tabWriterBuf = bytes.Buffer{}
spaceStrippingWriter = &trailingSpaceStrippingWriter{
output: &tabWriterBuf,
}
buildpacksTabWriter = tabwriter.NewWriter(spaceStrippingWriter, writerMinWidth, writerPadChar, buildpacksTabWidth, writerPadChar, writerFlags)
)

buildpacksTabWriter := tabwriter.NewWriter(spaceStrippingWriter, writerMinWidth, writerPadChar, buildpacksTabWidth, writerPadChar, writerFlags)
_, err := fmt.Fprint(buildpacksTabWriter, " ID\tVERSION\tHOMEPAGE\n")
if err != nil {
return "", []string{}, fmt.Errorf("writing to tab writer: %w", err)
}

for _, b := range buildpacks {
_, err = fmt.Fprintf(buildpacksTabWriter, " %s\t%s\t%s\n", b.ID, b.Version, b.Homepage)
_, err = fmt.Fprintf(buildpacksTabWriter, " %s\t%s\t%s\n", b.ID, b.Version, strs.ValueOrDefault(b.Homepage, "-"))
if err != nil {
return "", []string{}, fmt.Errorf("writing to tab writer: %w", err)
}
}

err = buildpacksTabWriter.Flush()
if err != nil {
return "", []string{}, fmt.Errorf("flushing tab writer: %w", err)
}

output += tabWriterBuf.String()

return output, []string{}, nil
}

Expand Down
12 changes: 6 additions & 6 deletions internal/builder/writer/human_readable_test.go
Expand Up @@ -68,11 +68,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
test.top.nested test.top.nested.version
test.top.nested test.top.nested.version -
test.nested http://geocities.com/top-bp
test.bp.one test.bp.one.version http://geocities.com/cool-bp
test.bp.two test.bp.two.version
test.bp.three test.bp.three.version
test.bp.two test.bp.two.version -
test.bp.three test.bp.three.version -
Detection Order:
├ Group #1:
Expand Down Expand Up @@ -121,11 +121,11 @@ Run Images:
Buildpacks:
ID VERSION HOMEPAGE
test.top.nested test.top.nested.version
test.top.nested test.top.nested.version -
test.nested http://geocities.com/top-bp
test.bp.one test.bp.one.version http://geocities.com/cool-bp
test.bp.two test.bp.two.version
test.bp.three test.bp.three.version
test.bp.two test.bp.two.version -
test.bp.three test.bp.three.version -
Detection Order:
├ Group #1:
Expand Down
9 changes: 7 additions & 2 deletions internal/commands/buildpack_inspect_test.go
Expand Up @@ -71,8 +71,9 @@ const simpleOutputSection = `Stacks:
(omitted)
Buildpacks:
ID VERSION HOMEPAGE
some/single-buildpack 0.0.1 single-buildpack-homepage
ID VERSION HOMEPAGE
some/single-buildpack 0.0.1 single-buildpack-homepage
some/buildpack-no-homepage 0.0.2 -
Detection Order:
└ Group #1:
Expand Down Expand Up @@ -312,6 +313,10 @@ func testBuildpackInspectCommand(t *testing.T, when spec.G, it spec.S) {
Version: "0.0.1",
Homepage: "single-buildpack-homepage",
},
{
ID: "some/buildpack-no-homepage",
Version: "0.0.2",
},
},
Order: dist.Order{
{
Expand Down
5 changes: 4 additions & 1 deletion internal/commands/inspect_buildpack.go
Expand Up @@ -8,6 +8,8 @@ import (
"text/tabwriter"
"text/template"

strs "github.com/buildpacks/pack/internal/strings"

"github.com/buildpacks/pack/internal/dist"

"github.com/pkg/errors"
Expand Down Expand Up @@ -178,13 +180,14 @@ func determinePrefix(name string, locator buildpack.LocatorType, daemon bool) st

func buildpacksOutput(bps []dist.BuildpackInfo) (string, error) {
buf := &bytes.Buffer{}

tabWriter := new(tabwriter.Writer).Init(buf, writerMinWidth, writerPadChar, buildpacksTabWidth, writerPadChar, writerFlags)
if _, err := fmt.Fprint(tabWriter, " ID\tVERSION\tHOMEPAGE\n"); err != nil {
return "", err
}

for _, bp := range bps {
if _, err := fmt.Fprintf(tabWriter, " %s\t%s\t%s\n", bp.ID, bp.Version, bp.Homepage); err != nil {
if _, err := fmt.Fprintf(tabWriter, " %s\t%s\t%s\n", bp.ID, bp.Version, strs.ValueOrDefault(bp.Homepage, "-")); err != nil {
return "", err
}
}
Expand Down
6 changes: 5 additions & 1 deletion internal/commands/inspect_buildpack_test.go
Expand Up @@ -233,6 +233,10 @@ func testInspectBuildpackCommand(t *testing.T, when spec.G, it spec.S) {
Version: "0.0.1",
Homepage: "single-buildpack-homepage",
},
{
ID: "some/buildpack-no-homepage",
Version: "0.0.2",
},
},
Order: dist.Order{
{
Expand Down Expand Up @@ -266,7 +270,7 @@ func testInspectBuildpackCommand(t *testing.T, when spec.G, it spec.S) {
command = commands.InspectBuildpack(logger, cfg, mockClient)
})

when("InpectBuildpack", func() {
when("InspectBuildpack", func() {
when("inspecting an image", func() {
when("both remote and local image are present", func() {
it.Before(func() {
Expand Down
2 changes: 1 addition & 1 deletion internal/inspectimage/bom_display.go
Expand Up @@ -29,7 +29,7 @@ func NewBOMDisplay(info *pack.ImageInfo) []BOMEntryDisplay {
}

func displayBOM(bom []lifecycle.BOMEntry) []BOMEntryDisplay {
result := []BOMEntryDisplay{}
var result []BOMEntryDisplay
for _, entry := range bom {
result = append(result, BOMEntryDisplay{
Name: entry.Name,
Expand Down
11 changes: 6 additions & 5 deletions internal/inspectimage/info_display.go
Expand Up @@ -91,7 +91,7 @@ func displayBase(base lifecycle.RunImageMetadata) BaseDisplay {

func displayMirrors(info *pack.ImageInfo, generalInfo GeneralInfo) []RunImageMirrorDisplay {
// add all user configured run images, then add run images provided by info
result := []RunImageMirrorDisplay{}
var result []RunImageMirrorDisplay
if info == nil {
return result
}
Expand Down Expand Up @@ -127,18 +127,19 @@ func displayMirrors(info *pack.ImageInfo, generalInfo GeneralInfo) []RunImageMir
}

func displayBuildpacks(buildpacks []lifecycle.GroupBuildpack) []dist.BuildpackInfo {
result := []dist.BuildpackInfo{}
var result []dist.BuildpackInfo
for _, buildpack := range buildpacks {
result = append(result, dist.BuildpackInfo{
ID: buildpack.ID,
Version: buildpack.Version,
ID: buildpack.ID,
Version: buildpack.Version,
Homepage: buildpack.Homepage,
})
}
return result
}

func displayProcesses(details pack.ProcessDetails) []ProcessDisplay {
result := []ProcessDisplay{}
var result []ProcessDisplay
detailsArray := details.OtherProcesses
if details.DefaultProcess != nil {
result = append(result, convertToDisplay(*details.DefaultProcess, true))
Expand Down
4 changes: 2 additions & 2 deletions internal/inspectimage/writer/bom_json_test.go
Expand Up @@ -106,7 +106,7 @@ func testJSONBOM(t *testing.T, when spec.G, it spec.S) {
},
},
},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0"},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0", Homepage: "https://some-homepage"},
}}}

localInfo = &pack.ImageInfo{
Expand All @@ -121,7 +121,7 @@ func testJSONBOM(t *testing.T, when spec.G, it spec.S) {
},
},
},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0"},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0", Homepage: "https://some-homepage"},
}},
}

Expand Down
4 changes: 2 additions & 2 deletions internal/inspectimage/writer/bom_yaml_test.go
Expand Up @@ -92,7 +92,7 @@ remote:
},
},
},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0"},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0", Homepage: "https://some-homepage"},
}}}

localInfo = &pack.ImageInfo{
Expand All @@ -107,7 +107,7 @@ remote:
},
},
},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0"},
Buildpack: lifecycle.GroupBuildpack{ID: "test.bp.one.remote", Version: "1.0.0", Homepage: "https://some-homepage"},
}},
}

Expand Down
6 changes: 4 additions & 2 deletions internal/inspectimage/writer/human_readable.go
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/buildpacks/pack/internal/inspectimage"

"github.com/buildpacks/pack"
strs "github.com/buildpacks/pack/internal/strings"
"github.com/buildpacks/pack/internal/style"
"github.com/buildpacks/pack/logging"
)
Expand Down Expand Up @@ -56,6 +57,7 @@ func writeImageInfo(
) error {
imgTpl := template.Must(template.New("runImages").
Funcs(template.FuncMap{"StringsJoin": strings.Join}).
Funcs(template.FuncMap{"StringsValueOrDefault": strs.ValueOrDefault}).
Parse(runImagesTemplate))
imgTpl = template.Must(imgTpl.New("buildpacks").
Parse(buildpacksTemplate))
Expand Down Expand Up @@ -117,9 +119,9 @@ Run Images:
var buildpacksTemplate = `
Buildpacks:
{{- if .Info.Buildpacks }}
ID VERSION
ID VERSION HOMEPAGE
{{- range $_, $b := .Info.Buildpacks }}
{{ $b.ID }} {{ $b.Version }}
{{ $b.ID }} {{ $b.Version }} {{ StringsValueOrDefault $b.Homepage "-" }}
{{- end }}
{{- else }}
(buildpack metadata not present)
Expand Down

0 comments on commit 6d538b8

Please sign in to comment.