2014-06-22 16 views
5

Mam dwa polecenia niestandardowe w my setup.py file:create_tables i drop_tables:Jak uruchomić_komendę w setuptools z opcjami?

class create_tables(command): 
    description = 'create DB tables' 

    user_options = [ 
     ('database=', 'd', 'which database configuration use'), 
     ('reset', 'r', 'reset all data previously'), 
    ] 

    def initialize_options(self): 
     command.initialize_options(self) 
     self.reset = False 

    def run(self): 
     if self.reset: 
      self.run_command('drop_tables') 
     else: 
      command.run(self) 
     from vk_relations import models 
     models.create_tables() 
     print 'Tables were created successfully' 


class drop_tables(command): 
    description = 'drop all created DB tables' 

    user_options = [ 
     ('database=', 'd', 'which database configuration use'), 
    ] 

    def run(self): 
     command.run(self) 
     answer = raw_input('Are you sure you want to clear all VK Relations data? (y/n): ') 
     if 'y' == answer: 
      from vk_relations import models 
      models.drop_tables() 
      print 'Tables were dropped successfully' 
     elif 'n' == answer: 
      quit() 
     else: 
      sys.exit() 

poleceń $ setup.py create_tables -r -dmain należy uruchomić polecenie drop_tables i tworzenia nowych tabel w main bazie danych, ale run_command metoda nie pozwala na dostarczenie opcji do polecenia. Jak określić opcję database dla polecenia wewnątrz create_tables?

Odpowiedz

1

Teraz Użyłem tej Hack:

cmd_obj = self.distribution.get_command_obj('drop_tables') 
cmd_obj.database = self.database 
self.run_command('drop_tables')