scriptlandia 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/buildfile +59 -0
- data/lib/languages/ant/config.yaml +44 -0
- data/lib/languages/beanshell/config.yaml +6 -0
- data/lib/languages/clojure/config.yaml +7 -0
- data/lib/languages/extension_mapping.yaml +51 -0
- data/lib/languages/fan/config.yaml +8 -0
- data/lib/languages/fortress/config.yaml +11 -0
- data/lib/languages/groovy/config.yaml +7 -0
- data/lib/languages/jaskell/config.yaml +9 -0
- data/lib/languages/javascript/config.yaml +6 -0
- data/lib/languages/jawk/config.yaml +9 -0
- data/lib/languages/jruby/config.yaml +6 -0
- data/lib/languages/judo/config.yaml +7 -0
- data/lib/languages/jython/config.yaml +9 -0
- data/lib/languages/lolcode/config.yaml +6 -0
- data/lib/languages/pnuts/config.yaml +7 -0
- data/lib/languages/ptilde/config.yaml +8 -0
- data/lib/languages/scala/config.yaml +12 -0
- data/lib/languages/sleep/config.yaml +6 -0
- data/lib/languages/tcl/config.yaml +9 -0
- data/lib/languages/yoix/config.yaml +6 -0
- data/lib/scriptlandia.rb +105 -0
- data/lib/settings.yaml +33 -0
- metadata +95 -0
data/lib/buildfile
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# buildfile
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
settings = YAML::load File.open(File.dirname(__FILE__) + '/settings.yaml')
|
6
|
+
|
7
|
+
ENV['JAVA_HOME'] = settings['java_home']
|
8
|
+
|
9
|
+
repositories.local = settings['repositories']['local']
|
10
|
+
|
11
|
+
settings['repositories']['remote'].each do |repository|
|
12
|
+
repositories.remote << repository
|
13
|
+
end
|
14
|
+
|
15
|
+
#options.proxy.http = ''
|
16
|
+
#options.proxy.exclude << '*.mycompany.com'
|
17
|
+
#options.proxy.exclude << 'localhost'
|
18
|
+
#ENV['http_proxy'] = ''
|
19
|
+
|
20
|
+
define 'buildr' do
|
21
|
+
def language_folder ext_mapping, ext
|
22
|
+
ext_mapping.each do |folder, extensions|
|
23
|
+
if folder == ext
|
24
|
+
return folder
|
25
|
+
end
|
26
|
+
|
27
|
+
if extensions.include?(ext)
|
28
|
+
return folder
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def build dep
|
34
|
+
extension = ENV['EXT']
|
35
|
+
|
36
|
+
if(extension == nil)
|
37
|
+
puts "Please specify language name or extension."
|
38
|
+
else
|
39
|
+
puts "ext: " + extension
|
40
|
+
|
41
|
+
ext_mapping = YAML::load File.open(File.dirname(__FILE__) + '/languages/extension_mapping.yaml')
|
42
|
+
|
43
|
+
language = language_folder(ext_mapping, extension)
|
44
|
+
|
45
|
+
puts "language: " + language.to_s
|
46
|
+
|
47
|
+
lang_config = YAML::load File.open(File.dirname(__FILE__) + '/languages/' + language + '/config.yaml')
|
48
|
+
|
49
|
+
puts 'Installing ' + language + ' language...'
|
50
|
+
|
51
|
+
lang_config['artifacts'].each do |name, a|
|
52
|
+
artifact(a).invoke
|
53
|
+
end
|
54
|
+
|
55
|
+
puts 'Language ' + language + ' installed.'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
jvmargs:
|
2
|
+
|
3
|
+
artifacts:
|
4
|
+
bsh: bsh:bsh:jar:2.0b5
|
5
|
+
bcel: bcel:bcel:jar:5.1
|
6
|
+
bsf: bsf:bsf:jar:2.4.0
|
7
|
+
log4j: log4j:log4j:jar:1.2.13
|
8
|
+
oro: oro:oro:jar:2.0.8
|
9
|
+
regexp: regexp:regexp:jar:1.3
|
10
|
+
xml-resolver: xml-resolver:xml-resolver:jar:1.1
|
11
|
+
mail: javax.mail:mail:jar:1.4
|
12
|
+
activation: javax.activation:activation:jar:1.1
|
13
|
+
jdepend: jdepend:jdepend:jar:2.7
|
14
|
+
jsch: com.jcraft:jsch:jar:0.1.29
|
15
|
+
junit: junit:junit:jar:3.8.2
|
16
|
+
commons-logging-api: commons-logging:commons-logging-api:jar:1.0.4
|
17
|
+
commons-net: commons-net:commons-net:jar:1.4.0
|
18
|
+
|
19
|
+
ant: org.apache.ant:ant:jar:1.7.1
|
20
|
+
ant-apache-bcel: org.apache.ant:ant-apache-bcel:jar:1.7.1
|
21
|
+
ant-apache-bsf: org.apache.ant:ant-apache-bsf:jar:1.7.1
|
22
|
+
ant-apache-log4j: org.apache.ant:ant-apache-log4j:jar:1.7.1
|
23
|
+
ant-apache-oro: org.apache.ant:ant-apache-oro:jar:1.7.1
|
24
|
+
ant-apache-regexp: org.apache.ant:ant-apache-regexp:jar:1.7.1
|
25
|
+
ant-apache-resolver: org.apache.ant:ant-apache-resolver:jar:1.7.1
|
26
|
+
ant-commons-logging: org.apache.ant:ant-commons-logging:jar:1.7.1
|
27
|
+
ant-commons-net: org.apache.ant:ant-commons-net:jar:1.7.1
|
28
|
+
ant-javamail: org.apache.ant:ant-javamail:jar:1.7.1
|
29
|
+
ant-jdepend: org.apache.ant:ant-jdepend:jar:1.7.1
|
30
|
+
ant-jsch: org.apache.ant:ant-jsch:jar:1.7.1
|
31
|
+
ant-junit: org.apache.ant:ant-junit:jar:1.7.1
|
32
|
+
ant-launcher: org.apache.ant:ant-launcher:jar:1.7.1
|
33
|
+
ant-nodeps: org.apache.ant:ant-nodeps:jar:1.7.1
|
34
|
+
ant-swing: org.apache.ant:ant-swing:jar:1.7.1
|
35
|
+
ant-testutil: org.apache.ant:ant-testutil:jar:1.7.1
|
36
|
+
ant-trax: org.apache.ant:ant-trax:jar:1.7.1
|
37
|
+
ant-pack200: org.apache.ant:ant-pack200:jar:1.7.1
|
38
|
+
ant-apt: org.apache.ant:ant-apt:jar:1.7.1
|
39
|
+
ant-antlr: org.apache.ant:ant-antlr:jar:1.7.1
|
40
|
+
|
41
|
+
start_class: org.apache.tools.ant.Main
|
42
|
+
|
43
|
+
command_line:
|
44
|
+
['-f']
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# extension_mapping.yaml
|
2
|
+
|
3
|
+
ant: [ant, build.xml]
|
4
|
+
|
5
|
+
beanshell: [bsh]
|
6
|
+
|
7
|
+
class: [class]
|
8
|
+
|
9
|
+
clojure: [clj]
|
10
|
+
|
11
|
+
etl: [etl]
|
12
|
+
|
13
|
+
fan: [fan, pod]
|
14
|
+
|
15
|
+
fortress: [fss]
|
16
|
+
|
17
|
+
freemarker: [ftl, freemarker]
|
18
|
+
|
19
|
+
groovy: [groovy]
|
20
|
+
|
21
|
+
jaskell: [jsl, jaskell]
|
22
|
+
|
23
|
+
javascript: [js, javascript]
|
24
|
+
|
25
|
+
jawk: [jawk, awk]
|
26
|
+
|
27
|
+
jelly: [jelly]
|
28
|
+
|
29
|
+
judo: [judo]
|
30
|
+
|
31
|
+
jython: [py, python, jython]
|
32
|
+
|
33
|
+
lolcode: [lol, lcd]
|
34
|
+
|
35
|
+
maven: [mvn, maven, pom.xml]
|
36
|
+
|
37
|
+
pnuts: [pnut]
|
38
|
+
|
39
|
+
ptilde: [p7e, p7ei]
|
40
|
+
|
41
|
+
jruby: [rb, ruby]
|
42
|
+
|
43
|
+
scala: [scala]
|
44
|
+
|
45
|
+
sleep: [sl, sleep]
|
46
|
+
|
47
|
+
tcl: [tcl]
|
48
|
+
|
49
|
+
velocity: [vm, velocity]
|
50
|
+
|
51
|
+
yoix: [yx]
|
@@ -0,0 +1,11 @@
|
|
1
|
+
jvmargs:
|
2
|
+
|
3
|
+
artifacts:
|
4
|
+
fortress: com.sun.fortress:fortress:jar:588
|
5
|
+
fortress-lib: com.sun.fortress:fortress-lib:jar:588
|
6
|
+
xtc: xtc:xtc:jar:1.10.0
|
7
|
+
concurrent: concurrent:concurrent:jar:1.3.4
|
8
|
+
bcel: bcel:bcel:jar:5.2
|
9
|
+
plt: edu.rice:plt:jar:20070717-1913
|
10
|
+
|
11
|
+
start_class: com.sun.fortress.interpreter.drivers.fs
|
@@ -0,0 +1,9 @@
|
|
1
|
+
jvmargs:
|
2
|
+
['-Dpython.home=#{repositories.local}/jython/jython/2.2.1',
|
3
|
+
'-Dpython.cachedir=#{repositories.local}/jython/jython/2.2.1/cachedir']
|
4
|
+
|
5
|
+
artifacts:
|
6
|
+
jython: jython:jython:jar:2.2.1
|
7
|
+
jython-lib: jython:jython-lib:jar:2.2.1
|
8
|
+
|
9
|
+
start_class: org.python.util.jython
|
@@ -0,0 +1,12 @@
|
|
1
|
+
jvmargs:
|
2
|
+
|
3
|
+
artifacts:
|
4
|
+
scala-lirary: org.scala-lang:scala-library:jar:2.7.1
|
5
|
+
scala-compiler: org.scala-lang:scala-compiler:jar:2.7.1
|
6
|
+
scala-dbc: org.scala-lang:scala-dbc:jar:2.7.1
|
7
|
+
scala-decoder: org.scala-lang:scala-decoder:jar:2.7.1
|
8
|
+
|
9
|
+
start_class: scala.tools.nsc.MainGenericRunner
|
10
|
+
|
11
|
+
command_line:
|
12
|
+
['-nocompdaemon', '-howtorun:script']
|
data/lib/scriptlandia.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
# scriptlandia.rb
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rjb'
|
6
|
+
|
7
|
+
class String
|
8
|
+
def interpolate vars
|
9
|
+
s_i = self.dup
|
10
|
+
|
11
|
+
vars.each do |key, value|
|
12
|
+
regexp = Regexp.new('#\{' + key + '\}')
|
13
|
+
|
14
|
+
s_i.gsub! regexp, value
|
15
|
+
end
|
16
|
+
|
17
|
+
s_i
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
module Scriptlandia
|
23
|
+
class Launcher
|
24
|
+
def initialize
|
25
|
+
@settings = YAML::load File.open(File.dirname(__FILE__) + '/settings.yaml')
|
26
|
+
@ext_mapping = YAML::load File.open(File.dirname(__FILE__) + '/languages/extension_mapping.yaml')
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.extension name
|
30
|
+
name[name.rindex('.')+1, name.length]
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.language_folder ext_mapping, name
|
34
|
+
language_folder = nil
|
35
|
+
|
36
|
+
ext = extension(name)
|
37
|
+
|
38
|
+
ext_mapping.each do |folder, extensions|
|
39
|
+
if extensions.include?(ext) or extensions.include?(name)
|
40
|
+
language_folder = folder
|
41
|
+
break
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
language_folder
|
46
|
+
end
|
47
|
+
|
48
|
+
def launch
|
49
|
+
script_name = ARGV[0]
|
50
|
+
|
51
|
+
language = Launcher.language_folder(@ext_mapping, script_name)
|
52
|
+
|
53
|
+
if(language == nil)
|
54
|
+
puts "Unsupported language/extension: " + Launcher.extension(script_name)
|
55
|
+
else
|
56
|
+
lang_config = YAML::load File.open(File.dirname(__FILE__) + '/languages/' +
|
57
|
+
language + '/config.yaml')
|
58
|
+
|
59
|
+
ENV['JAVA_HOME'] = @settings['java_home']
|
60
|
+
local_repository = @settings['repositories']['local']
|
61
|
+
|
62
|
+
vars = {'repositories.local' => local_repository }
|
63
|
+
|
64
|
+
jvm_args = lang_config['jvmargs']
|
65
|
+
jvm_args = [] if jvm_args == nil
|
66
|
+
|
67
|
+
jvm_args = jvm_args.collect { |arg| arg.interpolate(vars) }
|
68
|
+
|
69
|
+
classpath = lang_config['classpath']
|
70
|
+
classpath = [] if classpath == nil
|
71
|
+
|
72
|
+
lang_config['artifacts'].each do |name, artifact|
|
73
|
+
group, id, type,version = artifact.split(':')
|
74
|
+
|
75
|
+
file_name = local_repository + '/' +
|
76
|
+
group.gsub('.', '/') + '/' +
|
77
|
+
id.gsub('.', '/') + '/' +
|
78
|
+
version + '/' +
|
79
|
+
id.gsub('.', '/') + '-' + version + '.' + type
|
80
|
+
|
81
|
+
unless File.exist? file_name
|
82
|
+
puts 'File ' + file_name + ' does not exists.'
|
83
|
+
else
|
84
|
+
classpath << file_name
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
pause = false
|
89
|
+
|
90
|
+
if(ARGV.include? '--wait')
|
91
|
+
ARGV.delete '--wait'
|
92
|
+
pause = true
|
93
|
+
end
|
94
|
+
|
95
|
+
Rjb::load(classpath.join(File::PATH_SEPARATOR), jvmargs = jvm_args)
|
96
|
+
|
97
|
+
ARGV[0, 0] = lang_config['command_line'] if lang_config['command_line']
|
98
|
+
|
99
|
+
Rjb::import(lang_config['start_class']).main(ARGV)
|
100
|
+
|
101
|
+
STDIN.gets if pause
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/lib/settings.yaml
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
java_home:
|
2
|
+
c:/Java/jdk1.5.0
|
3
|
+
|
4
|
+
repositories:
|
5
|
+
|
6
|
+
# customize user local maven2 repository location
|
7
|
+
local: c:/Work/maven-repository
|
8
|
+
|
9
|
+
# prefer the local or nearest mirrors
|
10
|
+
remote:
|
11
|
+
- file://c:/Work/maven-repository-accelerator
|
12
|
+
- http://scriptlandia-repository.googlecode.com/svn/trunk/languages
|
13
|
+
- http://scriptlandia-repository.googlecode.com/svn/trunk/tools
|
14
|
+
- http://repository.springsource.com/maven/bundles/release
|
15
|
+
- http://repository.springsource.com/maven/bundles/external
|
16
|
+
- http://repository.springsource.com/maven/libraries/release
|
17
|
+
- http://repository.springsource.com/maven/libraries/external
|
18
|
+
- http://repository.jboss.com/maven2
|
19
|
+
- http://repo.mergere.com/maven2
|
20
|
+
- http://repo1.maven.org/maven2
|
21
|
+
- http://repo1.maven.org/maven-spring
|
22
|
+
- http://dist.codehaus.org
|
23
|
+
- http://repository.codehaus.org
|
24
|
+
- http://download.java.net/maven/2
|
25
|
+
- https://maven-repository.dev.java.net/nonav/repository
|
26
|
+
- http://download.java.net/maven/2
|
27
|
+
- http://jyaml.sourceforge.net/m2-repo
|
28
|
+
- http://dist.codehaus.org/mule/dependencies/maven2
|
29
|
+
- http://scala-tools.org/repo-releases
|
30
|
+
|
31
|
+
#options:
|
32
|
+
# proxy:
|
33
|
+
# http: ''
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scriptlandia
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexander Shvets
|
8
|
+
autorequire: scriptlandia-r
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-02 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Scriptlandia launcher.
|
17
|
+
email: alexander.shvets@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- lib/buildfile
|
26
|
+
- lib/languages
|
27
|
+
- lib/languages/ant
|
28
|
+
- lib/languages/ant/config.yaml
|
29
|
+
- lib/languages/beanshell
|
30
|
+
- lib/languages/beanshell/config.yaml
|
31
|
+
- lib/languages/clojure
|
32
|
+
- lib/languages/clojure/config.yaml
|
33
|
+
- lib/languages/extension_mapping.yaml
|
34
|
+
- lib/languages/fan
|
35
|
+
- lib/languages/fan/config.yaml
|
36
|
+
- lib/languages/fortress
|
37
|
+
- lib/languages/fortress/config.yaml
|
38
|
+
- lib/languages/groovy
|
39
|
+
- lib/languages/groovy/config.yaml
|
40
|
+
- lib/languages/jaskell
|
41
|
+
- lib/languages/jaskell/config.yaml
|
42
|
+
- lib/languages/javascript
|
43
|
+
- lib/languages/javascript/config.yaml
|
44
|
+
- lib/languages/jawk
|
45
|
+
- lib/languages/jawk/config.yaml
|
46
|
+
- lib/languages/jruby
|
47
|
+
- lib/languages/jruby/config.yaml
|
48
|
+
- lib/languages/judo
|
49
|
+
- lib/languages/judo/config.yaml
|
50
|
+
- lib/languages/jython
|
51
|
+
- lib/languages/jython/config.yaml
|
52
|
+
- lib/languages/lolcode
|
53
|
+
- lib/languages/lolcode/config.yaml
|
54
|
+
- lib/languages/pnuts
|
55
|
+
- lib/languages/pnuts/config.yaml
|
56
|
+
- lib/languages/ptilde
|
57
|
+
- lib/languages/ptilde/config.yaml
|
58
|
+
- lib/languages/scala
|
59
|
+
- lib/languages/scala/config.yaml
|
60
|
+
- lib/languages/sleep
|
61
|
+
- lib/languages/sleep/config.yaml
|
62
|
+
- lib/languages/tcl
|
63
|
+
- lib/languages/tcl/config.yaml
|
64
|
+
- lib/languages/yoix
|
65
|
+
- lib/languages/yoix/config.yaml
|
66
|
+
- lib/scriptlandia.rb
|
67
|
+
- lib/settings.yaml
|
68
|
+
has_rdoc: false
|
69
|
+
homepage:
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
80
|
+
version:
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: "0"
|
86
|
+
version:
|
87
|
+
requirements:
|
88
|
+
- none
|
89
|
+
rubyforge_project:
|
90
|
+
rubygems_version: 1.0.1
|
91
|
+
signing_key:
|
92
|
+
specification_version: 2
|
93
|
+
summary: .
|
94
|
+
test_files: []
|
95
|
+
|