Exemplo n.º 1
0
    def resolveFiles(self, fileSignature):
        """
        @return: list(asm_file_system.ResolvedConfigFile)
        """
        fileLocations = fileSignature.FileLocations if hasattr(fileSignature, 'FileLocations') else None
        filename = fileSignature.name
        fileContentSignature = fileSignature.FileContent if hasattr(fileSignature, 'FileContent') else None
        files = []
        _, undefinedVariables = ExpressionResolver.checkVariable(self.variableResolver, filename)
        if undefinedVariables:
            logger.debug('Skip configuration file %s because following variable%s no value:' %
                         (filename, 's have' if len(undefinedVariables) > 1 else ' has'), ', '.join(undefinedVariables))
        elif fileLocations:
            paths = fileLocations.children
            for path in paths:
                if not OSType.match(path.os, self.shell):
                    logger.debug('Skip path %s because expect os type %s but actual is %s' %
                                 (path.text, path.os, OSType.fromShell(self.shell)))
                    continue
                for resolvedPath, resolvedFilename in self.resolvePath(path.text, filename):
                    found = asm_file_system.getConfigFilesFromPath(self.shell, resolvedPath, resolvedFilename, path.includeSub)
                    if found:
                        files.extend(found)
        elif fileContentSignature:
            fileContent = ExpressionResolver.resolve(self.variableResolver, fileContentSignature.text)
            file = asm_file_system.ResolvedConfigFile(None, filename, fileContent)
            files.append(file)

        return files
Exemplo n.º 2
0
    def resolvePath(self, filePath, filename):
        """
        @type path: str
        @type filename: str
        @return: list(str,str)
        """
        resolvedPaths = []
        _, undefinedVariables = ExpressionResolver.checkVariable(self.variableResolver, filePath)
        if undefinedVariables:
            logger.debug('Skip path %s because following variable%s was not defined:' %
                         (filePath, 's' if len(undefinedVariables) > 1 else ''), ', '.join(undefinedVariables))
        else:
            fullPath = '|'.join((filePath, filename))
            paths = ExpressionResolver.resolve(self.variableResolver, fullPath, ExpressionResolver.STRING_LITERAL_LIST)
            for path in paths:
                resolvedPaths.append(path.split('|'))

        return resolvedPaths