lib/raykit/git/files.rb



# frozen_string_literal: true


module Raykit
  module Git
    # Functionality to manage a local clone of a git repository

    class Files
      @url
      @commit_id

      def initialize(url, commit_id)
        @url = url
        @commit_id = commit_id
      end

      def clean
        FileUtils.rm_rf(commit_path) if Dir.exist?(commit_path)
      end

      def get(name)
        puts "commit_path(): #{commit_path}"
        unless Dir.exist?(commit_path)
          puts "cloning commit path..."
          clone = Raykit::Command.new("git clone #{@url} #{commit_path}")
          puts clone.output
          puts clone.error
          Dir.chdir(commit_path) do
            checkout = Raykit::Command.new("git checkout #{@commit_id}")
          end
        end

        return filename(name) if File.exist?(filename(name))

        ""
      end

      def commit_path
        Dir.tmpdir + File::SEPARATOR + "Raykit.Git.Files" + File::SEPARATOR + @url.gsub("://",
                                                                                        ".") + File::SEPARATOR + @commit_id
      end

      def filename(name)
        commit_path + File::SEPARATOR + name
      end
    end
  end
end