function includeFile(path, options) {
  var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);
  opts.filename = getIncludePath(path, opts);
  if (typeof options.includer === 'function') {
    var includerResult = options.includer(path, opts.filename);
    if (includerResult) {
      if (includerResult.filename) {
        opts.filename = includerResult.filename;
      }
      if (includerResult.template) {
        return handleCache(opts, includerResult.template);
      }
    }
  }
  return handleCache(opts);
}
Get the template function.

If `options.cache` is `true`, then the template is cached.

@memberof module:ejs-internal
@param {String}  path    path for the specified file
@param {Options} options compilation options
@return {(TemplateFunction|ClientFunction)}
Depending on the value of `options.client`, either type might be returned
@static