Beispiel #1
0
 def __init__(self):
     self.spritizer = Spritizer()
     self.config = Config('projects')
     self.projectConfig = Config()
     self._argv = sys.argv
     self._project = 'all'
     self._options = {'tile-x': 2}
     self._noProjectActions = ['create','list']
     self._action = None
     self._usage = "python test_bash.py <action> [[project] [OPTIONS]]"
     self.readInput()
     self.run()
Beispiel #2
0
class Bash():
    
    def __init__(self):
        self.spritizer = Spritizer()
        self.config = Config('projects')
        self.projectConfig = Config()
        self._argv = sys.argv
        self._project = 'all'
        self._options = {'tile-x': 2}
        self._noProjectActions = ['create','list']
        self._action = None
        self._usage = "python test_bash.py <action> [[project] [OPTIONS]]"
        self.readInput()
        self.run()
        
    def run(self):
        action = self.getAction()
        if action == None:
            print
            print "You need to specify an action"
            print "supported : create, update, list, make"
            print
            print self._usage
            print
            sys.exit()
        project = self.getProject()
        if project == "all" and action not in self._noProjectActions:
            print
            print "You need to specify a project to use the " + action + " action"
            print "Use action 'list' to retrive configured projects"
            print
            return
        
        f = getattr(self,action)
        f()

    def setProject(self, project):
        self._project = project
        
    def getProject(self):
        return self._project
    
    def setAction(self,action):        
        self._action = action
        
    def getAction(self):
        if self._action != None:
            return self._action
        return None
    
    def readInput(self):
        input = self._argv
        index = 0
        for i in input:
            if index > 0:
                if index == 2:
                    self.setProject(i)
                elif index == 1:
                    self.setAction(i)
                else:
                    if i[0] == '-':  # It's an option
                        option = i[1:]
                        if re.search('=',option):  # And we have a value
                            option = option.split('=')
                            value = option[1]
                            key = option[0]
                        else:
                            value = True
                            key = option
                        self.setOption(key,value)
            index+=1

    def make(self):
        if self.getProject() == 'all' or self.getProject() == 'general':
            return
        self.spritizer.setBin(self.config.getGeneral('imagemagick_bin'))
        self.spritizer.setTilex(self.getOption('tile-x'))
        self.spritizer.setOptions(self.getOptions())
        project_path = self.makeProjectPath()
        self.projectConfig.setFile(self.getProject())
        sprite_dirs = self.projectConfig.listAll()
        if sprite_dirs == []:
            print 'You have to add at least one sprite '
            return
        for i in sprite_dirs:
            self.spritizer.setOption('images-path',self.projectConfig.get(i,'images_path'))
            self.spritizer.setOption('css-file',self.projectConfig.get(i,'css_path'))
            self.spritizer.setOption('png-file',self.projectConfig.get(i,'png_path'))
            self.spritizer.setOption('css-prefix',self.projectConfig.get(i,'css_prefix'))
            self.spritizer.setPath(project_path)
            cmd = self.spritizer.makeCommand()
            os.system(cmd)
            self.spritizer.makeCss()            
            self.spritizer.saveCss()            
            
    def makeProjectPath(self):
        project = self.getProject()
        project_path = self.config.get(self.getProject(),'project_path')
        if project_path in ['',None,False]:
            project_path = self.config.getGeneral('workspace') + project
        return project_path
            
    
    # Update alias : if a project does not exists the update method will create it
    def create(self):
        self.update()
    
    def update(self):
        self.config.update()
        
    def list(self):
        projects = self.config.listAll()
        for i in projects:
            if i != "general":
                print i
        
    def makeCssPrefix(self):
        prefix = self.getOption('css-prefix')
        if prefix == None or prefix == '':
            prefix = self.config.get(self.getProject(),'css_prefix')
            if prefix == '':
                prefix = self.getProject()
                
    def makeOutput(self):
        prefix = self.getOption('output')
        if prefix == None or prefix == '':
            prefix = self.config.get(self.getProject(),'css_prefix')
            if prefix == '':
                prefix = self.getProject()
        self.setOption('output',prefix)
    
    def setOption(self,option,value):
        self._options[option] = value
                
    def getOption(self,option):
        if self._options.has_key(option):
            return self._options[option]
        return None
    
    def getOptions(self):
        return self._options
    
    def simulate(self):
        return