class Dir

def self.get_data_dir

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

def self.get_git_directories(dir)

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)

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_text(dir, relative_name)

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

def self.remove_empty_directories(dir)

def self.remove_empty_directories(dir)
  # List all entries in the directory except for '.' and '..'

  Dir.entries(dir).each do |entry|
    next if entry == "." || entry == ".."  # Skip the current and parent directory entries

    path = File.join(dir, entry)  # Construct the full path

    if File.directory?(path)
      remove_empty_directories(path)  # Recursively call the method if the entry is a directory

      # Remove the directory if it's empty after processing its contents

      Dir.rmdir(path) if Dir.empty?(path)
    end
  end
rescue Errno::ENOENT
  # Handle the case where the directory doesn't exist or is removed before rmdir is called

  puts "Directory not found: #{dir}"
end

def self.set_text(dir, relative_name, text)

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