/Rakefile

https://github.com/SQLDroid/SQLDroid · Rakefile · 70 lines · 58 code · 12 blank · 0 comment · 3 complexity · 1d36e946fb76609edb1a82152e4af9e4 MD5 · raw file

  1. require 'fileutils'
  2. require File.expand_path 'lib/sqldroid/version', File.dirname(__FILE__)
  3. require 'rake/clean'
  4. unless ENV['ANDROID_HOME'] && Dir.exist?(ENV['ANDROID_HOME'])
  5. if ENV['ANDROID_SDK']
  6. ENV['ANDROID_HOME'] = ENV['ANDROID_SDK']
  7. else
  8. dx_location = `which dx`
  9. unless $? == 0
  10. raise 'Unable to find ANDROID_HOME environment variable or the "dx" command.'
  11. end
  12. ENV['ANDROID_HOME'] = File.dirname(File.dirname(File.dirname(dx_location)))
  13. end
  14. end
  15. TARGET_DIR = File.expand_path 'target'
  16. JAR = "sqldroid-#{SQLDroid::MAVEN_VERSION}.jar"
  17. JAR_IN_TARGET = "#{TARGET_DIR}/#{JAR}"
  18. LIB_DIR = File.expand_path 'lib/sqldroid'
  19. JAR_IN_GEM = "#{LIB_DIR}/#{JAR}"
  20. GEM_BASE_FILE = "sqldroid-#{SQLDroid::VERSION}-java.gem"
  21. GEM_FILE_TARGET = "#{TARGET_DIR}/#{GEM_BASE_FILE}"
  22. JAVA_SRC_FILES = Dir[File.expand_path 'src/main/java/**/*.java']
  23. CLEAN.include('target')
  24. CLOBBER.include('target', 'lib/sqldroid/sqldroid-*.jar')
  25. desc 'Generate the binary and source jars'
  26. task jar: JAR_IN_TARGET
  27. file JAR_IN_TARGET => JAVA_SRC_FILES do
  28. sh 'mvn install -B'
  29. end
  30. file JAR_IN_GEM => JAR_IN_TARGET do
  31. FileUtils.rm_rf Dir["#{LIB_DIR}/sqldroid-*.jar"]
  32. FileUtils.cp JAR_IN_TARGET, JAR_IN_GEM
  33. end
  34. desc 'Create a RubyGem for SQLDroid'
  35. task gem: GEM_FILE_TARGET
  36. file GEM_FILE_TARGET => JAR_IN_GEM do
  37. pom = File.read(File.expand_path('pom.xml', __dir__))
  38. maven_version = pom[%r{(?<=<version>)([0-9a-zA-Z.-]*)(?=</version>)}]
  39. version_file_name = File.expand_path('lib/sqldroid/version.rb', __dir__)
  40. version_file_content = File.read(version_file_name)
  41. version_file_content.sub!(/^\s*pom = .*$/, '')
  42. version_file_content.sub!(/^\s*MAVEN_VERSION = .*$/, " MAVEN_VERSION = '#{maven_version}'")
  43. File.write(version_file_name, version_file_content)
  44. sh 'gem build sqldroid.gemspec'
  45. FileUtils.mv GEM_BASE_FILE, GEM_FILE_TARGET
  46. sh "git checkout #{version_file_name}"
  47. end
  48. desc 'Tag the project and push the tag to GitHub'
  49. task :tag do
  50. output = `git status --porcelain`
  51. raise "Workspace not clean!\n#{output}" unless output.empty?
  52. sh "git tag #{SQLDroid::VERSION}"
  53. sh 'git push --tags'
  54. end
  55. desc 'Release SQLDroid as a Ruby gem to rubygems.org'
  56. task release: [:tag, GEM_FILE_TARGET] do
  57. sh "gem push #{GEM_FILE_TARGET}"
  58. end