-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommands.py
96 lines (71 loc) · 2.36 KB
/
commands.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import sys
import os
import getopt
import shutil
import subprocess
import tempfile
from optparse import OptionParser
try:
from play.utils import package_as_war
PLAY10 = False
except ImportError:
PLAY10 = True
MODULE = 'cargo'
# Commands that are specific to your module
COMMANDS = ['cargo:deploy', 'cargo:redeploy','cargo:undeploy']
def execute(**kargs):
command = kargs.get("command")
app = kargs.get("app")
args = kargs.get("args")
env = kargs.get("env")
java_args = []
cargo_args = []
war_path = generate_war(app, env, args)
cargo_args.append("%s" % war_path)
print "[command="+command+"]"
if command == "cargo:deploy":
cargo_args.append("deploy" )
if command == "cargo:undeploy":
cargo_args.append("undeploy")
if command == "cargo:redeploy":
cargo_args.append("redeploy")
java_cmd = app.java_cmd(java_args, None, "play.modules.cargo.Cargo", cargo_args)
try:
subprocess.call(java_cmd, env=os.environ)
except OSError:
print "Could not execute the java executable, please make sure the JAVA_HOME environment variable is set properly (the java executable should reside at JAVA_HOME/bin/java). "
sys.exit(-1)
# This will be executed before any command (new, run...)
def before(**kargs):
command = kargs.get("command")
app = kargs.get("app")
args = kargs.get("args")
env = kargs.get("env")
# This will be executed after any command (new, run...)
def after(**kargs):
command = kargs.get("command")
app = kargs.get("app")
args = kargs.get("args")
env = kargs.get("env")
if command == "new":
pass
def generate_war(app, env, args):
java_cmd = app.java_cmd(args)
if os.path.exists(os.path.join(app.path, 'tmp')):
shutil.rmtree(os.path.join(app.path, 'tmp'))
if os.path.exists(os.path.join(app.path, 'precompiled')):
shutil.rmtree(os.path.join(app.path, 'precompiled'))
java_cmd.insert(2, '-Dprecompile=yes')
try:
result = subprocess.call(java_cmd, env=os.environ)
if not result == 0:
print "~"
print "~ Precompilation has failed, stop deploying."
print "~"
sys.exit(-1)
except OSError:
print "error"
sys.exit(-1)
war_path = os.path.join(tempfile.gettempdir(), os.path.basename(app.path))
package_as_war(app, env, war_path, "%s.war" % war_path)
return "%s.war" % war_path