docs: def register_metas(self):
          """register metas"""
  
          # concatenate some attributes to global lists:
          aggregated = {'build': [], 'watch': []}
          for attribute, values in aggregated.items():
              for info in self.info['analyses'] + [self.info]:
                  if attribute in info:
                      values.append(info[attribute])
  
          for meta in self.metas:
              log.debug('Registering meta information {}'.format(meta.name))
  
              # grab routes
              self.routes += [(r'/{}/{}'.format(meta.name, route),
                               handler, data)
                              for route, handler, data in meta.routes]
  
          # process files to watch for autoreload
          if aggregated['watch']:
              to_watch = [expr for w in aggregated['watch'] for expr in w]
              log.info('watching additional files: {}'.format(to_watch))
  
              cwd = os.getcwd()
              os.chdir(self.analyses_path)
              if glob2:
                  files = [os.path.join(self.analyses_path, fn)
                           for expr in to_watch for fn in glob2.glob(expr)]
              else:
                  files = [os.path.join(self.analyses_path, fn)
                           for expr in to_watch for fn in glob.glob(expr)]
                  if any('**' in expr for expr in to_watch):
                      log.warning('Please run "pip install glob2" to properly '
                                  'process watch patterns with "**".')
              os.chdir(cwd)
  
              for fn in files:
                  log.debug('watch file {}'.format(fn))
                  tornado.autoreload.watch(fn)
  
          # save build commands
          self.build_cmds = aggregated['build']