1 changed files with 43 additions and 0 deletions
@ -0,0 +1,43 @@
|
||||
// Package envexp provides environment variable expansion using sh syntax
|
||||
package envexp |
||||
|
||||
import ( |
||||
"os" |
||||
) |
||||
|
||||
// A VarGetter is a function that for a given paramenter
|
||||
// returns a string representing its value
|
||||
type VarGetter func(key string) string |
||||
|
||||
// A Expander is an object that you can use to Expand strings
|
||||
type Expander interface { |
||||
Expand(s string) string |
||||
} |
||||
|
||||
type expander struct { |
||||
get VarGetter |
||||
} |
||||
|
||||
// NewExpander allocates a new Expander using a
|
||||
// given VarGetter, or os.Getenv if none is given
|
||||
func NewExpander(f VarGetter) Expander { |
||||
if f == nil { |
||||
f = os.Getenv |
||||
} |
||||
|
||||
return &expander{ |
||||
get: f, |
||||
} |
||||
} |
||||
|
||||
// Get resolves a variable name as the given Expander
|
||||
// would do
|
||||
func (exp *expander) Get(key string) string { |
||||
return exp.get(key) |
||||
} |
||||
|
||||
// Expand expands a string using the VarGetter
|
||||
// defined for the given Expander
|
||||
func (exp *expander) Expand(s string) string { |
||||
return s |
||||
} |
Loading…
Reference in new issue