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 }