Sha256: 7e4ab9b709c394efe3762fc02309f61aceac51280e6a3d7b67cf6bed5594c2fa

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 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)
      project.from_directory do
        script_lines = [
          "#!/bin/bash",
          "set -xe",
          "PROJECT_PREFIX=`readlink -e .`",
          "cd #{project.latest_dry_run_directory}"
        ] + script_body(project)

        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 by taking the last dry-run's
    # build script lines and adjusting mvn and ant's paths
    def script_body(project)
      lines = project.build_script_lines
      ant = if 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 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

      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

1 entries across 1 versions & 1 rubygems

Version Path
tetra-0.52.0 lib/tetra/packages/scriptable.rb