class Mamiya::Steps::Build
Public Instance Methods
package()
click to toggle source
# File lib/mamiya/steps/build.rb, line 55 def package @package ||= Mamiya::Package.new(package_path) end
run!()
click to toggle source
# File lib/mamiya/steps/build.rb, line 13 def run! @exception = nil unless script_file raise ScriptFileNotSpecified, "Set script files to :script_file" end unless script.application raise ApplicationNotSpecified, ":application should be specified in your script file" end run_before_build run_prepare_build run_build # XXX: Is this really suitable here? Package class should do? copy_deploy_scripts set_metadata build_package logger.info "Packed." rescue Exception => e @exception = e raise ensure logger.warn "Exception occured, cleaning up..." if @exception if script_dest.exist? FileUtils.remove_entry_secure script_dest end logger.info "Running script.after_build" script.after_build[@exception] unless @exception logger.info "DONE: #{package_name} built at #{package.path}" end end
Private Instance Methods
build_package()
click to toggle source
# File lib/mamiya/steps/build.rb, line 118 def build_package logger.debug "Packaging to: #{package.path}" logger.debug "meta=#{package.meta.inspect}" package.build!(script.build_from, exclude_from_package: script.exclude_from_package || [], dereference_symlinks: script.dereference_symlinks || false, package_under: script.package_under || nil, logger: logger) end
copy_deploy_scripts()
click to toggle source
# File lib/mamiya/steps/build.rb, line 85 def copy_deploy_scripts # XXX: TODO: move to another class? logger.info "Copying script files" if script_dest.exist? logger.warn "Removing existing .mamiya.script" FileUtils.remove_entry_secure script_dest end script_dest.mkdir logger.debug "- #{script_file} -> #{script_dest}" FileUtils.cp script_file, script_dest if script.script_additionals script_dir = Pathname.new(File.dirname(script_file)) script.script_additionals.each do |additional| src = script_dir.join(additional) dst = script_dest.join(additional) logger.debug "- #{src} -> #{dst}" FileUtils.mkdir_p dst.dirname FileUtils.cp_r src, dst end end end
package_name()
click to toggle source
# File lib/mamiya/steps/build.rb, line 128 def package_name @package_name ||= begin logger.debug "Determining package name..." name = Mamiya.chdir(script.build_from) { script.package_name[ [Time.now.strftime("%Y%m%d%H%M%S"), script.application] ].join('-') } logger.debug "Package name determined: #{name}" name end end
package_path()
click to toggle source
# File lib/mamiya/steps/build.rb, line 141 def package_path @package_path ||= File.join(script.build_to, package_name) end
run_before_build()
click to toggle source
# File lib/mamiya/steps/build.rb, line 61 def run_before_build logger.info "Running script.before_build" script.before_build[] end
run_build()
click to toggle source
# File lib/mamiya/steps/build.rb, line 75 def run_build # FIXME: This could show warning saying "conflicting chdir during another chdir block". # Do not use `Dir.chdir` without block anyware. Mamiya.chdir(script.build_from) do logger.info "Running script.build" logger.debug "pwd=#{Dir.pwd}" script.build[] end end
run_prepare_build()
click to toggle source
# File lib/mamiya/steps/build.rb, line 66 def run_prepare_build unless script.skip_prepare_build logger.info "Running script.prepare_build" script.prepare_build[File.exists?(script.build_from)] else logger.debug "prepare_build skipped due to script.skip_prepare_build" end end
script_dest()
click to toggle source
# File lib/mamiya/steps/build.rb, line 149 def script_dest @script_dest ||= if script.package_under Pathname.new File.join(script.build_from, script.package_under, '.mamiya.script') else Pathname.new File.join(script.build_from, '.mamiya.script') end end
script_file()
click to toggle source
# File lib/mamiya/steps/build.rb, line 145 def script_file @script_file ||= script.script_file || script._file end
set_metadata()
click to toggle source
# File lib/mamiya/steps/build.rb, line 110 def set_metadata package.meta[:application] = script.application package.meta[:script] = File.basename(script_file) Mamiya.chdir(script.build_from) do package.meta.replace script.package_meta[package.meta] end end