Added install_module. py
This commit is contained in:
parent
6226fa4e9f
commit
eb6dc85f8c
1 changed files with 126 additions and 0 deletions
126
cuchulu/install_module.py
Normal file
126
cuchulu/install_module.py
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import traceback
|
||||
import argparse
|
||||
import os,sys
|
||||
import shutil
|
||||
import getpass
|
||||
from pathlib import Path
|
||||
from importlib import import_module
|
||||
from cuchulu.libraries.slugify import slugify
|
||||
import json
|
||||
import subprocess
|
||||
#from colorama import init, Fore, Back, Style
|
||||
import colorama
|
||||
|
||||
sys.path.insert(0, os.path.realpath('.'))
|
||||
|
||||
try:
|
||||
|
||||
from settings import config
|
||||
from settings import modules
|
||||
|
||||
except:
|
||||
|
||||
pass
|
||||
|
||||
|
||||
def start():
|
||||
"""Module for create new modules for paramecio
|
||||
"""
|
||||
|
||||
parser=argparse.ArgumentParser(description='A tool for add modules for paramecio from git url')
|
||||
|
||||
parser.add_argument('--git_url', help='The git url for clone the module.', required=True)
|
||||
|
||||
args=parser.parse_args()
|
||||
|
||||
colorama.init()
|
||||
|
||||
workdir='.'
|
||||
|
||||
os.chdir('./modules/')
|
||||
|
||||
if subprocess.call("git clone {}".format(args.git_url), shell=True) > 0:
|
||||
print('Error, cannot install the git module. Do you have installed git?. Is a correct url?')
|
||||
exit(1)
|
||||
|
||||
real_path=''
|
||||
|
||||
with os.scandir('.') as d:
|
||||
for e in d:
|
||||
#print(e.name)
|
||||
if not e.name in config.apps:
|
||||
#print(e.name)
|
||||
if args.git_url.find(e.name)!=-1:
|
||||
real_path=os.path.basename(e.name)
|
||||
|
||||
# Add dependencies using pip
|
||||
|
||||
os.chdir('../')
|
||||
|
||||
dependencies_file='./modules/{}/dependencies.json'.format(real_path)
|
||||
|
||||
if os.path.isfile(dependencies_file):
|
||||
|
||||
dep_json=[]
|
||||
|
||||
with open(dependencies_file) as f:
|
||||
|
||||
content=f.read()
|
||||
|
||||
try:
|
||||
dep_json=json.loads(content)
|
||||
except:
|
||||
dep_json=[]
|
||||
print('Error: cannot install dependencies for the package. Malformed json {}'.format(content))
|
||||
|
||||
if len(dep_json)>0:
|
||||
if 'packages' in dep_json:
|
||||
print('Install dependencies for the module...')
|
||||
arr_packages=" ".join(dep_json['packages'])
|
||||
if subprocess.call("pip install {}".format(arr_packages), shell=True) > 0:
|
||||
print('Error, cannot install the pip libraries. Do you have installed pip?.')
|
||||
|
||||
if 'models' in dep_json:
|
||||
print('Creating database tables from models in module...')
|
||||
for model in dep_json['models']:
|
||||
if subprocess.call("cuchuludb --model modules/{}/models/{}.py".format(real_path, model), shell=True) > 0:
|
||||
|
||||
print('Error, cannot install the model {}.'.format(model))
|
||||
|
||||
# Add to json configuration.
|
||||
|
||||
if real_path!='':
|
||||
"""
|
||||
if os.path.isfile('settings/modules.json'):
|
||||
|
||||
modules_json={}
|
||||
|
||||
with open('settings/modules.json') as f:
|
||||
print('Inserting new module in modules.json...')
|
||||
|
||||
json_text=f.read()
|
||||
|
||||
if json_text!='':
|
||||
modules_json=json.loads(json_text)
|
||||
|
||||
with open('settings/modules.json', 'w+') as f:
|
||||
modules_json[real_path]=['modules.'+real_path, real_path+'_app', '/']
|
||||
|
||||
f.write(json.dumps(modules_json, indent=4))
|
||||
|
||||
"""
|
||||
|
||||
with open('settings/modules.py', 'a') as f:
|
||||
|
||||
if not real_path in modules.extra_apps:
|
||||
#modules.extra_apps[real_path]=['modules.{}'.format(real_path), '{}_app'.format(real_path), '/']
|
||||
f.write("extra_apps['{}']=['modules.{}', '{}_app', '/']".format(real_path, real_path, real_path))
|
||||
|
||||
|
||||
|
||||
print('Please, reload your wsgi application for access to your new module if you don\'t have autoreload enabled')
|
||||
|
||||
if __name__=="__main__":
|
||||
start()
|
||||
Loading…
Add table
Add a link
Reference in a new issue