launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/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/loggo/loggo" 11 12 "launchpad.net/juju-core/cmd" 13 "launchpad.net/juju-core/juju" 14 _ "launchpad.net/juju-core/provider/all" 15 ) 16 17 var logger = loggo.GetLogger("juju.plugins.metadata") 18 19 var metadataDoc = ` 20 Juju metadata is used to find the correct image and tools when bootstrapping a 21 Juju environment. 22 ` 23 24 // Main registers subcommands for the juju-metadata executable, and hands over control 25 // to the cmd package. This function is not redundant with main, because it 26 // provides an entry point for testing with arbitrary command line arguments. 27 func Main(args []string) { 28 if err := juju.InitJujuHome(); err != nil { 29 fmt.Fprintf(os.Stderr, "error: %s\n", err) 30 os.Exit(2) 31 } 32 metadatacmd := cmd.NewSuperCommand(cmd.SuperCommandParams{ 33 Name: "metadata", 34 UsagePrefix: "juju", 35 Doc: metadataDoc, 36 Purpose: "tools for generating and validating image and tools metadata", 37 Log: &cmd.Log{}}) 38 39 metadatacmd.Register(&ValidateImageMetadataCommand{}) 40 metadatacmd.Register(&ImageMetadataCommand{}) 41 metadatacmd.Register(&ToolsMetadataCommand{}) 42 metadatacmd.Register(&ValidateToolsMetadataCommand{}) 43 metadatacmd.Register(&SignMetadataCommand{}) 44 45 os.Exit(cmd.Main(metadatacmd, cmd.DefaultContext(), args[1:])) 46 } 47 48 func main() { 49 Main(os.Args) 50 }