diff --git a/.gitignore b/.gitignore index 89efb0f..b0a5f7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ +dependency-reduced-pom.xml +tags build +target *.swp +*.swo diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..df1ed8f --- /dev/null +++ b/Rakefile @@ -0,0 +1,40 @@ +require 'rake/clean' + +task :default => [:test] +task :test do + puts "TODO: test!" +end + +CLEAN.include 'build' + +desc "Runs a single file" +task :run, [:file_name] => [:compile] do |t, args| + Dir.chdir("#{File.dirname(__FILE__)}") + file_name = args[:file_name] + raise "must specify file to run" unless file_name && File.exists?(file_name) + Dir.chdir("#{File.dirname(__FILE__)}/build") + sh "java #{File.basename(file_name, '.rb')}" +end + +desc "Generate the java source file" +task :generate, [:file_name] => [:jruby_check] do |t, args| + Dir.chdir("#{File.dirname(__FILE__)}") + file_name = args[:file_name] + raise "must specify file to generate" unless file_name && File.exists?(file_name) + sh "jruby -I target:src/main/ruby src/main/ruby/fast_ruby.rb #{file_name}" +end + +desc "Compile the java source to bytecode" +task :compile, [:file_name] => [:generate] do |t, args| + Dir.chdir("#{File.dirname(__FILE__)}") + file_name = args[:file_name] + + raise "must specify file to compile" unless file_name && File.exists?(file_name) + Dir.chdir("#{File.dirname(__FILE__)}/build") + sh "javac #{File.basename(file_name, '.rb')}.java" +end + + +task :jruby_check do |t| + raise "Must have jruby installed" if `which jruby`.strip.empty? +end diff --git a/src/main/ruby/fast_ruby/compiler.rb b/src/main/ruby/fast_ruby/compiler.rb index 83443b5..f8e4a2d 100644 --- a/src/main/ruby/fast_ruby/compiler.rb +++ b/src/main/ruby/fast_ruby/compiler.rb @@ -38,17 +38,19 @@ def compile build_robject + FileUtils.mkdir('build') unless Dir.exists?('build') + # all generated sources sources.each do |source| type = source.types[0] - File.open(type.name.to_s + ".java", 'w') do |file| + File.open(File.join('build', type.name.to_s + ".java"), 'w') do |file| file.write(source_to_document(source).get) end end # all copied sources COPIED_SOURCES.each do |srcname| - FileUtils.cp(File.join('src/main/java', srcname), ".") + FileUtils.cp(File.join('src/main/java', srcname), "build/.") end end @@ -95,4 +97,4 @@ def build_robject end end end -end \ No newline at end of file +end diff --git a/src/test/ruby/playground.rb b/src/test/ruby/playground.rb new file mode 100644 index 0000000..b750340 --- /dev/null +++ b/src/test/ruby/playground.rb @@ -0,0 +1,6 @@ +if true + puts "IF" +else + puts "HUH" +end +