docs: def cli():
      """Command line tool."""
      parser = argparse.ArgumentParser()
      parser.add_argument('api', help="""
          API to call.
          One one of 'article', 'frontpage', 'product', 'image', 'analyze', or
          'discussion'.
      """)
      parser.add_argument('url', help="""
          URL to pass as the 'url' parameter.
      """)
      parser.add_argument('token', help="""
          API key (token).
          Get one at https://www.diffbot.com/.
      """)
      parser.add_argument('-a', '--all', help="""
          Request all fields.
      """, action='store_true')
      parser.add_argument('-f', '--file', help="""
          File to read data from.
          Use '-' to read from STDIN.
      """)
      fields = text = html = None
      _args = parser.parse_args()
      if _args.all:
          fields = '*'
      if _args.file == '-':
          text = sys.stdin.read()
      elif _args.file:
          with open(_args.file, 'rb') as src:
              if os.path.splitext(_args.file)[1] in ('.html', '.htm'):
                  html = src.read().decode(ENCODING)
              else:
                  text = src.read().decode(ENCODING)
      print(json.dumps((api(_args.api, _args.url, _args.token,
                            html=html or None,
                            text=text or None,
                            fields=fields)),
                       sort_keys=True,
                       indent=2))