makit 0.0.47 → 0.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/makit/apache.rb +32 -32
  3. data/lib/makit/cli/clean.rb +14 -14
  4. data/lib/makit/cli/clone.rb +59 -59
  5. data/lib/makit/cli/init.rb +38 -38
  6. data/lib/makit/cli/main.rb +33 -33
  7. data/lib/makit/cli/make.rb +54 -54
  8. data/lib/makit/cli/new.rb +37 -37
  9. data/lib/makit/cli/nuget_cache.rb +38 -38
  10. data/lib/makit/cli/pull.rb +31 -31
  11. data/lib/makit/cli/setup.rb +71 -71
  12. data/lib/makit/cli/work.rb +21 -21
  13. data/lib/makit/command_runner.rb +391 -400
  14. data/lib/makit/commands.rb +21 -21
  15. data/lib/makit/content/default_gitignore.rb +5 -5
  16. data/lib/makit/content/default_rakefile.rb +11 -11
  17. data/lib/makit/content/gem_rakefile.rb +14 -14
  18. data/lib/makit/data.rb +50 -50
  19. data/lib/makit/directories.rb +140 -140
  20. data/lib/makit/directory.rb +200 -200
  21. data/lib/makit/dotnet.rb +162 -163
  22. data/lib/makit/environment.rb +127 -127
  23. data/lib/makit/fileinfo.rb +16 -16
  24. data/lib/makit/files.rb +47 -47
  25. data/lib/makit/git.rb +87 -87
  26. data/lib/makit/gitlab_runner.rb +60 -60
  27. data/lib/makit/humanize.rb +129 -129
  28. data/lib/makit/indexer.rb +56 -56
  29. data/lib/makit/logging.rb +96 -96
  30. data/lib/makit/markdown.rb +75 -75
  31. data/lib/makit/mp/basic_object_mp.rb +16 -16
  32. data/lib/makit/mp/command_request.mp.rb +16 -16
  33. data/lib/makit/mp/project_mp.rb +210 -210
  34. data/lib/makit/mp/string_mp.rb +122 -140
  35. data/lib/makit/nuget.rb +57 -57
  36. data/lib/makit/protoc.rb +104 -104
  37. data/lib/makit/serializer.rb +115 -115
  38. data/lib/makit/show.rb +108 -108
  39. data/lib/makit/storage.rb +131 -131
  40. data/lib/makit/symbols.rb +149 -149
  41. data/lib/makit/tasks.rb +60 -61
  42. data/lib/makit/tree.rb +37 -37
  43. data/lib/makit/v1/makit.v1_pb.rb +34 -34
  44. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  45. data/lib/makit/version.rb +52 -52
  46. data/lib/makit/wix.rb +95 -95
  47. data/lib/makit/zip.rb +17 -17
  48. data/lib/makit.rb +267 -267
  49. metadata +2 -4
  50. data/lib/generated/makit/v1/makit.v1_pb.rb +0 -34
  51. data/lib/generated/makit/v1/web/link_pb.rb +0 -20
@@ -1,200 +1,200 @@
1
- # frozen_string_literal: true
2
-
3
- require "find"
4
- require "pathname"
5
- #require "gitignore"
6
-
7
- # This module provides classes for the Makit gem.
8
- module Makit
9
- # This class provide methods for working with Directories/
10
- #
11
- # Example:
12
- #
13
- # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
14
- #
15
- class Directory
16
- def self.get_line_count(file)
17
- line_count = 0
18
- File.foreach(file) { line_count += 1 }
19
- line_count
20
- end
21
-
22
- def self.find_directory_with_patterns(starting_directory, patterns)
23
- patterns.each do |pattern|
24
- result = find_directory_with_pattern(starting_directory, pattern)
25
- if (Dir.exist?(result))
26
- return result
27
- end
28
- end
29
-
30
- nil
31
- end
32
-
33
- def self.find_directory_with_pattern(starting_directory, pattern)
34
- current_directory = File.expand_path(starting_directory)
35
-
36
- loop do
37
- return current_directory if contains_pattern?(current_directory, pattern)
38
-
39
- parent_directory = File.dirname(current_directory)
40
- break if parent_directory == current_directory # Reached the root directory
41
-
42
- current_directory = parent_directory
43
- end
44
-
45
- nil
46
- end
47
-
48
- def self.contains_pattern?(directory, pattern)
49
- Dir.foreach(directory) do |entry|
50
- next if [".", ".."].include?(entry)
51
- return true if File.fnmatch(pattern, entry)
52
- end
53
- false
54
- end
55
-
56
- def self.get_size(directory)
57
- total_size = 0
58
-
59
- Find.find(directory) do |file|
60
- total_size += File.size(file) if File.file?(file)
61
- end
62
-
63
- total_size
64
- end
65
-
66
- def self.get_humanized_size(size_in_bytes, precision = 2)
67
- end
68
-
69
- def self.zip_source_files(directory_path, zip_file_name)
70
- raise ArgumentError, "Directory path cannot be nil" if directory_path.nil?
71
- raise ArgumentError, "Zip file name cannot be nil or empty" if zip_file_name.nil? || zip_file_name.strip.empty?
72
-
73
- unless Dir.exist?(directory_path)
74
- raise ArgumentError, "Directory '#{directory_path}' does not exist."
75
- end
76
-
77
- tracked_files = get_git_tracked_files(directory_path)
78
-
79
- if tracked_files.empty?
80
- raise "No tracked files found in the directory."
81
- end
82
-
83
- Zip::File.open(zip_file_name, Zip::File::CREATE) do |zipfile|
84
- tracked_files.each do |file|
85
- full_path = File.join(directory_path, file)
86
- if File.exist?(full_path)
87
- zipfile.add(file, full_path)
88
- end
89
- end
90
- end
91
- end
92
-
93
- def self.get_git_tracked_files(directory_path)
94
- #raise "do not use this method"
95
- #output, status = Open3.capture2("git ls-files directory", chdir: directory_path)
96
- #raise "Failed to list git-tracked files" unless status.success?
97
- #command = "git ls-files #{directory_path}".run
98
-
99
- #command.output.split("\n")
100
- `git ls-files #{directory_path}`.split("\n")
101
- end
102
-
103
- def self.get_newest_git_file(directory_path)
104
- get_git_tracked_files(directory_path).select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
105
- end
106
-
107
- def self.get_newest_git_file_timestamp(directory_path)
108
- get_newest_git_file(directory_path).nil? ? Time.now : File.mtime(get_newest_git_file(directory_path))
109
- end
110
-
111
- def self.get_newest_file_timestamp(directory_path)
112
- newest_file = get_git_tracked_files(directory_path).select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
113
- newest_file.nil? ? Time.now : File.mtime(newest_file)
114
- end
115
-
116
- # Normalize the path by removing any leading or trailing slashes
117
- # and replacing any backslashes with forward slashes
118
- def self.normalize(path)
119
- path = path.gsub("\\", "/")
120
- #path = path[1..-1] if path.start_with?("/")
121
- path = path[0..-2] if path.end_with?("/")
122
- path
123
- end
124
-
125
- # for a given path, collect all the subdirectories that match a version pattern.
126
- # for example 2.57.0, 2.62, or 2.65.0
127
- def self.get_version_directories(path)
128
- version_directories = []
129
- Dir.foreach(path) do |entry|
130
- next if [".", ".."].include?(entry)
131
- version_directories << entry if entry.match?(/^\d+\.\d+\.\d+$/)
132
- end
133
- version_directories
134
- end
135
-
136
- def self.modified(path)
137
- self.get_newest_file(path)
138
- end
139
- # for a given path, get the most recent file change date for any file in the directory
140
- def self.get_latest_file_change_date(path)
141
- # loop over all files in the directory
142
- latest_date = nil
143
- Find.find(path) do |file|
144
- if File.file?(file)
145
- date = File.mtime(file)
146
- latest_date = date if latest_date.nil? || date > latest_date
147
- end
148
- end
149
- latest_date
150
- end
151
-
152
- # for a given path, return the filename of the most recently modified file
153
- def self.get_newest_file(path)
154
- newest_file = nil
155
- latest_date = nil
156
- if (Dir.exist?(path))
157
- Find.find(path) do |file|
158
- if File.file?(file)
159
- date = File.mtime(file)
160
- latest_date = date if latest_date.nil? || date > latest_date
161
- newest_file = file if date == latest_date
162
- end
163
- end
164
- end
165
- newest_file
166
- end
167
-
168
- def self.copy(src_dir, dst_dir, verbose = false)
169
- FileUtils.cp_r(src_dir, dst_dir, verbose: verbose)
170
- end
171
-
172
- def self.generate_manifest(dir)
173
- if File.exist?("#{dir}/manifest.txt")
174
- File.delete("#{dir}/manifest.txt")
175
- end
176
- File.open("#{dir}/manifest.txt", "w") do |f|
177
- Dir.glob("#{dir}/**/*").each do |file|
178
- next if File.directory?(file)
179
- f.puts file.sub("#{dir}/", "")
180
- end
181
- end
182
- end
183
-
184
- def self.remove_empty_directories(dir)
185
- Find.find(dir) do |path|
186
- if File.directory?(path) && Dir.empty?(path)
187
- FileUtils.rm_rf(path)
188
- end
189
- end
190
- end
191
-
192
- def self.remove_empty_directories_recursively(dir)
193
- Find.find(dir) do |path|
194
- if File.directory?(path) && Dir.empty?(path)
195
- FileUtils.rm_rf(path)
196
- end
197
- end
198
- end
199
- end
200
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "find"
4
+ require "pathname"
5
+ #require "gitignore"
6
+
7
+ # This module provides classes for the Makit gem.
8
+ module Makit
9
+ # This class provide methods for working with Directories/
10
+ #
11
+ # Example:
12
+ #
13
+ # Makit::Directory.find_directory_with_pattern("/home/user", "*.rb")
14
+ #
15
+ class Directory
16
+ def self.get_line_count(file)
17
+ line_count = 0
18
+ File.foreach(file) { line_count += 1 }
19
+ line_count
20
+ end
21
+
22
+ def self.find_directory_with_patterns(starting_directory, patterns)
23
+ patterns.each do |pattern|
24
+ result = find_directory_with_pattern(starting_directory, pattern)
25
+ if (Dir.exist?(result))
26
+ return result
27
+ end
28
+ end
29
+
30
+ nil
31
+ end
32
+
33
+ def self.find_directory_with_pattern(starting_directory, pattern)
34
+ current_directory = File.expand_path(starting_directory)
35
+
36
+ loop do
37
+ return current_directory if contains_pattern?(current_directory, pattern)
38
+
39
+ parent_directory = File.dirname(current_directory)
40
+ break if parent_directory == current_directory # Reached the root directory
41
+
42
+ current_directory = parent_directory
43
+ end
44
+
45
+ nil
46
+ end
47
+
48
+ def self.contains_pattern?(directory, pattern)
49
+ Dir.foreach(directory) do |entry|
50
+ next if [".", ".."].include?(entry)
51
+ return true if File.fnmatch(pattern, entry)
52
+ end
53
+ false
54
+ end
55
+
56
+ def self.get_size(directory)
57
+ total_size = 0
58
+
59
+ Find.find(directory) do |file|
60
+ total_size += File.size(file) if File.file?(file)
61
+ end
62
+
63
+ total_size
64
+ end
65
+
66
+ def self.get_humanized_size(size_in_bytes, precision = 2)
67
+ end
68
+
69
+ def self.zip_source_files(directory_path, zip_file_name)
70
+ raise ArgumentError, "Directory path cannot be nil" if directory_path.nil?
71
+ raise ArgumentError, "Zip file name cannot be nil or empty" if zip_file_name.nil? || zip_file_name.strip.empty?
72
+
73
+ unless Dir.exist?(directory_path)
74
+ raise ArgumentError, "Directory '#{directory_path}' does not exist."
75
+ end
76
+
77
+ tracked_files = get_git_tracked_files(directory_path)
78
+
79
+ if tracked_files.empty?
80
+ raise "No tracked files found in the directory."
81
+ end
82
+
83
+ Zip::File.open(zip_file_name, Zip::File::CREATE) do |zipfile|
84
+ tracked_files.each do |file|
85
+ full_path = File.join(directory_path, file)
86
+ if File.exist?(full_path)
87
+ zipfile.add(file, full_path)
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ def self.get_git_tracked_files(directory_path)
94
+ #raise "do not use this method"
95
+ #output, status = Open3.capture2("git ls-files directory", chdir: directory_path)
96
+ #raise "Failed to list git-tracked files" unless status.success?
97
+ #command = "git ls-files #{directory_path}".run
98
+
99
+ #command.output.split("\n")
100
+ `git ls-files #{directory_path}`.split("\n")
101
+ end
102
+
103
+ def self.get_newest_git_file(directory_path)
104
+ get_git_tracked_files(directory_path).select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
105
+ end
106
+
107
+ def self.get_newest_git_file_timestamp(directory_path)
108
+ get_newest_git_file(directory_path).nil? ? Time.now : File.mtime(get_newest_git_file(directory_path))
109
+ end
110
+
111
+ def self.get_newest_file_timestamp(directory_path)
112
+ newest_file = get_git_tracked_files(directory_path).select { |f| File.file?(f) }.max_by { |f| File.mtime(f) }
113
+ newest_file.nil? ? Time.now : File.mtime(newest_file)
114
+ end
115
+
116
+ # Normalize the path by removing any leading or trailing slashes
117
+ # and replacing any backslashes with forward slashes
118
+ def self.normalize(path)
119
+ path = path.gsub("\\", "/")
120
+ #path = path[1..-1] if path.start_with?("/")
121
+ path = path[0..-2] if path.end_with?("/")
122
+ path
123
+ end
124
+
125
+ # for a given path, collect all the subdirectories that match a version pattern.
126
+ # for example 2.57.0, 2.62, or 2.65.0
127
+ def self.get_version_directories(path)
128
+ version_directories = []
129
+ Dir.foreach(path) do |entry|
130
+ next if [".", ".."].include?(entry)
131
+ version_directories << entry if entry.match?(/^\d+\.\d+\.\d+$/)
132
+ end
133
+ version_directories
134
+ end
135
+
136
+ def self.modified(path)
137
+ self.get_newest_file(path)
138
+ end
139
+ # for a given path, get the most recent file change date for any file in the directory
140
+ def self.get_latest_file_change_date(path)
141
+ # loop over all files in the directory
142
+ latest_date = nil
143
+ Find.find(path) do |file|
144
+ if File.file?(file)
145
+ date = File.mtime(file)
146
+ latest_date = date if latest_date.nil? || date > latest_date
147
+ end
148
+ end
149
+ latest_date
150
+ end
151
+
152
+ # for a given path, return the filename of the most recently modified file
153
+ def self.get_newest_file(path)
154
+ newest_file = nil
155
+ latest_date = nil
156
+ if (Dir.exist?(path))
157
+ Find.find(path) do |file|
158
+ if File.file?(file)
159
+ date = File.mtime(file)
160
+ latest_date = date if latest_date.nil? || date > latest_date
161
+ newest_file = file if date == latest_date
162
+ end
163
+ end
164
+ end
165
+ newest_file
166
+ end
167
+
168
+ def self.copy(src_dir, dst_dir, verbose = false)
169
+ FileUtils.cp_r(src_dir, dst_dir, verbose: verbose)
170
+ end
171
+
172
+ def self.generate_manifest(dir)
173
+ if File.exist?("#{dir}/manifest.txt")
174
+ File.delete("#{dir}/manifest.txt")
175
+ end
176
+ File.open("#{dir}/manifest.txt", "w") do |f|
177
+ Dir.glob("#{dir}/**/*").each do |file|
178
+ next if File.directory?(file)
179
+ f.puts file.sub("#{dir}/", "")
180
+ end
181
+ end
182
+ end
183
+
184
+ def self.remove_empty_directories(dir)
185
+ Find.find(dir) do |path|
186
+ if File.directory?(path) && Dir.empty?(path)
187
+ FileUtils.rm_rf(path)
188
+ end
189
+ end
190
+ end
191
+
192
+ def self.remove_empty_directories_recursively(dir)
193
+ Find.find(dir) do |path|
194
+ if File.directory?(path) && Dir.empty?(path)
195
+ FileUtils.rm_rf(path)
196
+ end
197
+ end
198
+ end
199
+ end
200
+ end