kopia lustrzana https://github.com/longclawshop/longclaw
				
				
				
			
		
			
				
	
	
		
			75 wiersze
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			75 wiersze
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
| from __future__ import absolute_import, print_function, unicode_literals
 | |
| import subprocess
 | |
| import argparse
 | |
| import sys
 | |
| from os import path
 | |
| import os
 | |
| from django.core.management import ManagementUtility
 | |
| import longclaw
 | |
| 
 | |
| def create_project(args):
 | |
|     '''
 | |
|     Create a new django project using the longclaw template
 | |
|     '''
 | |
| 
 | |
|     # Make sure given name is not already in use by another python package/module.
 | |
|     try:
 | |
|         __import__(args.project_name)
 | |
|     except ImportError:
 | |
|         pass
 | |
|     else:
 | |
|         sys.exit("'{}' conflicts with the name of an existing "
 | |
|                  "Python module and cannot be used as a project "
 | |
|                  "name. Please try another name.".format(args.project_name))
 | |
| 
 | |
|     # Get the longclaw template path
 | |
|     template_path = path.join(path.dirname(longclaw.__file__), 'project_template')
 | |
| 
 | |
|     utility = ManagementUtility((
 | |
|         'django-admin.py',
 | |
|         'startproject',
 | |
|         '--template={}'.format(template_path),
 | |
|         '--ext=html,css,js,py,txt',
 | |
|         args.project_name
 | |
|     ))
 | |
|     utility.execute()
 | |
|     print("{} has been created.".format(args.project_name))
 | |
| 
 | |
| def build_assets(args):
 | |
|     '''
 | |
|     Build the longclaw assets
 | |
|     '''
 | |
|     # Get the path to the JS directory
 | |
|     asset_path = path.join(path.dirname(longclaw.__file__), 'client')
 | |
|     try:
 | |
|         # Move into client dir
 | |
|         curdir = os.path.abspath(os.curdir)
 | |
|         os.chdir(asset_path)
 | |
|         print('Compiling assets....')
 | |
|         subprocess.check_call(['npm', 'install'])
 | |
|         subprocess.check_call(['npm', 'run', 'build'])
 | |
|         os.chdir(curdir)
 | |
|         print('Complete!')
 | |
|     except (OSError, subprocess.CalledProcessError) as err:
 | |
|         print('Error compiling assets:  {}'.format(err))
 | |
|         raise SystemExit(1)
 | |
| 
 | |
| def main():
 | |
|     '''
 | |
|     Setup the parser and call the command function
 | |
|     '''
 | |
|     parser = argparse.ArgumentParser(description='Longclaw CLI')
 | |
|     subparsers = parser.add_subparsers()
 | |
|     start = subparsers.add_parser('start', help='Create a Wagtail+Longclaw project')
 | |
|     start.add_argument('project_name', help='Name of the project')
 | |
|     start.set_defaults(func=create_project)
 | |
| 
 | |
|     build = subparsers.add_parser('build', help='Build the front-end assets for Longclaw')
 | |
|     build.set_defaults(func=build_assets)
 | |
| 
 | |
|     args = parser.parse_args()
 | |
|     args.func(args)
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |