def __init__(self, filename, ref, **env): self.filename = filename self.macros = macros.Macros(**env) self.filename_expanded = self.macros.replace(filename) self.database_list = [] self.reference = ref self.commands = [] self.source = text_file.read(self.filename_expanded) self.parse()
def processFile(self, filename): ''' process just one file ''' f = text_file.read(filename) # use the file cache try: tokenize.tokenize(f.iterator().readline, self.tokenReceiver) except Exception, _exc: msg = 'trouble understanding: ' + f.absolute_filename msg += '\n' + str(_exc) utils.logMessage(msg, utils.LOGGING_DETAIL__NOISY) raise RuntimeError(msg)
def __init__(self, parent, filename, ref, env=None, symbols=None): self.parent = parent self.filename = filename self.reference = ref self.pwd = os.getcwd() self.env = env or macros.Macros() self.symbols = symbols or macros.Macros() self.database_list = [] self.commands = [] self.template_list = [] self.includedCommandFile_list = [] self.pv_dict = {} # filename is a relative or absolute path to command file, no macros in the name self.filename_absolute = os.path.abspath(filename) self.dirname_absolute = os.path.dirname(self.filename_absolute) utils.logMessage('command file: ' + self.filename, utils.LOGGING_DETAIL__IMPORTANT) # self.source = text_file.read(filename) self.source = text_file.read(self.filename_absolute) if parent is None: self.startup_directory = self.dirname_absolute else: self.startup_directory = parent.startup_directory self.knownHandlers = { '<': self.kh_loadCommandFile, 'cd': self.kh_cd, # 'dbLoadDatabase': self.kh_dbLoadDatabase, 'dbLoadRecords': self.kh_dbLoadRecords, 'dbLoadTemplate': self.kh_dbLoadTemplate, 'epicsEnvSet': self.kh_epicsEnvSet, 'putenv': self.kh_putenv, # 'seq': self.kh_seq, 'strcpy': self.kh_strcpy, # 'nfsMount': self.kh_nfsMount, # 'nfs2Mount': self.kh_nfsMount, #------ overrides ----------- 'dbLoadDatabase': self.kh_shell_command, 'seq': self.kh_shell_command, 'nfsMount': self.kh_shell_command, 'nfs2Mount': self.kh_shell_command, } self.parse() utils.logMessage('end of command file: ' + self.filename, utils.LOGGING_DETAIL__IMPORTANT)
def __init__(self, parent, dbFileName, ref, **env): self.parent = parent self.filename = dbFileName self.macros = macros.Macros(**env) self.filename_expanded = self.macros.replace(dbFileName) self.record_list = None self.pv_dict = {} self.reference = ref # read the file (if the first time, parse its content) self.source = text_file.read(self.filename_expanded) if not hasattr(self.source, 'record_list'): self.source.record_list = [] self.record_list = self.source.record_list self.parse() # step 1: parse the db file for its definitions self.record_list = self.source.record_list # apply supplied macros for each call to the database file self.makeProcessVariables()