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  }