require "rake" require "dtc_rake/ui" require "uu/os/attachment" require "uu/os/rest/binary_value" require "uu/os/search" require "uu/os/security/session" require "uu/os/uesuri_builder" module DtcRake include DtcRake::UI def mv_to_output_dir(src_dir, src_file) output_dir = DtcRake::Config.instance.output_dir output_dir_name = File.basename(output_dir) # get just the last path element (e.g. "target") FileUtils.mkpath output_dir src_file_path = File.join(src_dir, output_dir_name, src_file) dest_file = File.join(output_dir, src_file) FileUtils.mv src_file_path, dest_file success "#{dest_file} created" end module_function :mv_to_output_dir # Checks if JRuby is being used. This check is important when building .war # files - gems with native extensions (like json, bson) must be added to the # output .war file for Java platform. Otherwise certain gems (e.g. # uu_os_persistence) cannot be loaded when deployed on servlet container # (Tomcat). def check_jruby! error(".war files must be built using JRuby!") unless RUBY_PLATFORM == "java" end module_function :check_jruby! def upload_pack(attrs) file = attrs[:file] artifact_uri = attrs[:appbox_uri] || DtcRake::Product.instance.appbox_uri attachment_code = attrs[:attachment_code] credentials = attrs[:credentials] abort "Specify login credentials" unless credentials UU::OS::Security::Session.login(credentials) attch_uri = UU::OS::UESURIBuilder.parse_uesuri(artifact_uri).set_object_code(attachment_code).to_uesuri if UU::OS::Search.exists(attch_uri) File.open(file, "rb") do |f| UU::OS::Attachment.check_in(attch_uri, data: UU::OS::REST::BinaryValue.new(f)) end else File.open(file, "rb") do |f| attch_uri = UU::OS::Attachment.create(artifact_uri, code: attachment_code, data: UU::OS::REST::BinaryValue.new(f) ) end end attch_uri end module_function :upload_pack end