From 28f947d2b9c6a9069cf7c59a833d3647875e4707 Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Sun, 22 Mar 2009 19:18:27 +0000 Subject: [PATCH] added support for overriding settings from command line arguments, as suggested by Mark Ellul --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%401008 --- scrapy/trunk/scrapy/command/models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scrapy/trunk/scrapy/command/models.py b/scrapy/trunk/scrapy/command/models.py index b4e247d4b..0c10b8b42 100644 --- a/scrapy/trunk/scrapy/command/models.py +++ b/scrapy/trunk/scrapy/command/models.py @@ -2,6 +2,7 @@ Base class for Scrapy commands """ import os +import sys from scrapy.conf import settings class ScrapyCommand(object): @@ -44,6 +45,8 @@ class ScrapyCommand(object): parser.add_option("--nolog", dest="nolog", action="store_true", help="disable all log messages") parser.add_option("--profile", dest="profile", default=None, help="write profiling stats in FILE, to analyze later with: python -m pstats FILE", metavar="FILE") parser.add_option("--pidfile", dest="pidfile", help="Write process pid to file FILE", metavar="FILE") + parser.add_option("--set", dest="settings", action="append", metavar="SETTING:VALUE", default=[], + help="Override Scrapy setting SETTING with VALUE") def process_options(self, args, opts): if opts.logfile: @@ -69,6 +72,14 @@ class ScrapyCommand(object): pid = os.getpid() open(opts.pidfile, "w").write(str(pid)) + for setting in opts.settings: + if ':' in setting: + name, val = setting.split(':') + settings.overrides[name] = val + else: + sys.stderr.write("%s: invalid argument --set=%s - proper format is -set=SETTING:VALUE'\n" % (sys.argv[0], setting)) + sys.exit(2) + def run(self, args, opts): """ Entry point for running commands