code: async function register(server, options) {
      const validation = validateOptions(options);
  
      if (validation.error) {
          throw validation.error;
      }
  
      const {
          components,
          handlebars,
          helpersPath,
          path,
          uriContext,
          routes,
          rootDir
      } = validation.value;
  
  
      server.log(['info', 'windshield'], "application directory identified as: " + rootDir);
  
      server.views({
          engines: {html: handlebars},
          relativeTo: rootDir,
          path,
          helpersPath
      });
  
      const componentMap = ComponentMap(components);
  
      const hapiHandler = handlerComposer(componentMap);
      const hapiRoutes = processRoutes(hapiHandler, uriContext, routes);
      server.route(hapiRoutes);
      templateInit(handlebars);
  
      return componentMap.init(handlebars);
  }
docs: @async
  
  @param {Server} server             - the Hapi server object the plugin is being registered to.
  @param {WindshieldOptions} options - an object passed to the plugin during registration.
  
  @returns {Promise.<null>}