makit 0.0.56 → 0.0.57

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generated/makit/v1/makit.v1_pb.rb +35 -0
  3. data/lib/generated/makit/v1/web/link_pb.rb +20 -0
  4. data/lib/makit/apache.rb +32 -32
  5. data/lib/makit/cli/clean.rb +14 -14
  6. data/lib/makit/cli/clone.rb +59 -59
  7. data/lib/makit/cli/init.rb +38 -38
  8. data/lib/makit/cli/main.rb +33 -33
  9. data/lib/makit/cli/make.rb +54 -54
  10. data/lib/makit/cli/new.rb +37 -37
  11. data/lib/makit/cli/nuget_cache.rb +38 -38
  12. data/lib/makit/cli/pull.rb +31 -31
  13. data/lib/makit/cli/setup.rb +71 -71
  14. data/lib/makit/cli/work.rb +21 -21
  15. data/lib/makit/command_runner.rb +399 -399
  16. data/lib/makit/commands.rb +21 -21
  17. data/lib/makit/content/default_gitignore.rb +5 -5
  18. data/lib/makit/content/default_gitignore.txt +222 -222
  19. data/lib/makit/content/default_rakefile.rb +11 -11
  20. data/lib/makit/content/gem_rakefile.rb +14 -14
  21. data/lib/makit/data.rb +50 -50
  22. data/lib/makit/directories.rb +140 -140
  23. data/lib/makit/directory.rb +200 -200
  24. data/lib/makit/dotnet.rb +182 -182
  25. data/lib/makit/environment.rb +127 -127
  26. data/lib/makit/fileinfo.rb +16 -16
  27. data/lib/makit/files.rb +47 -47
  28. data/lib/makit/git.rb +96 -96
  29. data/lib/makit/gitlab_runner.rb +60 -60
  30. data/lib/makit/humanize.rb +129 -129
  31. data/lib/makit/indexer.rb +56 -56
  32. data/lib/makit/logging.rb +96 -96
  33. data/lib/makit/markdown.rb +75 -75
  34. data/lib/makit/mp/basic_object_mp.rb +16 -16
  35. data/lib/makit/mp/command_request.mp.rb +16 -16
  36. data/lib/makit/mp/project_mp.rb +210 -210
  37. data/lib/makit/mp/string_mp.rb +137 -137
  38. data/lib/makit/nuget.rb +57 -57
  39. data/lib/makit/protoc.rb +104 -104
  40. data/lib/makit/serializer.rb +115 -115
  41. data/lib/makit/show.rb +111 -101
  42. data/lib/makit/storage.rb +131 -131
  43. data/lib/makit/symbols.rb +149 -149
  44. data/lib/makit/tasks.rb +61 -61
  45. data/lib/makit/tree.rb +37 -37
  46. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  47. data/lib/makit/version.rb +68 -68
  48. data/lib/makit/wix.rb +95 -95
  49. data/lib/makit/yaml.rb +19 -19
  50. data/lib/makit/zip.rb +17 -17
  51. data/lib/makit.rb +267 -267
  52. metadata +3 -1
@@ -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