lib/raykit/dir.rb



# frozen_string_literal: true


require "tmpdir"
require_relative "./environment"

class Dir
  def self.get_text(dir, relative_name)
    File.read("#{dir}/#{relative_name}")
  end

  def self.set_text(dir, relative_name, text)
    File.open("#{dir}/#{relative_name}", "w") { |f| f.write text }
  end

  def self.get_git_directories(dir)
    git_dirs = []
    Dir.chdir(dir) do
      Dir.glob("**/.git/index") do |f|
        git_dir = File.dirname(File.dirname(f))
        git_dirs << git_dir
      end
    end
    git_dirs
  end

  def self.get_git_urls(dir)
    urls = Set.new
    Dir.chdir(dir) do
      get_git_directories(dir).each do |git_dir|
        Dir.chdir(git_dir) do
          url = `git config --get remote.origin.url`.strip
          urls.add(url)
        end
      end
    end
    urls
  end

  def self.get_data_dir
    unless ENV["DATA_DIR"].nil?
      data_dir = ENV["DATA_DIR"]
      return data_dir if Dir.exist?(data_dir)
    end
    home_dir = Raykit::Environment.home_dir
    return home_dir if Dir.exist?(home_dir)

    Dir.tmpdir
  end
end