@@ -21,41 +21,58 @@ import (
2121
2222var inspectDetails bool
2323var inspectManifest string
24+ var inspectConfig string
2425
2526func init () {
2627 inspectCmd .Flags ().BoolVarP (& inspectDetails , "details" , "D" , false , "Show additional details on package content" )
2728 inspectCmd .Flags ().StringVarP (& inspectManifest , "manifest" , "m" , "" , "Dump the contents of the specified manifest" )
29+ inspectCmd .Flags ().StringVarP (& inspectConfig , "config" , "c" , "" , "Dump the contents of the specified config file" )
2830
2931 inspectCmd .RegisterFlagCompletionFunc ("manifest" , completeManifests )
32+ inspectCmd .RegisterFlagCompletionFunc ("config" , completeConfigs )
3033
3134 rootCmd .AddCommand (inspectCmd )
3235}
3336
3437func completeManifests (cmd * cobra.Command , args []string , toComplete string ) ([]string , cobra.ShellCompDirective ) {
3538 log .Verbose = false
39+ pkg , err := getInspectPackage (args [0 ])
40+ if err != nil {
41+ return nil , cobra .ShellCompDirectiveError
42+ }
43+ defer pkg .Close ()
44+ manifest := pkg .GetMeta ().GetManifest ()
45+ return manifest .K8sManifests , cobra .ShellCompDirectiveDefault
46+ }
47+
48+ func completeConfigs (cmd * cobra.Command , args []string , toComplete string ) ([]string , cobra.ShellCompDirective ) {
49+ log .Verbose = false
50+ pkg , err := getInspectPackage (args [0 ])
51+ if err != nil {
52+ return nil , cobra .ShellCompDirectiveError
53+ }
54+ defer pkg .Close ()
55+ manifest := pkg .GetMeta ().GetManifest ()
56+ return manifest .Etc , cobra .ShellCompDirectiveDefault
57+ }
3658
59+ func getInspectPackage (path string ) (types.Package , error ) {
3760 var pkgReader io.ReadCloser
3861 var err error
3962
40- pkgReader , err = os .Open (args [ 0 ] )
63+ pkgReader , err = os .Open (path )
4164 if err != nil {
42- return nil , cobra . ShellCompDirectiveError
65+ return nil , err
4366 }
4467
45- if strings .HasSuffix (args [ 0 ] , ".zst" ) {
68+ if strings .HasSuffix (path , ".zst" ) {
4669 pkgReader , err = v1 .Decompress (pkgReader )
4770 if err != nil {
48- return nil , cobra . ShellCompDirectiveError
71+ return nil , err
4972 }
5073 }
5174
52- pkg , err := v1 .Load (pkgReader )
53- if err != nil {
54- return nil , cobra .ShellCompDirectiveError
55- }
56- defer pkg .Close ()
57- manifest := pkg .GetMeta ().GetManifest ()
58- return manifest .K8sManifests , cobra .ShellCompDirectiveDefault
75+ return v1 .Load (pkgReader )
5976}
6077
6178var inspectCmd = & cobra.Command {
@@ -66,22 +83,7 @@ var inspectCmd = &cobra.Command{
6683 return []string {"tar" }, cobra .ShellCompDirectiveFilterFileExt
6784 },
6885 RunE : func (cmd * cobra.Command , args []string ) error {
69- var pkgReader io.ReadCloser
70- var err error
71-
72- pkgReader , err = os .Open (args [0 ])
73- if err != nil {
74- return err
75- }
76-
77- if strings .HasSuffix (args [0 ], ".zst" ) {
78- pkgReader , err = v1 .Decompress (pkgReader )
79- if err != nil {
80- return err
81- }
82- }
83-
84- pkg , err := v1 .Load (pkgReader )
86+ pkg , err := getInspectPackage (args [0 ])
8587 if err != nil {
8688 return err
8789 }
@@ -106,6 +108,23 @@ var inspectCmd = &cobra.Command{
106108 return nil
107109 }
108110
111+ if inspectConfig != "" {
112+ artifact := & types.Artifact {
113+ Type : types .ArtifactEtc ,
114+ Name : inspectConfig ,
115+ }
116+ if err := pkg .Get (artifact ); err != nil {
117+ return err
118+ }
119+ defer artifact .Body .Close ()
120+ body , err := ioutil .ReadAll (artifact .Body )
121+ if err != nil {
122+ return err
123+ }
124+ fmt .Println (string (body ))
125+ return nil
126+ }
127+
109128 fmt .Println ()
110129 fmt .Println ("NAME: " , meta .Name )
111130 fmt .Println ("VERSION:" , meta .Version )
0 commit comments