sbsv2/raptor/python/raptor_cli.py
changeset 3 e1eecf4d390d
parent 0 044383f39525
child 5 593a8820b912
--- a/sbsv2/raptor/python/raptor_cli.py	Wed Oct 28 14:39:48 2009 +0000
+++ b/sbsv2/raptor/python/raptor_cli.py	Mon Nov 16 09:46:46 2009 +0000
@@ -1,320 +1,320 @@
-#
-# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of the License "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-# raptor_cli module
-# This module represents a Command Line Interpreter (CLI) for Raptor.
-# The interface with Raptor is the GetArgs() function, which is called
-# by a raptor.Raptor object.
-#
-
-import re
-import types
-import raptor
-import os
-import sys
-import tempfile
-from raptor_utilities import getOSPlatform
-
-from optparse import OptionParser # for parsing command line parameters
-
-fullCommandOption = "--command"
-miniCommandOption = "--co"  # update this if another "co" option is added
-
-# raptor_cli module attributes
-
-parser = OptionParser(prog = raptor.name,
-					  usage = """%prog [--help] [options] [variable=value] [target] ...
-
-Targets:
-
-BITMAP         Create bitmap files
-CLEAN          Remove built files and intermediates, but not exported files
-CLEANEXPORT    Remove exported files
-EXPORT         Copy exported files to destinations
-FINAL          Allow extension makefiles to execute final commands
-FREEZE         Freeze exported functions in a .DEF file
-LIBRARY        Create import libraries from frozen .DEF files
-LISTING        Create assembler listing files for source files
-REALLYCLEAN    Same as CLEAN but also remove exported files
-RESOURCE       Create resource files and AIFs
-ROMFILE        Create an IBY file to be included in a ROM
-TARGET         Create main executables
-WHAT           List all releaseable targets
-
-Examples:
-
-sbs -b my/group/bld.inf -c armv5        # build my component for target ARMV5
-sbs -b my/group/bld.inf -c armv5.test   # build my tests for target ARMV5
-
-sbs -c winscw CLEAN                     # clean emulator files
-sbs REALLYCLEAN                         # delete everything""")
-
-parser.add_option("-a","--sysdefbase",action="store",dest="sys_def_base",
-				help="Root directory for relative paths in the System Definition XML file.")
-
-parser.add_option("-b","--bldinf",action="append",dest="bld_inf_file",
-				help="Build information filename. Multiple -b options can be given.")
-
-parser.add_option("-c","--config",action="append",dest="config_name",
-				help="Configuration name to build. Multiple -c options can be given. The standard configs are all, armv5, armv7, default, tools, tools2 and winscw.")
-
-parser.add_option("--configpath", action="append",dest="config_list",
-				help="Append a list of paths to the default list of XML configuration folders. Use ';' as the separator on Windows, and ':' on Linux. Multiple --configpath options can be given.")
-
-parser.add_option("--check",action="store_true",dest="check",
-				help="Test for the existence of files created by the build, printing the ones which are missing. Do not build anything.")
-
-parser.add_option("--command",action="append",dest="command_file",
-				help="Provide a set of command-line options in a file.")
-
-parser.add_option("-d","--debug",action="store_true",dest="debugoutput",
-				help="Display information useful for debugging.")
-
-parser.add_option("-e","--engine",action="store",dest="make_engine",
-				help="Name of the make engine which runs the build.")
-
-parser.add_option("--export-only",action="store_true",dest="doExportOnly",
-				help="Generate exports only and do not create any make files.")
-
-parser.add_option("-f","--logfile",action="store",dest="logfile",
-				help="Name of the log file, or '-' for stdout.")
-
-parser.add_option("--filters",action="store",dest="filter_list",
-				help="Comma-separated list of names of the filters to use (case sensitive).")
-
-parser.add_option("-i","--ignore-os-detection",action="store_true",dest="ignore_os_detection",
-				help="Disables automatic application of OS variant based upon the OS version detected from each epoc32 tree.")
-
-parser.add_option("-j","--jobs",action="store",dest="number_of_jobs",
-                help="The maximum number of jobs that make should try and run in parallel (on a single machine).")
-
-parser.add_option("-k","--keepgoing",action="store_true",dest="keepgoing",
-				help="Continue building, even if some build commands fail.")
-
-parser.add_option("-l","--layer",action="append",dest="sys_def_layer",
-                help="Build a specific layer in the System Definition XML File. Multiple -l options can be given.")
-
-parser.add_option("-m","--makefile",action="store",dest="makefile",
-				help="Top-level makefile to be created.")
-
-parser.add_option("--mo",action="append",dest="make_option",
-				help="Option that must be passed through to the make engine. Multiple --mo options can be given.")
-
-parser.add_option("-n","--nobuild",action="store_true",dest="nobuild",
-				help="Just create makefiles, do not build anything.")
-
-parser.add_option("--no-depend-include",action="store_true",dest="noDependInclude",
-				help="Do not include generated dependency files. This is only useful for extremely large non-incremental builds.")
-				
-parser.add_option("-o","--orderlayers",action="store_true",dest="sys_def_order_layers",
-				help="Build layers in the System Definition XML file in the order listed or, if given, in the order of -l options.")
-
-parser.add_option("-p","--project",action="append",dest="project_name",
-                help="Build a specific project (mmp or extension) in the given bld.inf file. Multiple -p options can be given.")
-
-parser.add_option("-q","--quiet",action="store_true",dest="quiet",
-				help="Run quietly, not generating output messages.")
-
-parser.add_option("-s","--sysdef",action="store",dest="sys_def_file",
-				help="System Definition XML filename.")
-
-parser.add_option("--source-target",action="append",dest="source_target",
-				help="Build the listed source or resource file in isolation - do not perform any dependent processing. Multiple --source-target options can be given.")
-
-parser.add_option("-t","--tries",action="store",dest="tries",
-				help="How many times to run a command before recording an error. The default is 1. This is useful for builds where transient failures can occur.")
-
-parser.add_option("--toolcheck",action="store",dest="toolcheck",
-			help= \
-				"""Possible values are:
-				  "on"     -  Check the versions of tools that will be used in the build. Use cached results from previous builds to save time. This is the default.
-
-  				  "off"    -  Do not check tool versions whatsoever.
-
-				  "forced" -  Check all tool versions. Don't use cached results.
-			""")
-parser.add_option("--pp",action="store",dest="parallel_parsing",
-				help="""Controls how metadata (e.g. bld.infs) are parsed in Parallel.
-					Possible values are:
-					"on"  - Parse bld.infs in parallel (should be faster on clusters/multicore machines)
-					"off" - Parse bld.infs serially 
-				     """)
-
-parser.add_option("-v","--version",action="store_true",dest="version",
-				help="Print the version number and exit.")
-
-parser.add_option("--what",action="store_true",dest="what",
-				help="Print out the names of the files created by the build. Do not build anything.")
-
-def GetArgs(Raptor, args):
-	"Process command line arguments for a Raptor object"
-	return DoRaptor(Raptor,args)
-
-def ReadCommandFile(filename, used):
-	if filename in used:
-		raise IOError("command file '%s' refers to itself" % filename)
-
-	args = []
-	try:
-		file = open(filename, "r")
-		for line in file.readlines():
-			args.extend(line.split())
-		file.close()
-	except:
-		raise IOError("couldn't read command file '%s'" % filename)
-
-	# expand any command files in the options we just read.
-	# making sure we don't get stuck in a loop.
-	usedPlusThis = used[:]
-	usedPlusThis.append(filename)
-	return ExpandCommandOptions(args, usedPlusThis)
-
-def ExpandCommandOptions(args, files = []):
-	"""recursively expand --command options."""
-	expanded = []
-	previousWasOpt = False
-
-	for a in args:
-		if previousWasOpt: # then this one is the filename
-			expanded.extend(ReadCommandFile(a, files))
-			previousWasOpt = False
-			continue
-
-		if a.startswith(miniCommandOption):
-			if "=" in a: # then this is opt=filename
-				opt = a.split("=")
-				if fullCommandOption.startswith(opt[0]):
-					expanded.extend(ReadCommandFile(opt[1], files))
-					continue
-			else: # the next one is the filename
-				if fullCommandOption.startswith(a):
-					previousWasOpt = True
-					continue
-
-		expanded.append(a) # an ordinary arg, nothing to do with command files
-
-	return expanded
-
-def DoRaptor(Raptor, args):
-	"Process raptor arguments"
-	#
-	# This should parse the args list and call methods on
-	# the Raptor object to store the appropriate data.
-
-	# Expand --command=file options, replacing them with the contents of the
-	# command file.
-
-	non_ascii_error = "Non-ASCII character in argument or command file"
-
-	try:
-		expanded_args = ExpandCommandOptions(args)
-		for arg in expanded_args:
-			for c in arg:
-				if ord(c) > 127:
-					Raptor.Error(non_ascii_error)
-					return False
-	except IOError, e:
-		Raptor.Error(str(e))
-		return False
-	except UnicodeDecodeError:
-		Raptor.Error(non_ascii_error)
-		return False
-
-	# parse the full set of arguments
-	(options, leftover_args) = parser.parse_args(expanded_args)
-
-	# the leftover_args are either variable assignments of the form a=b
-	# or target names.
-	regex = re.compile("^(.+)=(.*)$")
-	for leftover in leftover_args:
-		assignment = regex.findall(leftover)
-		if len(assignment) > 0:
-			Raptor.SetEnv(assignment[0][0],assignment[0][1])
-		else:
-			Raptor.AddTarget(leftover)
-
-	# Define the dictionary of functions to be used.
-	# Attributes and function names can be added easily.
-	# The calling attribute should be the same
-	# as specified when creating the add_option
-	functions = {'config_name': Raptor.AddConfigName,
-				 'config_list':Raptor.AddConfigList,
-				 'sys_def_file' : Raptor.SetSysDefFile,
-				 'sys_def_base' : Raptor.SetSysDefBase,
-				 'sys_def_layer' : Raptor.AddSysDefLayer,
-				 'sys_def_order_layers' : Raptor.SetSysDefOrderLayers,
-				 'bld_inf_file' : Raptor.AddBuildInfoFile,
-				 'logfile' : Raptor.SetLogFileName,
-				 'makefile' : Raptor.SetTopMakefile,
-				 'quiet' : Raptor.RunQuietly,
-				 'debugoutput' : Raptor.SetDebugOutput,
-				 'doExportOnly' : Raptor.SetExportOnly,
-				 'keepgoing': Raptor.SetKeepGoing,
-				 'nobuild' : Raptor.SetNoBuild,
-				 'make_engine': Raptor.SetMakeEngine,
-				 'make_option': Raptor.AddMakeOption,
-				 'noDependInclude': Raptor.SetNoDependInclude,
-				 'number_of_jobs': Raptor.SetJobs,
-				 'project_name' :  Raptor.AddProject,
-				 'filter_list' : Raptor.FilterList,
-				 'ignore_os_detection': Raptor.IgnoreOsDetection,
-				 'check' :  Raptor.SetCheck,
-				 'what' :  Raptor.SetWhat,
-				 'tries' : Raptor.SetTries,
-				 'toolcheck' : Raptor.SetToolCheck,
-				 'source_target' : Raptor.AddSourceTarget,
-				 'command_file' : CommandFile,
-				'parallel_parsing' : Raptor.SetParallelParsing,
-			 	'version' : Raptor.PrintVersion
-				}
-
-	# Check if Quiet mode has been specified (otherwise we will make noise)
-	if parser.values.quiet:
-		Raptor.RunQuietly(True)
-
-	# some options imply that Raptor should exit immediately (e.g. --version)
-	keepGoing = True
-
-	if parser.values.version:
-		keepGoing = False
-
-	# Parse through the command line arguments passed, and call the
-	# corresponding function with the correct parameter.
-	# Since options is a OptParse.Value instance, it can be iterated over.
-	# This implementation helps avoid lengthy if-else statements
-	for opt in options.__dict__.items():
-		call_function = functions[str(opt[0])]
-		values = opt[1]
-		if not values:
-			pass
-		else:
-			if type(values) == types.ListType: # Check if the argument type is a list or a string. If list, then iterate through it and call the functions
-				for val in values:
-					keepGoing = (call_function(val) and keepGoing)
-			else:
-					keepGoing = (call_function(values) and keepGoing)
-
-	return keepGoing
-
-def CommandFile(file):
-	"this should never be called because we expand --command in this module."
-	print raptor.name + ": error: command file '%s' was not expanded" % file
-	return False
-
-
-
-
-# end of the raptor_cli module
-
-
+#
+# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+# raptor_cli module
+# This module represents a Command Line Interpreter (CLI) for Raptor.
+# The interface with Raptor is the GetArgs() function, which is called
+# by a raptor.Raptor object.
+#
+
+import re
+import types
+import raptor
+import os
+import sys
+import tempfile
+from raptor_utilities import getOSPlatform
+
+from optparse import OptionParser # for parsing command line parameters
+
+fullCommandOption = "--command"
+miniCommandOption = "--co"  # update this if another "co" option is added
+
+# raptor_cli module attributes
+
+parser = OptionParser(prog = raptor.name,
+					  usage = """%prog [--help] [options] [variable=value] [target] ...
+
+Targets:
+
+BITMAP         Create bitmap files
+CLEAN          Remove built files and intermediates, but not exported files
+CLEANEXPORT    Remove exported files
+EXPORT         Copy exported files to destinations
+FINAL          Allow extension makefiles to execute final commands
+FREEZE         Freeze exported functions in a .DEF file
+LIBRARY        Create import libraries from frozen .DEF files
+LISTING        Create assembler listing files for source files
+REALLYCLEAN    Same as CLEAN but also remove exported files
+RESOURCE       Create resource files and AIFs
+ROMFILE        Create an IBY file to be included in a ROM
+TARGET         Create main executables
+WHAT           List all releaseable targets
+
+Examples:
+
+sbs -b my/group/bld.inf -c armv5        # build my component for target ARMV5
+sbs -b my/group/bld.inf -c armv5.test   # build my tests for target ARMV5
+
+sbs -c winscw CLEAN                     # clean emulator files
+sbs REALLYCLEAN                         # delete everything""")
+
+parser.add_option("-a","--sysdefbase",action="store",dest="sys_def_base",
+				help="Root directory for relative paths in the System Definition XML file.")
+
+parser.add_option("-b","--bldinf",action="append",dest="bld_inf_file",
+				help="Build information filename. Multiple -b options can be given.")
+
+parser.add_option("-c","--config",action="append",dest="config_name",
+				help="Configuration name to build. Multiple -c options can be given. The standard configs are all, armv5, armv7, default, tools, tools2 and winscw.")
+
+parser.add_option("--configpath", action="append",dest="config_list",
+				help="Append a list of paths to the default list of XML configuration folders. Use ';' as the separator on Windows, and ':' on Linux. Multiple --configpath options can be given.")
+
+parser.add_option("--check",action="store_true",dest="check",
+				help="Test for the existence of files created by the build, printing the ones which are missing. Do not build anything.")
+
+parser.add_option("--command",action="append",dest="command_file",
+				help="Provide a set of command-line options in a file.")
+
+parser.add_option("-d","--debug",action="store_true",dest="debugoutput",
+				help="Display information useful for debugging.")
+
+parser.add_option("-e","--engine",action="store",dest="make_engine",
+				help="Name of the make engine which runs the build.")
+
+parser.add_option("--export-only",action="store_true",dest="doExportOnly",
+				help="Generate exports only and do not create any make files.")
+
+parser.add_option("-f","--logfile",action="store",dest="logfile",
+				help="Name of the log file, or '-' for stdout.")
+
+parser.add_option("--filters",action="store",dest="filter_list",
+				help="Comma-separated list of names of the filters to use (case sensitive).")
+
+parser.add_option("-i","--ignore-os-detection",action="store_true",dest="ignore_os_detection",
+				help="Disables automatic application of OS variant based upon the OS version detected from each epoc32 tree.")
+
+parser.add_option("-j","--jobs",action="store",dest="number_of_jobs",
+                help="The maximum number of jobs that make should try and run in parallel (on a single machine).")
+
+parser.add_option("-k","--keepgoing",action="store_true",dest="keepgoing",
+				help="Continue building, even if some build commands fail.")
+
+parser.add_option("-l","--layer",action="append",dest="sys_def_layer",
+                help="Build a specific layer in the System Definition XML File. Multiple -l options can be given.")
+
+parser.add_option("-m","--makefile",action="store",dest="makefile",
+				help="Top-level makefile to be created.")
+
+parser.add_option("--mo",action="append",dest="make_option",
+				help="Option that must be passed through to the make engine. Multiple --mo options can be given.")
+
+parser.add_option("-n","--nobuild",action="store_true",dest="nobuild",
+				help="Just create makefiles, do not build anything.")
+
+parser.add_option("--no-depend-include",action="store_true",dest="noDependInclude",
+				help="Do not include generated dependency files. This is only useful for extremely large non-incremental builds.")
+				
+parser.add_option("-o","--orderlayers",action="store_true",dest="sys_def_order_layers",
+				help="Build layers in the System Definition XML file in the order listed or, if given, in the order of -l options.")
+
+parser.add_option("-p","--project",action="append",dest="project_name",
+                help="Build a specific project (mmp or extension) in the given bld.inf file. Multiple -p options can be given.")
+
+parser.add_option("-q","--quiet",action="store_true",dest="quiet",
+				help="Run quietly, not generating output messages.")
+
+parser.add_option("-s","--sysdef",action="store",dest="sys_def_file",
+				help="System Definition XML filename.")
+
+parser.add_option("--source-target",action="append",dest="source_target",
+				help="Build the listed source or resource file in isolation - do not perform any dependent processing. Multiple --source-target options can be given.")
+
+parser.add_option("-t","--tries",action="store",dest="tries",
+				help="How many times to run a command before recording an error. The default is 1. This is useful for builds where transient failures can occur.")
+
+parser.add_option("--toolcheck",action="store",dest="toolcheck",
+			help= \
+				"""Possible values are:
+				  "on"     -  Check the versions of tools that will be used in the build. Use cached results from previous builds to save time. This is the default.
+
+  				  "off"    -  Do not check tool versions whatsoever.
+
+				  "forced" -  Check all tool versions. Don't use cached results.
+			""")
+parser.add_option("--pp",action="store",dest="parallel_parsing",
+				help="""Controls how metadata (e.g. bld.infs) are parsed in Parallel.
+					Possible values are:
+					"on"  - Parse bld.infs in parallel (should be faster on clusters/multicore machines)
+					"off" - Parse bld.infs serially 
+				     """)
+
+parser.add_option("-v","--version",action="store_true",dest="version",
+				help="Print the version number and exit.")
+
+parser.add_option("--what",action="store_true",dest="what",
+				help="Print out the names of the files created by the build. Do not build anything.")
+
+def GetArgs(Raptor, args):
+	"Process command line arguments for a Raptor object"
+	return DoRaptor(Raptor,args)
+
+def ReadCommandFile(filename, used):
+	if filename in used:
+		raise IOError("command file '%s' refers to itself" % filename)
+
+	args = []
+	try:
+		file = open(filename, "r")
+		for line in file.readlines():
+			args.extend(line.split())
+		file.close()
+	except:
+		raise IOError("couldn't read command file '%s'" % filename)
+
+	# expand any command files in the options we just read.
+	# making sure we don't get stuck in a loop.
+	usedPlusThis = used[:]
+	usedPlusThis.append(filename)
+	return ExpandCommandOptions(args, usedPlusThis)
+
+def ExpandCommandOptions(args, files = []):
+	"""recursively expand --command options."""
+	expanded = []
+	previousWasOpt = False
+
+	for a in args:
+		if previousWasOpt: # then this one is the filename
+			expanded.extend(ReadCommandFile(a, files))
+			previousWasOpt = False
+			continue
+
+		if a.startswith(miniCommandOption):
+			if "=" in a: # then this is opt=filename
+				opt = a.split("=")
+				if fullCommandOption.startswith(opt[0]):
+					expanded.extend(ReadCommandFile(opt[1], files))
+					continue
+			else: # the next one is the filename
+				if fullCommandOption.startswith(a):
+					previousWasOpt = True
+					continue
+
+		expanded.append(a) # an ordinary arg, nothing to do with command files
+
+	return expanded
+
+def DoRaptor(Raptor, args):
+	"Process raptor arguments"
+	#
+	# This should parse the args list and call methods on
+	# the Raptor object to store the appropriate data.
+
+	# Expand --command=file options, replacing them with the contents of the
+	# command file.
+
+	non_ascii_error = "Non-ASCII character in argument or command file"
+
+	try:
+		expanded_args = ExpandCommandOptions(args)
+		for arg in expanded_args:
+			for c in arg:
+				if ord(c) > 127:
+					Raptor.Error(non_ascii_error)
+					return False
+	except IOError, e:
+		Raptor.Error(str(e))
+		return False
+	except UnicodeDecodeError:
+		Raptor.Error(non_ascii_error)
+		return False
+
+	# parse the full set of arguments
+	(options, leftover_args) = parser.parse_args(expanded_args)
+
+	# the leftover_args are either variable assignments of the form a=b
+	# or target names.
+	regex = re.compile("^(.+)=(.*)$")
+	for leftover in leftover_args:
+		assignment = regex.findall(leftover)
+		if len(assignment) > 0:
+			Raptor.SetEnv(assignment[0][0],assignment[0][1])
+		else:
+			Raptor.AddTarget(leftover)
+
+	# Define the dictionary of functions to be used.
+	# Attributes and function names can be added easily.
+	# The calling attribute should be the same
+	# as specified when creating the add_option
+	functions = {'config_name': Raptor.AddConfigName,
+				 'config_list':Raptor.AddConfigList,
+				 'sys_def_file' : Raptor.SetSysDefFile,
+				 'sys_def_base' : Raptor.SetSysDefBase,
+				 'sys_def_layer' : Raptor.AddSysDefLayer,
+				 'sys_def_order_layers' : Raptor.SetSysDefOrderLayers,
+				 'bld_inf_file' : Raptor.AddBuildInfoFile,
+				 'logfile' : Raptor.SetLogFileName,
+				 'makefile' : Raptor.SetTopMakefile,
+				 'quiet' : Raptor.RunQuietly,
+				 'debugoutput' : Raptor.SetDebugOutput,
+				 'doExportOnly' : Raptor.SetExportOnly,
+				 'keepgoing': Raptor.SetKeepGoing,
+				 'nobuild' : Raptor.SetNoBuild,
+				 'make_engine': Raptor.SetMakeEngine,
+				 'make_option': Raptor.AddMakeOption,
+				 'noDependInclude': Raptor.SetNoDependInclude,
+				 'number_of_jobs': Raptor.SetJobs,
+				 'project_name' :  Raptor.AddProject,
+				 'filter_list' : Raptor.FilterList,
+				 'ignore_os_detection': Raptor.IgnoreOsDetection,
+				 'check' :  Raptor.SetCheck,
+				 'what' :  Raptor.SetWhat,
+				 'tries' : Raptor.SetTries,
+				 'toolcheck' : Raptor.SetToolCheck,
+				 'source_target' : Raptor.AddSourceTarget,
+				 'command_file' : CommandFile,
+				'parallel_parsing' : Raptor.SetParallelParsing,
+			 	'version' : Raptor.PrintVersion
+				}
+
+	# Check if Quiet mode has been specified (otherwise we will make noise)
+	if parser.values.quiet:
+		Raptor.RunQuietly(True)
+
+	# some options imply that Raptor should exit immediately (e.g. --version)
+	keepGoing = True
+
+	if parser.values.version:
+		keepGoing = False
+
+	# Parse through the command line arguments passed, and call the
+	# corresponding function with the correct parameter.
+	# Since options is a OptParse.Value instance, it can be iterated over.
+	# This implementation helps avoid lengthy if-else statements
+	for opt in options.__dict__.items():
+		call_function = functions[str(opt[0])]
+		values = opt[1]
+		if not values:
+			pass
+		else:
+			if type(values) == types.ListType: # Check if the argument type is a list or a string. If list, then iterate through it and call the functions
+				for val in values:
+					keepGoing = (call_function(val) and keepGoing)
+			else:
+					keepGoing = (call_function(values) and keepGoing)
+
+	return keepGoing
+
+def CommandFile(file):
+	"this should never be called because we expand --command in this module."
+	print raptor.name + ": error: command file '%s' was not expanded" % file
+	return False
+
+
+
+
+# end of the raptor_cli module
+
+