raykit 0.0.539 → 0.0.540

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 430cd6536e6353dd294f9034a2740128d4feb702b917b032c02bb29cb1d68e78
4
- data.tar.gz: cf68a2de9f657a15467381f1aa82892f43ed812001c6985940563346b1704900
3
+ metadata.gz: 034edb34cbfb58218b76515bcafa58e1c36cfebb6bcdb5642756d8b38f392777
4
+ data.tar.gz: 3dd2ea4c976d8ac05e5bdb905b42eea20cd9481b0589a2515b21b1e23de0a7d2
5
5
  SHA512:
6
- metadata.gz: 020b873c9c2f76e147d93a9ec45dd0f76deb01381450af5552a06d2f07c4b68cd4bdc38ec00b9cc7aaa512ad70510a6c70ce27df77f8d38f145858f691205a58
7
- data.tar.gz: 7a57241c6eb49ef5af480a88e043fabdf7a40c08b4babc8d2e6c5d7ce12423dfe4be98e0b42fb6cc625384afdcac0a119a644f97361b8d3a5fa215818d3c2fd6
6
+ metadata.gz: 8cb56b0f0ab6f0753b8ae2056ffa7d0489533cb0624ed9a221d456679557d9777f4dd0b71c203c95f3f6c82b15e5b4464242155b97e057fd65f6b480a8f3926c
7
+ data.tar.gz: 2453d3a0703fa63a1bf903e1aba5a1c261bbe1786240c77ee1b2df25c21e4a3c8a1bca07d5d1f490d608110c45d5b9cd1993821b0386abc38201525d37e621dd
data/lib/raykit/dir.rb CHANGED
@@ -80,16 +80,47 @@ class Dir
80
80
  path = File.join(dir, entry) # Construct the full path
81
81
 
82
82
  if File.directory?(path)
83
- remove_empty_directories(path) # Recursively call the method if the entry is a directory
84
- # Remove the directory if it's empty after processing its contents
85
- Dir.rmdir(path) if Dir.empty?(path)
83
+ begin
84
+ remove_empty_directories(path) # Recursively call the method if the entry is a directory
85
+ rescue Errno::ENAMETOOLONG
86
+ puts "Path too long: #{path}"
87
+ next # Skip this directory and continue with others
88
+ end
89
+
90
+ # Attempt to remove the directory if it's empty after processing its contents
91
+ begin
92
+ Dir.rmdir(path) if Dir.empty?(path)
93
+ rescue Errno::ENAMETOOLONG
94
+ puts "Path too long to remove: #{path}"
95
+ end
86
96
  end
87
97
  end
88
98
  rescue Errno::ENOENT
89
99
  # Handle the case where the directory doesn't exist or is removed before rmdir is called
90
100
  puts "Directory not found: #{dir}"
101
+ rescue Errno::ENAMETOOLONG
102
+ # Handle the case where the initial directory path is too long
103
+ puts "Initial path too long: #{dir}"
91
104
  end
92
105
 
106
+ #def self.remove_empty_directories(dir)
107
+ # List all entries in the directory except for '.' and '..'
108
+ # Dir.entries(dir).each do |entry|
109
+ # next if entry == "." || entry == ".." # Skip the current and parent directory entries
110
+
111
+ # path = File.join(dir, entry) # Construct the full path
112
+
113
+ # if File.directory?(path)
114
+ # remove_empty_directories(path) # Recursively call the method if the entry is a directory
115
+ # Remove the directory if it's empty after processing its contents
116
+ # Dir.rmdir(path) if Dir.empty?(path)
117
+ # end
118
+ # end
119
+ #rescue Errno::ENOENT
120
+ # Handle the case where the directory doesn't exist or is removed before rmdir is called
121
+ # puts "Directory not found: #{dir}"
122
+ #end
123
+
93
124
  # Example usage:
94
125
  # remove_empty_directories('/path/to/directory')
95
126
 
@@ -95,8 +95,23 @@ module Raykit
95
95
 
96
96
  def last_modified_filename
97
97
  Dir.chdir(@directory) do
98
- # Use Dir.glob to find all files, select the actual files, find the one with the latest modification time, and return its name
99
- Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
98
+ # TODO: consider handling the case where glob can fail because of filename length
99
+ # Errno::ENAMETOOLONG: File name too long @ dir_s_glob - /Users/username/...
100
+ #
101
+ begin
102
+ # Use Dir.glob to find all files, select the actual files, find the one with the latest modification time, and return its name
103
+ files = Dir.glob("**/*.*").select { |f| File.file?(f) }
104
+
105
+ # Find the file with the latest modification time
106
+ latest_file = files.max_by { |f| File.mtime(f) }
107
+
108
+ return latest_file
109
+
110
+ #Dir.glob("**/*.*").select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
111
+ rescue Errno::ENAMETOOLONG => e
112
+ puts "Error: #{e.message}"
113
+ return handle_long_filename_error
114
+ end
100
115
  end
101
116
  end
102
117
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.539
4
+ version: 0.0.540
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lou Parslow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-04 00:00:00.000000000 Z
11
+ date: 2024-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  requirements: []
155
- rubygems_version: 3.5.6
155
+ rubygems_version: 3.5.8
156
156
  signing_key:
157
157
  specification_version: 4
158
158
  summary: ruby gem to support rake ci/cd tasks