예제 #1
0
파일: template.py 프로젝트: prjemian/iocdoc
    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()
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
파일: database.py 프로젝트: prjemian/iocdoc
    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()