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