Package Camelot :: Package camelot :: Package bin :: Module camelot_admin
[frames] | no frames]

Source Code for Module Camelot.camelot.bin.camelot_admin

  1  #  ============================================================================
 
  2  #
 
  3  #  Copyright (C) 2007-2008 Conceptive Engineering bvba. All rights reserved.
 
  4  #  www.conceptive.be / project-camelot@conceptive.be
 
  5  #
 
  6  #  This file is part of the Camelot Library.
 
  7  #
 
  8  #  This file may be used under the terms of the GNU General Public
 
  9  #  License version 2.0 as published by the Free Software Foundation
 
 10  #  and appearing in the file LICENSE.GPL included in the packaging of
 
 11  #  this file.  Please review the following information to ensure GNU
 
 12  #  General Public Licensing requirements will be met:
 
 13  #  http://www.trolltech.com/products/qt/opensource.html
 
 14  #
 
 15  #  If you are unsure which license is appropriate for your use, please
 
 16  #  review the following information:
 
 17  #  http://www.trolltech.com/products/qt/licensing.html or contact
 
 18  #  project-camelot@conceptive.be.
 
 19  #
 
 20  #  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 
 21  #  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
 22  #
 
 23  #  For use of this library in commercial applications, please contact
 
 24  #  project-camelot@conceptive.be
 
 25  #
 
 26  #  ============================================================================
 
 27  
 
 28  from optparse import OptionParser 
 29  
 
 30  #
 
 31  # Description of the application, out of which the help text as well as the
 
 32  # __doc__ strings can be generated
 
 33  #
 
 34  
 
 35  description = """camelot_admin is a tool to assist in the creation and development of Camelot
 
 36  projects.
 
 37  """ 
 38  
 
 39  usage = "usage: %prog [options] command" 
 40  
 
 41  command_description = [
 
 42      ('startproject', """Starts a new project, use startproject project_name."""),
 
 43      ('makemessages', """Outputs a message file with all field names of all entities.  This command
 
 44      requires settings.py of the project to be in the PYTHONPATH"""),
 
 45  ] 
 46  
 
 47  #
 
 48  # Generate a docstring in restructured text format
 
 49  #
 
 50  
 
 51  __doc__ = description 
 52  
 
 53  for command, desc in command_description: 
 54      __doc__ += "\n.. cmdoption:: %s\n\n"%command 
 55      for line in desc.split('\n'): 
 56          __doc__ += "    %s\n"%line 
 57          
 
 58  #
 
 59  # A custom OptionParser that generates help information on the commands
 
 60  #
 
61 -class CommandOptionParser(OptionParser):
62
63 - def format_help(self, formatter=None):
64 command_help = """ 65 The available commands are : 66 67 """ 68 command_help += '\n\n'.join(['%s\n%s\n%s'%(command,'-'*len(command), desc) for command,desc in command_description]) 69 command_help += """ 70 71 For the management of deployed Camelot applications, see camelot_manage 72 73 """ 74 return OptionParser.format_help(self) + ''.join(command_help)
75
76 -def startproject(project):
77 import shutil, os, sys 78 if os.path.exists(project): 79 raise Exception('Directory %s allready exists, cannot start a project in it'%project) 80 81 def ignore(directory, content): 82 """ignore .svn files""" 83 for c in content: 84 if c.startswith('.'): 85 yield c
86 87 # ignore is only supported as of python 2.6 88 v = sys.version_info 89 if v[0]>2 or (v[0]==2 and v[1]>=6): 90 shutil.copytree(os.path.join(os.path.dirname(__file__), '..', 'empty_project'), 91 project, ignore=ignore) 92 else: 93 shutil.copytree(os.path.join(os.path.dirname(__file__), '..', 'empty_project'), 94 project) 95 # creating a repository doesn't seems to work when migrate is easy intalled 96 #from migrate.versioning.api import create 97 #create(os.path.join(project, 'repository'), project) 98
99 -def makemessages():
100 print 'Not yet implemented' 101 import settings 102 settings.setup_model()
103 104 105 commands = locals() 106
107 -def main():
108 import camelot 109 parser = CommandOptionParser(description=description, 110 usage=usage, 111 version=camelot.__version__,) 112 (_options, args) = parser.parse_args() 113 if not len(args)==2: 114 parser.print_help() 115 else: 116 command, _project = args 117 commands[command](*args[1:])
118 119 if __name__ == '__main__': 120 main() 121