docs: def render(args):
      """
      Render a site.
  
      :param args:
          A map from command-line options to their values. For example:
  
              {
                  '--help': False,
                  '--outpath': None,
                  '--srcpath': None,
                  '--static': None,
                  '--version': False,
                  'build': True,
                  'watch': False
              }
      """
      srcpath = (
          os.path.join(os.getcwd(), 'templates') if args['--srcpath'] is None
          else args['--srcpath'] if os.path.isabs(args['--srcpath'])
          else os.path.join(os.getcwd(), args['--srcpath'])
      )
  
      if not os.path.isdir(srcpath):
          print("The templates directory '%s' is invalid."
                % srcpath)
          sys.exit(1)
  
      if args['--outpath'] is not None:
          outpath = args['--outpath']
      else:
          outpath = os.getcwd()
  
      if not os.path.isdir(outpath):
          print("The output directory '%s' is invalid."
                % outpath)
          sys.exit(1)
  
      staticdirs = args['--static']
      staticpaths = None
  
      if staticdirs:
          staticpaths = staticdirs.split(",")
          for path in staticpaths:
              path = os.path.join(srcpath, path)
              if not os.path.isdir(path):
                  print("The static files directory '%s' is invalid." % path)
                  sys.exit(1)
  
      site = staticjinja.make_site(
          searchpath=srcpath,
          outpath=outpath,
          staticpaths=staticpaths
      )
  
      use_reloader = args['watch']
  
      site.render(use_reloader=use_reloader)