2015-04-29 10:32:12 +00:00
|
|
|
package control
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"os/exec"
|
|
|
|
"syscall"
|
|
|
|
|
|
|
|
"github.com/codegangsta/cli"
|
2015-10-12 11:50:17 +00:00
|
|
|
"github.com/rancher/os/config"
|
|
|
|
"github.com/rancher/os/util"
|
2015-04-29 10:32:12 +00:00
|
|
|
)
|
|
|
|
|
2016-05-17 03:36:08 +00:00
|
|
|
func envAction(c *cli.Context) error {
|
2016-06-02 01:41:55 +00:00
|
|
|
cfg := config.LoadConfig()
|
2015-04-29 10:32:12 +00:00
|
|
|
|
|
|
|
args := c.Args()
|
2015-08-05 23:11:22 +00:00
|
|
|
if len(args) == 0 {
|
2016-05-17 03:36:08 +00:00
|
|
|
return nil
|
2015-08-05 23:11:22 +00:00
|
|
|
}
|
2015-04-29 10:32:12 +00:00
|
|
|
osEnv := os.Environ()
|
|
|
|
|
2015-07-29 06:52:15 +00:00
|
|
|
envMap := make(map[string]string, len(cfg.Rancher.Environment)+len(osEnv))
|
|
|
|
for k, v := range cfg.Rancher.Environment {
|
2015-04-29 10:32:12 +00:00
|
|
|
envMap[k] = v
|
|
|
|
}
|
|
|
|
for k, v := range util.KVPairs2Map(osEnv) {
|
|
|
|
envMap[k] = v
|
|
|
|
}
|
|
|
|
|
|
|
|
if cmd, err := exec.LookPath(args[0]); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
} else {
|
|
|
|
args[0] = cmd
|
|
|
|
}
|
|
|
|
if err := syscall.Exec(args[0], args, util.Map2KVPairs(envMap)); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2016-05-17 03:36:08 +00:00
|
|
|
|
|
|
|
return nil
|
2015-04-29 10:32:12 +00:00
|
|
|
}
|