summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
4110993)
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
// NewSyncThing creates a new instance of Syncthing
func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing {
var url, apiKey, home, binDir string
// NewSyncThing creates a new instance of Syncthing
func NewSyncThing(conf *xdsconfig.Config, log *logrus.Logger) *SyncThing {
var url, apiKey, home, binDir string
stCfg := conf.FileConf.SThgConf
if stCfg != nil {
stCfg := conf.FileConf.SThgConf
if stCfg != nil {
- home = "/mnt/share"
- }
-
- if binDir == "" {
- if binDir, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil {
- binDir = "/usr/local/bin"
- }
+ panic("home parameter must be set")
// Start Starts syncthing process
func (s *SyncThing) startProc(exeName string, args []string, env []string, eChan *chan ExitChan) (*exec.Cmd, error) {
// Start Starts syncthing process
func (s *SyncThing) startProc(exeName string, args []string, env []string, eChan *chan ExitChan) (*exec.Cmd, error) {
+ var err error
+ var exePath string
// Kill existing process (useful for debug ;-) )
if os.Getenv("DEBUG_MODE") != "" {
// Kill existing process (useful for debug ;-) )
if os.Getenv("DEBUG_MODE") != "" {
// When not set (or set to '.') set bin to path of xds-agent executable
bdir := s.binDir
if bdir == "" || bdir == "." {
// When not set (or set to '.') set bin to path of xds-agent executable
bdir := s.binDir
if bdir == "" || bdir == "." {
- if dir, err := filepath.Abs(filepath.Dir(os.Args[0])); err == nil {
- bdir = dir
+ exe, _ := os.Executable()
+ if exeAbsPath, err := filepath.Abs(exe); err == nil {
+ if exePath, err := filepath.EvalSymlinks(exeAbsPath); err == nil {
+ bdir = filepath.Dir(exePath)
+ }
- path, err := exec.LookPath(path.Join(bdir, exeName))
+ exePath, err = exec.LookPath(path.Join(bdir, exeName))
- return nil, fmt.Errorf("Cannot find %s executable in %s", exeName, bdir)
+ // Let's try in /opt/AGL/bin
+ exePath, err = exec.LookPath(path.Join("opt", "AGL", "bin", exeName))
+ if err != nil {
+ return nil, fmt.Errorf("Cannot find %s executable in %s", exeName, bdir)
+ }
- cmd := exec.Command(path, args...)
+ cmd := exec.Command(exePath, args...)
cmd.Env = os.Environ()
for _, ev := range env {
cmd.Env = append(cmd.Env, ev)
cmd.Env = os.Environ()
for _, ev := range env {
cmd.Env = append(cmd.Env, ev)
}
// Support environment variables (IOW ${MY_ENV_VAR} syntax) in agent-config.json
}
// Support environment variables (IOW ${MY_ENV_VAR} syntax) in agent-config.json
- for _, field := range []*string{
- &fCfg.SThgConf.Home,
- &fCfg.SThgConf.BinDir} {
-
+ }
+ if fCfg.SThgConf != nil {
+ vars = append(vars, &fCfg.SThgConf.Home, &fCfg.SThgConf.BinDir)
+ }
+ for _, field := range vars {
var err error
*field, err = common.ResolveEnvVar(*field)
if err != nil {
var err error
*field, err = common.ResolveEnvVar(*field)
if err != nil {