Blame Scripts/Python/framework.py

4c79b5
# framework - The CentOS Artwork Repository framework structure.
4c79b5
#
4c79b5
# Copyright (C) 2009-2010 Alain Reguera Delgado
4c79b5
#
4c79b5
# This program is free software; you can redistribute it and/or modify
4c79b5
# it under the terms of the GNU General Public License as published by
4c79b5
# the Free Software Foundation; either version 2 of the License, or
4c79b5
# (at your option) any later version.
4c79b5
# 
4c79b5
# This program is distributed in the hope that it will be useful, but
4c79b5
# WITHOUT ANY WARRANTY; without even the implied warranty of
4c79b5
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4c79b5
# General Public License for more details.
4c79b5
#
4c79b5
# You should have received a copy of the GNU General Public License
4c79b5
# along with this program; if not, write to the Free Software
4c79b5
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
4c79b5
# USA.
4c79b5
# 
4c79b5
#------------------------------------------------------------
4c79b5
# $Id: framework.py 6045 2010-07-13 08:11:03Z al $
4c79b5
#-----------------------------------------------------------
4c79b5
"""
4c79b5
The CentOS Artwork Repository framework structure.
4c79b5
4c79b5
"""
4c79b5
4c79b5
import string
4c79b5
import os
4c79b5
import re
4c79b5
4c79b5
from repository import Repo
4c79b5
4c79b5
class Framework: 
4c79b5
    """ 
4c79b5
    This structure provides attributes and methods needed by CentOS
4c79b5
    artwork repository framework structures.
4c79b5
    """
4c79b5
4c79b5
    def __init__(self):
4c79b5
        self.fw = {}
4c79b5
        
4c79b5
    def find(self,id):
4c79b5
        """
4c79b5
        Return a dictionary object containing information about
4c79b5
        frameworks.  This function explores the repository structure
4c79b5
        looking for framework directories. Framework directories are
4c79b5
        defined as regular directories containing at least the
4c79b5
        subdirectory `tpl/' in its first level.
4c79b5
        """
4c79b5
        repo = Repo()
4c79b5
        rootdir = str(repo.abspath + repo.workline[0])
4c79b5
        template = re.compile('^.*/tpl/?$')
4c79b5
        for root, dirs, files in os.walk(rootdir):
4c79b5
            if id in root and template.match(root):
4c79b5
                print root
4c79b5
                #pathid = self.getPathId(root)
4c79b5
                #self.fw[pathid] = self.add(pathid)
4c79b5
4c79b5
    def getPathId(self, path):
4c79b5
        """
4c79b5
        Return the framework's path id by cleaning up its string path.
4c79b5
        """
4c79b5
        # Remove absolute path and workline from string path.
4c79b5
        # Remove theme directory from string path.
4c79b5
        # Remove template directory from string path.
4c79b5
        pass
4c79b5
4c79b5
    def add(self, pathid):
4c79b5
        """
4c79b5
        Return the framework's templates, translations and manuals paths.
4c79b5
        """
4c79b5
        templates = str('trunk/' + pathid + '/tpl')
4c79b5
        translations = str('trunk/Translations/' + pathid)
4c79b5
        manuals = str('trunk/Manuals/' + pathid)
4c79b5
        return (templates, translations, manuals)
4c79b5
4c79b5
    def list(self, id):
4c79b5
        """
4c79b5
        Print available frameworks and its paths.
4c79b5
        """
4c79b5
        self.find(id)
4c79b5
        for k, v in self.fw.iteritems():
4c79b5
            pathid = k
4c79b5
            templates, translations, manuals = v
4c79b5
            print '%12s: %s' % ('Id', pathid)
4c79b5
            print '%12s: %s' % ('Templates', templates)
4c79b5
            print '%12s: %s' % ('Translations', translations)
4c79b5
            print '%12s: %s' % ('Manuals', manuals)
4c79b5
            print '-'*66