func findAndReadFile()

in pkg/handlerenv/handlerenv.go [101:128]


func findAndReadFile(fileName string) (b []byte, fileLoc string, _ error) {
	dir, err := utils.GetCurrentProcessWorkingDir()
	if err != nil {
		return nil, "", fmt.Errorf("vmextension: cannot find base directory of the running process: %v", err)
	}

	paths := []string{
		filepath.Join(dir, fileName),       // this level (i.e. executable is in [EXT_NAME]/.)
		filepath.Join(dir, "..", fileName), // one up (i.e. executable is in [EXT_NAME]/bin/.)
	}

	for _, p := range paths {
		o, err := ioutil.ReadFile(p)
		if err != nil && !os.IsNotExist(err) {
			return nil, "", fmt.Errorf("vmextension: error examining '%s' at '%s': %v", fileName, p, err)
		} else if err == nil {
			fileLoc = p
			b = o
			break
		}
	}

	if b == nil {
		return nil, "", extensionerrors.ErrNotFound
	}

	return b, fileLoc, nil
}