edit.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import sys
  2. import os
  3. from scrapy.commands import ScrapyCommand
  4. from scrapy.exceptions import UsageError
  5. class Command(ScrapyCommand):
  6. requires_project = True
  7. default_settings = {'LOG_ENABLED': False}
  8. def syntax(self):
  9. return "<spider>"
  10. def short_desc(self):
  11. return "Edit spider"
  12. def long_desc(self):
  13. return ("Edit a spider using the editor defined in the EDITOR environment"
  14. " variable or else the EDITOR setting")
  15. def _err(self, msg):
  16. sys.stderr.write(msg + os.linesep)
  17. self.exitcode = 1
  18. def run(self, args, opts):
  19. if len(args) != 1:
  20. raise UsageError()
  21. editor = self.settings['EDITOR']
  22. try:
  23. spidercls = self.crawler_process.spider_loader.load(args[0])
  24. except KeyError:
  25. return self._err("Spider not found: %s" % args[0])
  26. sfile = sys.modules[spidercls.__module__].__file__
  27. sfile = sfile.replace('.pyc', '.py')
  28. self.exitcode = os.system('%s "%s"' % (editor, sfile))