Skip to content

Commit d8849f4

Browse files
author
shital.rtcamp
committed
Merge branch 'python' of https://github.com/rtCamp/easyengine into python
2 parents 651f7ca + 61fa69e commit d8849f4

File tree

7 files changed

+178
-56
lines changed

7 files changed

+178
-56
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ before_script:
2121
- sudo apt-get update
2222

2323
script:
24+
- unset LANG
2425
- sudo echo -e "[user]\n\tname = abc\n\temail = [email protected]" > ~/.gitconfig
2526
- sudo echo "Travis Banch = $TRAVIS_BRANCH"
2627
- sudo apt-get install -y --force-yes git python3-setuptools python3-dev python3-apt

ee/cli/main.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
from cement.core import foundation
1414
from cement.utils.misc import init_defaults
1515
from cement.core.exc import FrameworkError, CaughtSignal
16+
from cement.utils import fs
17+
from cement.ext.ext_mustache import MustacheOutputHandler
1618
from ee.core import exc
1719

20+
1821
# Application default. Should update config/ee.conf to reflect any
1922
# changes, or additions here.
2023
defaults = init_defaults('ee')
@@ -29,6 +32,23 @@
2932
defaults['ee']['template_dir'] = '/var/lib/ee/templates'
3033

3134

35+
# Based on https://github.com/datafolklabs/cement/issues/295
36+
# To avoid encoding releated error,we defined our custom output handler
37+
# I hope we will remove this when we upgarde to Cement 2.6 (Not released yet)
38+
class EEOutputHandler(MustacheOutputHandler):
39+
class Meta:
40+
label = 'ee_output_handler'
41+
42+
def _load_template_from_file(self, path):
43+
for templ_dir in self.app._meta.template_dirs:
44+
full_path = fs.abspath(os.path.join(templ_dir, path))
45+
if os.path.exists(full_path):
46+
self.app.log.debug('loading template file %s' % full_path)
47+
return open(full_path, encoding='utf-8', mode='r').read()
48+
else:
49+
continue
50+
51+
3252
class EEApp(foundation.CementApp):
3353
class Meta:
3454
label = 'ee'
@@ -50,7 +70,7 @@ class Meta:
5070
extensions = ['mustache']
5171

5272
# default output handler
53-
output_handler = 'mustache'
73+
output_handler = EEOutputHandler
5474

5575
debug = TOGGLE_DEBUG
5676

ee/cli/plugins/debug.py

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def debug_nginx(self):
103103
self.trigger_nginx = True
104104

105105
else:
106-
Log.info(self, "Debug for site allready enabled")
106+
Log.info(self, "Nginx debug for site already enabled")
107107

108108
self.msg = self.msg + ['{0}{1}/logs/error.log'
109109
.format(EEVariables.ee_webroot,
@@ -129,7 +129,7 @@ def debug_nginx(self):
129129

130130
else:
131131

132-
Log.info(self, "Debug for site allready disabled")
132+
Log.info(self, "Nginx debug for site already disabled")
133133
else:
134134
Log.info(self, "{0} domain not valid"
135135
.format(self.app.pargs.site_name))
@@ -154,7 +154,7 @@ def debug_php(self):
154154
self.trigger_php = True
155155
self.trigger_nginx = True
156156
else:
157-
Log.info(self, "PHP debug is allready enabled")
157+
Log.info(self, "PHP debug is already enabled")
158158

159159
self.msg = self.msg + ['/var/log/php5/slow.log']
160160

@@ -174,7 +174,7 @@ def debug_php(self):
174174
self.trigger_php = True
175175
self.trigger_nginx = True
176176
else:
177-
Log.info(self, "PHP debug is allready disabled")
177+
Log.info(self, "PHP debug is already disabled")
178178

179179
@expose(hide=True)
180180
def debug_fpm(self):
@@ -249,7 +249,7 @@ def debug_mysql(self):
249249
"n#EasyEngine end MySQL slow log\\\";"
250250
" }} | crontab -\"".format(cron_time))
251251
else:
252-
Log.info(self, "MySQL slow log is allready enabled")
252+
Log.info(self, "MySQL slow log is already enabled")
253253

254254
self.msg = self.msg + ['/var/log/mysql/mysql-slow.log']
255255

@@ -273,7 +273,7 @@ def debug_mysql(self):
273273
def debug_wp(self):
274274
"""Start/Stop WordPress debug"""
275275
if self.start and self.app.pargs.site_name:
276-
wp_config = ("{0}{1}/wp-config.php"
276+
wp_config = ("{0}/{1}/wp-config.php"
277277
.format(EEVariables.ee_webroot,
278278
self.app.pargs.site_name))
279279
webroot = "{0}{1}".format(EEVariables.ee_webroot,
@@ -301,8 +301,6 @@ def debug_wp(self):
301301
"wp-content/plugins"
302302
.format(webroot,
303303
EEVariables.ee_php_user))
304-
else:
305-
Log.info(self, "WordPress debug log already enabled")
306304

307305
self.msg = self.msg + ['{0}{1}/htdocs/wp-content'
308306
'/debug.log'
@@ -337,9 +335,6 @@ def debug_wp(self):
337335
"true);/d\" {0}".format(wp_config))
338336
else:
339337
Log.info(self, "WordPress debug all already disabled")
340-
else:
341-
Log.error(self, "{0} domain not valid"
342-
.format(self.app.pargs.site_name))
343338
else:
344339
Log.error(self, "Missing argument site name")
345340

@@ -383,7 +378,7 @@ def debug_rewrite(self):
383378
.format(config_path))
384379
self.trigger_nginx = True
385380
else:
386-
Log.info(self, "Nginx rewrite logs for {0} allready setup"
381+
Log.info(self, "Nginx rewrite logs for {0} already setup"
387382
.format(self.app.pargs.site_name))
388383

389384
if ('{0}{1}/logs/error.log'.format(EEVariables.ee_webroot,
@@ -405,7 +400,7 @@ def debug_rewrite(self):
405400
.format(config_path))
406401
self.trigger_nginx = True
407402
else:
408-
Log.info(self, "Nginx rewrite logs for {0} allready "
403+
Log.info(self, "Nginx rewrite logs for {0} already "
409404
" disabled".format(self.app.pargs.site_name))
410405

411406
@expose(hide=True)
@@ -419,7 +414,12 @@ def signal_handler(self, signal, frame):
419414
if self.app.pargs.fpm:
420415
self.debug_fpm()
421416
if self.app.pargs.mysql:
422-
self.debug_mysql()
417+
# MySQL debug will not work for remote MySQL
418+
if EEVariables.ee_mysql_host is "localhost":
419+
self.debug_mysql()
420+
else:
421+
Log.warn(self, "Remote MySQL found, EasyEngine will not "
422+
"enable remote debug")
423423
if self.app.pargs.wp:
424424
self.debug_wp()
425425
if self.app.pargs.rewrite:
@@ -450,19 +450,19 @@ def default(self):
450450
and (not self.app.pargs.fpm) and (not self.app.pargs.mysql)
451451
and (not self.app.pargs.wp) and (not self.app.pargs.rewrite)
452452
and (not self.app.pargs.site_name)):
453-
self.debug_nginx()
454-
self.debug_php()
455-
self.debug_fpm()
456-
self.debug_mysql()
457-
self.debug_rewrite()
453+
self.app.pargs.nginx = True
454+
self.app.pargs.php = True
455+
self.app.pargs.fpm = True
456+
self.app.pargs.mysql = True
457+
self.app.pargs.rewrite = True
458458

459459
if ((not self.app.pargs.nginx) and (not self.app.pargs.php)
460460
and (not self.app.pargs.fpm) and (not self.app.pargs.mysql)
461461
and (not self.app.pargs.wp) and (not self.app.pargs.rewrite)
462462
and self.app.pargs.site_name):
463-
self.debug_nginx()
464-
self.debug_wp()
465-
self.debug_rewrite()
463+
self.app.pargs.nginx = True
464+
self.app.pargs.wp = True
465+
self.app.pargs.rewrite = True
466466

467467
if self.app.pargs.nginx:
468468
self.debug_nginx()
@@ -471,7 +471,12 @@ def default(self):
471471
if self.app.pargs.fpm:
472472
self.debug_fpm()
473473
if self.app.pargs.mysql:
474-
self.debug_mysql()
474+
# MySQL debug will not work for remote MySQL
475+
if EEVariables.ee_mysql_host is "localhost":
476+
self.debug_mysql()
477+
else:
478+
Log.warn(self, "Remote MySQL found, EasyEngine will not "
479+
"enable remote debug")
475480
if self.app.pargs.wp:
476481
self.debug_wp()
477482
if self.app.pargs.rewrite:

ee/cli/plugins/site.py

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class Meta:
2929
description = ('Performs website specific operations')
3030
arguments = [
3131
(['site_name'],
32-
dict(help='Website name')),
32+
dict(help='Website name', nargs='?')),
3333
]
3434

3535
@expose(hide=True)
@@ -38,6 +38,11 @@ def default(self):
3838

3939
@expose(help="Enable site example.com")
4040
def enable(self):
41+
if not self.app.pargs.site_name:
42+
try:
43+
self.app.pargs.site_name = input('Enter site name : ')
44+
except IOError as e:
45+
Log.error(self, 'could not input site name')
4146
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
4247
Log.info(self, "Enable domain {0:10} \t".format(ee_domain), end='')
4348
if os.path.isfile('/etc/nginx/sites-available/{0}'
@@ -58,6 +63,11 @@ def enable(self):
5863

5964
@expose(help="Disable site example.com")
6065
def disable(self):
66+
if not self.app.pargs.site_name:
67+
try:
68+
self.app.pargs.site_name = input('Enter site name : ')
69+
except IOError as e:
70+
Log.error(self, 'could not input site name')
6171
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
6272
Log.info(self, "Disable domain {0:10} \t".format(ee_domain), end='')
6373
if os.path.isfile('/etc/nginx/sites-available/{0}'
@@ -81,6 +91,11 @@ def disable(self):
8191

8292
@expose(help="Get example.com information")
8393
def info(self):
94+
if not self.app.pargs.site_name:
95+
try:
96+
self.app.pargs.site_name = input('Enter site name : ')
97+
except IOError as e:
98+
Log.error(self, 'could not input site name')
8499
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
85100
ee_db_name = ''
86101
ee_db_user = ''
@@ -135,6 +150,11 @@ def log(self):
135150

136151
@expose(help="Edit Nginx configuration of example.com")
137152
def edit(self):
153+
if not self.app.pargs.site_name:
154+
try:
155+
self.app.pargs.site_name = input('Enter site name : ')
156+
except IOError as e:
157+
Log.error(self, 'could not input site name')
138158
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
139159
if os.path.isfile('/etc/nginx/sites-available/{0}'
140160
.format(ee_domain)):
@@ -151,6 +171,11 @@ def edit(self):
151171

152172
@expose(help="Display Nginx configuration of example.com")
153173
def show(self):
174+
if not self.app.pargs.site_name:
175+
try:
176+
self.app.pargs.site_name = input('Enter site name : ')
177+
except IOError as e:
178+
Log.error(self, 'could not input site name')
154179
# TODO Write code for ee site edit command here
155180
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
156181
if os.path.isfile('/etc/nginx/sites-available/{0}'
@@ -167,7 +192,11 @@ def show(self):
167192

168193
@expose(help="Change directory to site webroot")
169194
def cd(self):
170-
195+
if not self.app.pargs.site_name:
196+
try:
197+
self.app.pargs.site_name = input('Enter site name : ')
198+
except IOError as e:
199+
Log.error(self, 'could not input site name')
171200
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
172201
if os.path.isfile('/etc/nginx/sites-available/{0}'
173202
.format(ee_domain)):
@@ -189,7 +218,8 @@ class Meta:
189218
'required files as options are provided')
190219
arguments = [
191220
(['site_name'],
192-
dict(help='domain name for the site to be created.')),
221+
dict(help='domain name for the site to be created.',
222+
nargs='?')),
193223
(['--html'],
194224
dict(help="create html site", action='store_true')),
195225
(['--php'],
@@ -220,6 +250,18 @@ class Meta:
220250
def default(self):
221251
# self.app.render((data), 'default.mustache')
222252
# Check domain name validation
253+
if not self.app.pargs.site_name:
254+
try:
255+
self.app.pargs.site_name = input('Enter site name : ')
256+
except IOError as e:
257+
Log.error(self, 'could not input site name')
258+
if not (self.app.pargs.html or self.app.pargs.php or
259+
self.app.pargs.mysql or self.app.pargs.wp or
260+
self.app.pargs.w3tc or self.app.pargs.wpfc or
261+
self.app.pargs.wpsc or self.app.pargs.wpsubdir or
262+
self.app.pargs.wpsubdomain):
263+
self.app.pargs.html = True
264+
223265
data = ''
224266
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
225267
ee_site_webroot = EEVariables.ee_webroot + ee_domain
@@ -494,7 +536,8 @@ class Meta:
494536
'another as per the options are provided')
495537
arguments = [
496538
(['site_name'],
497-
dict(help='domain name for the site to be updated')),
539+
dict(help='domain name for the site to be updated',
540+
nargs='?')),
498541
(['--password'],
499542
dict(help="update to password for wordpress site user",
500543
action='store_true')),
@@ -521,6 +564,11 @@ class Meta:
521564

522565
@expose(help="Update site type or cache")
523566
def default(self):
567+
if not self.app.pargs.site_name:
568+
try:
569+
self.app.pargs.site_name = input('Enter site name : ')
570+
except IOError as e:
571+
Log.error(self, 'could not input site name')
524572
data = ''
525573
(ee_domain,
526574
ee_www_domain, ) = ValidateDomain(self.app.pargs.site_name)
@@ -886,6 +934,10 @@ def default(self):
886934
'DB_PASSWORD')
887935
.split(',')[1]
888936
.split(')')[0].strip())
937+
data['ee_db_host'] = (EEFileUtils.grep(self, config_file,
938+
'DB_HOST')
939+
.split(',')[1]
940+
.split(')')[0].strip())
889941

890942
# Setup WordPress if old sites are html/php/mysql sites
891943
if data['wp'] and oldsitetype in ['html', 'php', 'mysql']:
@@ -943,7 +995,7 @@ class Meta:
943995
description = 'delete an existing website'
944996
arguments = [
945997
(['site_name'],
946-
dict(help='domain name to be deleted')),
998+
dict(help='domain name to be deleted', nargs='?')),
947999
(['--no-prompt'],
9481000
dict(help="doesnt ask permission for delete",
9491001
action='store_true')),
@@ -958,12 +1010,15 @@ class Meta:
9581010
@expose(help="Delete website configuration and files")
9591011
@expose(hide=True)
9601012
def default(self):
961-
# TODO Write code for ee site update here
1013+
if not self.app.pargs.site_name:
1014+
try:
1015+
self.app.pargs.site_name = input('Enter site name : ')
1016+
except IOError as e:
1017+
Log.error(self, 'could not input site name')
9621018
(ee_domain, ee_www_domain) = ValidateDomain(self.app.pargs.site_name)
9631019
ee_db_name = ''
9641020
ee_prompt = ''
9651021
ee_nginx_prompt = ''
966-
9671022
if ((not self.app.pargs.db) and (not self.app.pargs.files) and
9681023
(not self.app.pargs.all)):
9691024
self.app.pargs.all = True

0 commit comments

Comments
 (0)