Mercurial > hg > carton
comparison carton.py @ 35:122c56779f2b
add functionality to run post-install python scripts
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Mon, 08 Aug 2011 18:08:49 -0700 |
parents | 8fef97a25925 |
children | 77285bafc36a |
comparison
equal
deleted
inserted
replaced
34:261e2d2d26ad | 35:122c56779f2b |
---|---|
68 | 68 |
69 # packed files | 69 # packed files |
70 VIRTUAL_ENV='''%(VIRTUAL_ENV)s'''.decode('base64').decode('zlib') | 70 VIRTUAL_ENV='''%(VIRTUAL_ENV)s'''.decode('base64').decode('zlib') |
71 PACKAGE_SOURCES=%(PACKAGE_SOURCES)s | 71 PACKAGE_SOURCES=%(PACKAGE_SOURCES)s |
72 CARTON=%(CARTON)s | 72 CARTON=%(CARTON)s |
73 | |
74 # post-install scripts | |
75 PYTHON_SCRIPTS=%(PYTHON_SCRIPTS)s | |
73 | 76 |
74 # parse options | 77 # parse options |
75 usage = os.path.basename(sys.argv[0]) + ' [options]' | 78 usage = os.path.basename(sys.argv[0]) + ' [options]' |
76 parser = OptionParser(usage=usage, description=__doc__) | 79 parser = OptionParser(usage=usage, description=__doc__) |
77 parser.add_option('--env', dest='env', help="environment name [DEFAULT: " + ENV + "]") | 80 parser.add_option('--env', dest='env', help="environment name [DEFAULT: " + ENV + "]") |
156 # you probably don't have os.chmod | 159 # you probably don't have os.chmod |
157 pass | 160 pass |
158 | 161 |
159 # cleanup virtualenv tempdir | 162 # cleanup virtualenv tempdir |
160 shutil.rmtree(tempdir) | 163 shutil.rmtree(tempdir) |
164 | |
165 # run post-install scripts | |
166 for script in PYTHON_SCRIPTS: | |
167 if not os.path.isabs(script): | |
168 script = os.path.join(os.path.abspath(ENV), script) | |
169 call([python, script]) | |
161 """ | 170 """ |
162 | 171 |
163 def isURL(path): | 172 def isURL(path): |
164 return path.startswith('http://') or path.startswith('https://') | 173 return path.startswith('http://') or path.startswith('https://') |
165 | 174 |
176 parser.add_option('-o', dest='outfile', | 185 parser.add_option('-o', dest='outfile', |
177 help="specify outfile; otherwise it will come from environment_name") | 186 help="specify outfile; otherwise it will come from environment_name") |
178 parser.add_option('-p', '--package', dest='package', | 187 parser.add_option('-p', '--package', dest='package', |
179 action='store_true', default=False, | 188 action='store_true', default=False, |
180 help="create python packages from sources; do not take entire subdirectory") | 189 help="create python packages from sources; do not take entire subdirectory") |
190 parser.add_option('--python-script', dest='python_scripts', default=[], | |
191 action='append', | |
192 help="post-uncartoning python scripts to run in the virtualenv; these should be relative to $VIRTUAL_ENV") | |
181 parser.add_option('--virtualenv', dest='virtualenv', | 193 parser.add_option('--virtualenv', dest='virtualenv', |
182 help="use this virtualenv URL or file tarball") | 194 help="use this virtualenv URL or file tarball") |
183 options, args = parser.parse_args(args) | 195 options, args = parser.parse_args(args) |
184 if len(args) < 2: | 196 if len(args) < 2: |
185 parser.print_usage() | 197 parser.print_usage() |
267 if outfile is None: | 279 if outfile is None: |
268 outfile = environment + '.py' | 280 outfile = environment + '.py' |
269 variables = {'VIRTUAL_ENV': VIRTUAL_ENV.encode('zlib').encode('base64'), | 281 variables = {'VIRTUAL_ENV': VIRTUAL_ENV.encode('zlib').encode('base64'), |
270 'ENV': environment, | 282 'ENV': environment, |
271 'CARTON': repr(carton), | 283 'CARTON': repr(carton), |
284 'PYTHON_SCRIPTS': repr(options.python_scripts), | |
272 'PACKAGE_SOURCES': repr(source_array)} | 285 'PACKAGE_SOURCES': repr(source_array)} |
273 f = file(outfile, 'w') | 286 f = file(outfile, 'w') |
274 f.write(template % variables) | 287 f.write(template % variables) |
275 f.close() | 288 f.close() |
276 try: | 289 try: |