Sha256: fcb2a763d0cc65e397c5cb63f7acabd1dbaf611c6c61c2816cbc6a0fb546a22f

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

# encoding: UTF-8

module Tetra
  # generates a package build script from bash_history
  module Scriptable
    def _to_script(project, history_path)
      ant_runner = Tetra::AntRunner.new(project)
      maven_runner = Tetra::MavenRunner.new(project)

      project.from_directory do
        history_lines = File.readlines(history_path).map { |e| e.strip }
        relevant_lines =
          history_lines
            .reverse
            .take_while { |e| e.match(/tetra +dry-run/).nil? }
            .reverse
            .take_while { |e| e.match(/tetra +finish/).nil? }
            .select { |e| e.match(/^#/).nil? }

        script_lines = [
          "#!/bin/bash",
          "set -xe",
          "PROJECT_PREFIX=`readlink -e .`",
          "cd #{project.latest_dry_run_directory}"
        ] +
        relevant_lines.map do |line|
          if line =~ /tetra +mvn/
            line.gsub(/tetra +mvn/, "#{maven_runner.get_maven_commandline("$PROJECT_PREFIX", ["-o"])}")
          elsif line =~ /tetra +ant/
            line.gsub(/tetra +ant/, "#{ant_runner.get_ant_commandline("$PROJECT_PREFIX")}")
          else
            line
          end
        end

        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",
                                                   "generate_build_script")

        [result_path, conflict_count]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tetra-0.45.0 lib/tetra/packages/scriptable.rb
tetra-0.44.0 lib/tetra/packages/scriptable.rb