Sha256: 9145f50b000b3e0d6b4c713f9f2bf9a4c442b246643ce1790b407647f96e793e
Contents?: true
Size: 1.99 KB
Versions: 3
Compression:
Stored size: 1.99 KB
Contents
# encoding: UTF-8 module Tetra # generates a package build script from bash_history module Scriptable # returns a build script for this package def _to_script(project, history_path) project.from_directory do history_lines = File.readlines(history_path).map(&:strip) relevant_lines = history_lines .reverse .take_while { |e| e.match(/tetra +dry-run +start/).nil? } .reverse .take_while { |e| e.match(/tetra +dry-run +finish/).nil? } .select { |e| e.match(/^#/).nil? } script_lines = [ "#!/bin/bash", "set -xe", "PROJECT_PREFIX=`readlink -e .`", "cd #{project.latest_dry_run_directory}" ] + script_body(project, relevant_lines) new_content = script_lines.join("\n") + "\n" result_dir = File.join(project.packages_dir, project.name) FileUtils.mkdir_p(result_dir) result_path = File.join(result_dir, "build.sh") conflict_count = project.merge_new_content(new_content, result_path, "Build script generated", "script") [result_path, conflict_count] end end # returns the script body def script_body(project, relevant_lines) ant = if relevant_lines.any? { |e| e.match(/tetra +ant/) } path = Tetra::Kit.new(project).find_executable("ant") Tetra::Ant.new(project.full_path, path).ant(@options) end mvn = if relevant_lines.any? { |e| e.match(/tetra +mvn/) } mvn_path = Tetra::Kit.new(project).find_executable("mvn") mvn = Tetra::Mvn.new("$PROJECT_PREFIX", mvn_path) end relevant_lines.map do |line| if line =~ /tetra +mvn/ line.gsub(/tetra +mvn/, "#{mvn.get_mvn_commandline(['-o'])}") elsif line =~ /tetra +ant/ line.gsub(/tetra +ant/, "#{ant.get_ant_commandline([])}") else line end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
tetra-0.51.0 | lib/tetra/packages/scriptable.rb |
tetra-0.50.0 | lib/tetra/packages/scriptable.rb |
tetra-0.49.0 | lib/tetra/packages/scriptable.rb |