1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
package cmd
import (
"fmt"
"os"
)
// CmdApplyDump is `direnv apply_dump FILE`
var CmdApplyDump = &Cmd{
Name: "apply_dump",
Desc: "Accepts a filename containing `direnv dump` output and generates a series of bash export statements to apply the given env",
Args: []string{"FILE"},
Private: true,
Action: actionSimple(cmdApplyDumpAction),
}
func cmdApplyDumpAction(env Env, args []string) (err error) {
if len(args) < 2 {
return fmt.Errorf("not enough arguments")
}
if len(args) > 2 {
return fmt.Errorf("too many arguments")
}
filename := args[1]
dumped, err := os.ReadFile(filename)
if err != nil {
return err
}
dumpedEnv, err := LoadEnv(string(dumped))
if err != nil {
return err
}
diff := env.Diff(dumpedEnv)
exports, err := diff.ToShell(Bash)
if err != nil {
return err
}
_, err = fmt.Println(exports)
if err != nil {
return err
}
return
}
|