docs: def addinfo(self):
          """ Add known facts to templating namespace.
          """
          # Basic values
          self.ns.watch_path = self.job.config.path
          self.ns.relpath = None
          for watch in self.job.config.path:
              if self.ns.pathname.startswith(watch.rstrip('/') + '/'):
                  self.ns.relpath = os.path.dirname(self.ns.pathname)[len(watch.rstrip('/'))+1:]
                  break
  
          # Build indicator flags for target state from filename
          flags = self.ns.pathname.split(os.sep)
          flags.extend(flags[-1].split('.'))
          self.ns.flags = set(i for i in flags if i)
  
          # Metafile stuff
          announce = self.metadata.get("announce", None)
          if announce:
              self.ns.tracker_alias = configuration.map_announce2alias(announce)
  
          main_file = self.ns.info_name
          if "files" in self.metadata["info"]:
              main_file = list(sorted((i["length"], i["path"][-1])
                  for i in self.metadata["info"]["files"]))[-1][1]
          self.ns.filetype = os.path.splitext(main_file)[1]
  
          # Add name traits
          kind, info = traits.name_trait(self.ns.info_name, add_info=True)
          self.ns.traits = Bunch(info)
          self.ns.traits.kind = kind
          self.ns.label = '/'.join(traits.detect_traits(
              name=self.ns.info_name, alias=self.ns.tracker_alias, filetype=self.ns.filetype)).strip('/')
  
          # Finally, expand commands from templates
          self.ns.commands = []
          for key, cmd in sorted(self.job.custom_cmds.items()):
              try:
                  self.ns.commands.append(formatting.expand_template(cmd, self.ns))
              except error.LoggableError as exc:
                  self.job.LOG.error("While expanding '%s' custom command: %s" % (key, exc))