github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/payload/context/utils.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package context
     5  
     6  import (
     7  	"os"
     8  	"path/filepath"
     9  
    10  	"github.com/juju/cmd"
    11  	"github.com/juju/errors"
    12  	"gopkg.in/juju/charm.v6"
    13  )
    14  
    15  type componentHookFunction func() (Component, error)
    16  
    17  func componentHookContext(ctx HookContext) componentHookFunction {
    18  	return func() (Component, error) {
    19  		compCtx, err := ContextComponent(ctx)
    20  		if err != nil {
    21  			// The component wasn't tracked properly.
    22  			return nil, errors.Trace(err)
    23  		}
    24  		return compCtx, nil
    25  	}
    26  }
    27  
    28  func readMetadata(ctx *cmd.Context) (*charm.Meta, error) {
    29  	filename := filepath.Join(ctx.Dir, "metadata.yaml")
    30  	file, err := os.Open(filename)
    31  	if err != nil {
    32  		return nil, errors.Trace(err)
    33  	}
    34  	defer file.Close()
    35  	meta, err := charm.ReadMeta(file)
    36  	if err != nil {
    37  		return nil, errors.Trace(err)
    38  	}
    39  
    40  	return meta, nil
    41  }