code: def cache_man_page(self, source, url, name):
          
          # Skip if already exists, override if forced flag is true
          outname = self.get_page_path(source, name)
          if os.path.exists(outname) and not self.forced:
              return
  
          try:
              os.makedirs(os.path.join(environ.cache_dir, source))
          except OSError:
              pass
  
          # There are often some errors in the HTML, for example: missing closing
          # tag. We use fixupHTML to fix this.
          data = util.fixupHTML(urllib.request.urlopen(url).read())
  
          formatter = importlib.import_module('cppman.formatter.%s' % source[:-4])
          groff_text = formatter.html2groff(data, name)
  
          with gzip.open(outname, 'w') as f:
              f.write(groff_text.encode('utf-8'))
docs: callback to cache new man page