Class: Dir
- Inherits:
-
Object
- Object
- Dir
- Defined in:
- lib/raykit/dir.rb
Class Method Summary collapse
- .directory_size(directory) ⇒ Object
- .get_data_dir ⇒ Object
- .get_git_directories(dir) ⇒ Object
- .get_git_urls(dir) ⇒ Object
- .get_text(dir, relative_name) ⇒ Object
- .humanize_size(size_in_bytes) ⇒ Object
- .remove_empty_directories(dir) ⇒ Object
- .set_text(dir, relative_name, text) ⇒ Object
Class Method Details
.directory_size(directory) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/raykit/dir.rb', line 16 def self.directory_size(directory) total_size = 0 Find.find(directory) do |path| if File.file?(path) total_size += File.size(path) end end total_size end |
.get_data_dir ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/raykit/dir.rb', line 62 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 |
.get_git_directories(dir) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/raykit/dir.rb', line 38 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 |
.get_git_urls(dir) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/raykit/dir.rb', line 49 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 |
.get_text(dir, relative_name) ⇒ Object
8 9 10 |
# File 'lib/raykit/dir.rb', line 8 def self.get_text(dir, relative_name) File.read("#{dir}/#{relative_name}") end |
.humanize_size(size_in_bytes) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/raykit/dir.rb', line 26 def self.humanize_size(size_in_bytes) units = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB"] return "0 Bytes" if size_in_bytes == 0 exponent = (Math.log(size_in_bytes) / Math.log(1024)).to_i exponent = units.size - 1 if exponent > units.size - 1 # Cap at the largest known unit size = size_in_bytes.to_f / (1024 ** exponent) format("%.2f %s", size, units[exponent]) end |
.remove_empty_directories(dir) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/raykit/dir.rb', line 75 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 |