github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/cmd/docker-app/validate.go (about)

     1  package main
     2  
     3  import (
     4  	"github.com/docker/app/internal/packager"
     5  	"github.com/docker/app/render"
     6  	"github.com/docker/app/types"
     7  	"github.com/docker/cli/cli"
     8  	cliopts "github.com/docker/cli/opts"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  var (
    13  	validateSettingsFile []string
    14  	validateEnv          []string
    15  )
    16  
    17  func validateCmd() *cobra.Command {
    18  	cmd := &cobra.Command{
    19  		Use:   "validate [<app-name>] [-s key=value...] [-f settings-file...]",
    20  		Short: "Checks the rendered application is syntactically correct",
    21  		Args:  cli.RequiresMaxArgs(1),
    22  		RunE: func(cmd *cobra.Command, args []string) error {
    23  			app, err := packager.Extract(firstOrEmpty(args),
    24  				types.WithSettingsFiles(validateSettingsFile...),
    25  			)
    26  			if err != nil {
    27  				return err
    28  			}
    29  			defer app.Cleanup()
    30  			argSettings := cliopts.ConvertKVStringsToMap(validateEnv)
    31  			_, err = render.Render(app, argSettings)
    32  			return err
    33  		},
    34  	}
    35  	cmd.Flags().StringArrayVarP(&validateSettingsFile, "settings-files", "f", []string{}, "Override settings files")
    36  	cmd.Flags().StringArrayVarP(&validateEnv, "set", "s", []string{}, "Override settings values")
    37  	return cmd
    38  }