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  }