github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/plugins/juju-metadata/metadata.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package main 5 6 import ( 7 "fmt" 8 "os" 9 10 "github.com/juju/cmd" 11 "github.com/juju/loggo" 12 13 "github.com/juju/juju/cmd/envcmd" 14 "github.com/juju/juju/juju" 15 _ "github.com/juju/juju/provider/all" 16 ) 17 18 var logger = loggo.GetLogger("juju.plugins.metadata") 19 20 var metadataDoc = ` 21 Juju metadata is used to find the correct image and tools when bootstrapping a 22 Juju environment. 23 ` 24 25 // Main registers subcommands for the juju-metadata executable, and hands over control 26 // to the cmd package. This function is not redundant with main, because it 27 // provides an entry point for testing with arbitrary command line arguments. 28 func Main(args []string) { 29 ctx, err := cmd.DefaultContext() 30 if err != nil { 31 fmt.Fprintf(os.Stderr, "error: %v\n", err) 32 os.Exit(2) 33 } 34 if err := juju.InitJujuHome(); err != nil { 35 fmt.Fprintf(os.Stderr, "error: %s\n", err) 36 os.Exit(2) 37 } 38 metadatacmd := cmd.NewSuperCommand(cmd.SuperCommandParams{ 39 Name: "metadata", 40 UsagePrefix: "juju", 41 Doc: metadataDoc, 42 Purpose: "tools for generating and validating image and tools metadata", 43 Log: &cmd.Log{}}) 44 45 metadatacmd.Register(envcmd.Wrap(&ValidateImageMetadataCommand{})) 46 metadatacmd.Register(envcmd.Wrap(&ImageMetadataCommand{})) 47 metadatacmd.Register(envcmd.Wrap(&ToolsMetadataCommand{})) 48 metadatacmd.Register(envcmd.Wrap(&ValidateToolsMetadataCommand{})) 49 metadatacmd.Register(&SignMetadataCommand{}) 50 metadatacmd.Register(envcmd.Wrap(&ListImagesCommand{})) 51 metadatacmd.Register(envcmd.Wrap(&AddImageMetadataCommand{})) 52 53 os.Exit(cmd.Main(metadatacmd, ctx, args[1:])) 54 } 55 56 func main() { 57 Main(os.Args) 58 }