mirror of
https://github.com/kanaka/mal.git
synced 2024-09-22 02:58:15 +03:00
8e2d4a4ccb
Also in this commit: - fix *ARGV* setup in erlang and racket. - print startup message in fsharp Dist/packaging support for most implementations and also generate a */mal standalone app for most languages. The following implementations still have ability to generate a single */mal standalone application: - guile - julia - matlab (mkoctfile doesn't actually package up source files) - swift - vb (mkbundle error) Also, the following are mostly packaged into a single file but need some module dependencies - coffee: requires node_modules/ffi - es6: requires node_modules/ffi - js: requires node_modules/ffi - lua: module 'readline' not found - miniMAL: cannot find module '/mal/node_readline.js' - r: needs lib directory
77 lines
2.5 KiB
Groovy
77 lines
2.5 KiB
Groovy
/* From:
|
|
* http://groovy.jmiguel.eu/groovy.codehaus.org/WrappingGroovyScript.html
|
|
*/
|
|
/*
|
|
* Copyright 2002-2007 the original author or authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* Wrap a script and groovy jars to an executable jar
|
|
*/
|
|
def cli = new CliBuilder()
|
|
cli.h( longOpt: 'help', required: false, 'show usage information' )
|
|
cli.d( longOpt: 'destfile', argName: 'destfile', required: false, args: 1, 'jar destintation filename, defaults to {mainclass}.jar' )
|
|
cli.m( longOpt: 'mainclass', argName: 'mainclass', required: true, args: 1, 'fully qualified main class, eg. HelloWorld' )
|
|
cli.c( longOpt: 'groovyc', required: false, 'Run groovyc' )
|
|
|
|
//--------------------------------------------------------------------------
|
|
def opt = cli.parse(args)
|
|
if (!opt) { return }
|
|
if (opt.h) {
|
|
cli.usage();
|
|
return
|
|
}
|
|
|
|
def mainClass = opt.m
|
|
def scriptBase = mainClass.replace( '.', '/' )
|
|
def scriptFile = new File( scriptBase + '.groovy' )
|
|
if (!scriptFile.canRead()) {
|
|
println "Cannot read script file: '${scriptFile}'"
|
|
return
|
|
}
|
|
def destFile = scriptBase + '.jar'
|
|
if (opt.d) {
|
|
destFile = opt.d
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
def ant = new AntBuilder()
|
|
|
|
if (opt.c) {
|
|
ant.echo( "Compiling ${scriptFile}" )
|
|
org.codehaus.groovy.tools.FileSystemCompiler.main( [ scriptFile ] as String[] )
|
|
}
|
|
|
|
def GROOVY_HOME = new File( System.getenv('GROOVY_HOME') )
|
|
if (!GROOVY_HOME.canRead()) {
|
|
ant.echo( "Missing environment variable GROOVY_HOME: '${GROOVY_HOME}'" )
|
|
return
|
|
}
|
|
|
|
ant.jar( destfile: destFile, compress: true, index: true ) {
|
|
//fileset( dir: '.', includes: scriptBase + '*.class' )
|
|
fileset( dir: '.', includes: '*.class' )
|
|
|
|
zipgroupfileset( dir: GROOVY_HOME, includes: 'embeddable/groovy-all-*.jar' )
|
|
zipgroupfileset( dir: GROOVY_HOME, includes: 'lib/commons*.jar' )
|
|
// add more jars here
|
|
|
|
manifest {
|
|
attribute( name: 'Main-Class', value: mainClass )
|
|
}
|
|
}
|
|
|
|
ant.echo( "Run script using: \'java -jar ${destFile} ...\'" )
|