github.com/flanksource/konfigadm@v0.12.0/cmd/minify.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	log "github.com/sirupsen/logrus"
     7  
     8  	"github.com/spf13/cobra"
     9  	"gopkg.in/flanksource/yaml.v3"
    10  )
    11  
    12  var primitive bool
    13  var bash bool
    14  var (
    15  	Minify = cobra.Command{
    16  		Use:   "minify",
    17  		Short: "Resolve all lookups and dependencies and export a single config file",
    18  		Args:  cobra.MinimumNArgs(0),
    19  		Run: func(cmd *cobra.Command, args []string) {
    20  			cfg := GetConfig(cmd, args)
    21  			fs, commands, err := cfg.ApplyPhases()
    22  			if err != nil {
    23  				log.Fatalf("Error applying phases %s\n", err)
    24  			}
    25  
    26  			if primitive {
    27  				data, _ := yaml.Marshal(map[string]interface{}{
    28  					"filesystem": fs,
    29  					"commands":   commands,
    30  				})
    31  				fmt.Println(string(data))
    32  			} else if bash {
    33  				if out, err := cfg.ToBash(); err != nil {
    34  					log.Fatalf("Error converting to bas: %v", err)
    35  				} else {
    36  					fmt.Println(out)
    37  				}
    38  			} else {
    39  				data, _ := yaml.Marshal(cfg)
    40  				fmt.Println(string(data))
    41  
    42  			}
    43  		},
    44  	}
    45  )
    46  
    47  func init() {
    48  	Minify.Flags().BoolVar(&primitive, "primitive", false, "Minify down to primitive level of commands and files only")
    49  	Minify.Flags().BoolVar(&bash, "bash", false, "Export a single bash file with base64 encoded files")
    50  }