| 1234567891011121314151617181920212223242526272829 |
- package fsext
- import (
- "os"
- "strings"
- "mvdan.cc/sh/v3/expand"
- "mvdan.cc/sh/v3/syntax"
- )
- // Expand is a wrapper around [expand.Literal]. It will escape the input
- // string, expand any shell symbols (such as '~') and resolve any environment
- // variables.
- func Expand(s string) (string, error) {
- if s == "" {
- return "", nil
- }
- p := syntax.NewParser()
- word, err := p.Document(strings.NewReader(s))
- if err != nil {
- return "", err
- }
- cfg := &expand.Config{
- Env: expand.FuncEnviron(os.Getenv),
- ReadDir2: os.ReadDir,
- GlobStar: true,
- }
- return expand.Literal(cfg, word)
- }
|