makit 0.0.26 → 0.0.27

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 (48) 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 +343 -343
  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 +184 -181
  21. data/lib/makit/dotnet.rb +104 -104
  22. data/lib/makit/environment.rb +123 -123
  23. data/lib/makit/fileinfo.rb +16 -16
  24. data/lib/makit/files.rb +47 -47
  25. data/lib/makit/git.rb +80 -80
  26. data/lib/makit/gitlab_runner.rb +60 -60
  27. data/lib/makit/humanize.rb +112 -112
  28. data/lib/makit/logging.rb +96 -96
  29. data/lib/makit/markdown.rb +75 -75
  30. data/lib/makit/mp/basic_object_mp.rb +16 -16
  31. data/lib/makit/mp/command_request.mp.rb +16 -16
  32. data/lib/makit/mp/project_mp.rb +210 -210
  33. data/lib/makit/mp/string_mp.rb +117 -117
  34. data/lib/makit/nuget.rb +57 -57
  35. data/lib/makit/protoc.rb +87 -61
  36. data/lib/makit/serializer.rb +115 -115
  37. data/lib/makit/show.rb +65 -0
  38. data/lib/makit/storage.rb +131 -131
  39. data/lib/makit/symbols.rb +149 -149
  40. data/lib/makit/tasks.rb +55 -55
  41. data/lib/makit/tree.rb +37 -37
  42. data/lib/makit/v1/makit.v1_pb.rb +3 -4
  43. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  44. data/lib/makit/version.rb +12 -12
  45. data/lib/makit/wix.rb +95 -95
  46. data/lib/makit/zip.rb +17 -17
  47. data/lib/makit.rb +254 -254
  48. metadata +4 -3
@@ -1,181 +1,184 @@
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
- # for a given path, get the most recent file change date for any file in the directory
137
- def self.get_latest_file_change_date(path)
138
- # loop over all files in the directory
139
- latest_date = nil
140
- Find.find(path) do |file|
141
- if File.file?(file)
142
- date = File.mtime(file)
143
- latest_date = date if latest_date.nil? || date > latest_date
144
- end
145
- end
146
- latest_date
147
- end
148
-
149
- # for a given path, return the filename of the most recently modified file
150
- def self.get_newest_file(path)
151
- newest_file = nil
152
- latest_date = nil
153
- if (Dir.exist?(path))
154
- Find.find(path) do |file|
155
- if File.file?(file)
156
- date = File.mtime(file)
157
- latest_date = date if latest_date.nil? || date > latest_date
158
- newest_file = file if date == latest_date
159
- end
160
- end
161
- end
162
- newest_file
163
- end
164
-
165
- def self.copy(src_dir, dst_dir)
166
- FileUtils.cp_r(src_dir, dst_dir)
167
- end
168
-
169
- def self.generate_manifest(dir)
170
- if File.exist?("#{dir}/manifest.txt")
171
- File.delete("#{dir}/manifest.txt")
172
- end
173
- File.open("#{dir}/manifest.txt", "w") do |f|
174
- Dir.glob("#{dir}/**/*").each do |file|
175
- next if File.directory?(file)
176
- f.puts file.sub("#{dir}/", "")
177
- end
178
- end
179
- end
180
- end
181
- 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)
169
+ FileUtils.cp_r(src_dir, dst_dir)
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
+ end
184
+ end
data/lib/makit/dotnet.rb CHANGED
@@ -1,104 +1,104 @@
1
- module Makit
2
- class DotNet
3
- def self.is_installed?
4
- File.exist?(Makit::Environment.which("dotnet"))
5
- end
6
-
7
- def self.version
8
- `dotnet --version`
9
- end
10
-
11
- def self.new_project(template, name, output)
12
- if Dir.exist? output
13
- #puts " #{output}".colorize(:green) + " exists.".colorize(:grey)
14
- #puts "Directory #{output} already exists".colorize(:yellow)
15
- else
16
- "dotnet new #{template} --name #{name} --output #{output}".run
17
- end
18
- end
19
-
20
- def self.add_package(project_path, package_name)
21
- project_content = File.read(project_path)
22
- if (!project_content.include?("\"#{package_name}\""))
23
- "dotnet add #{project_path} package #{package_name}".run
24
- else
25
- #puts " package ".colorize(:grey) + "#{package_name}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
26
- end
27
- end
28
-
29
- def self.add_reference(project_path, reference_path)
30
- project_content = File.read(project_path)
31
- if (project_content.include?("<PackageReference Include=\"#{package}\""))
32
- #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
33
- else
34
- "dotnet add #{project_path} reference #{reference_path}".run
35
- end
36
- end
37
-
38
- def self.new_solution(name)
39
- if File.exist? "#{name}.sln"
40
- #puts "Solution #{name}.sln already exists".colorize(:yellow)
41
- #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
42
- else
43
- "dotnet new sln --name #{name}".run
44
- end
45
- end
46
-
47
- def self.build(project_path, configuration = "Release", output = "artifacts")
48
- project_dir = File.dirname(project_path)
49
- newest_file = Makit::Directory::get_newest_file(project_dir)
50
- command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
51
- if newest_file.nil?
52
- newest_file_date = Time.now
53
- RUNNER.cache_run(command_request, newest_file_date)
54
- else
55
- newest_file_date = File.mtime(newest_file)
56
- RUNNER.cache_run(command_request, newest_file_date)
57
- end
58
- end
59
-
60
- def self.publish(project_path, configuration = "Release", output = "artifacts")
61
- project_dir = File.dirname(project_path)
62
- newest_file = Makit::Directory::get_newest_file(project_dir)
63
- command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
64
- if newest_file.nil?
65
- newest_file_date = Time.now
66
- RUNNER.cache_run(command_request, newest_file_date)
67
- else
68
- newest_file_date = File.mtime(newest_file)
69
- RUNNER.cache_run(command_request, newest_file_date)
70
- end
71
- end
72
-
73
- def self.test(project_path, configuration = "Release", output = "artifacts")
74
- project_dir = File.dirname(project_path)
75
- newest_file = Makit::Directory::get_newest_file(project_dir)
76
- command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
77
- if newest_file.nil?
78
- newest_file_date = Time.now
79
- RUNNER.cache_run(command_request, newest_file_date)
80
- else
81
- newest_file_date = File.mtime(newest_file)
82
- RUNNER.cache_run(command_request, newest_file_date)
83
- end
84
- end
85
-
86
- def self.sln_add_projects(sln_name)
87
- if !File.exist? "#{sln_name}.sln"
88
- raise "Solution #{sln_name}.sln does not exist"
89
- else
90
- sln_path = "#{sln_name}.sln"
91
- sln_content = File.read(sln_path)
92
- Dir.glob("**/*.csproj").each do |project_path|
93
- project_name = File.basename(project_path, ".csproj")
94
- if (sln_content.include?("\"#{project_name}\""))
95
- #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
96
- #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
97
- else
98
- "dotnet sln #{sln_path} add #{project_path}".run
99
- end
100
- end
101
- end
102
- end
103
- end # class DotNet
104
- end # module Makit
1
+ module Makit
2
+ class DotNet
3
+ def self.is_installed?
4
+ File.exist?(Makit::Environment.which("dotnet"))
5
+ end
6
+
7
+ def self.version
8
+ `dotnet --version`
9
+ end
10
+
11
+ def self.new_project(template, name, output)
12
+ if Dir.exist? output
13
+ #puts " #{output}".colorize(:green) + " exists.".colorize(:grey)
14
+ #puts "Directory #{output} already exists".colorize(:yellow)
15
+ else
16
+ "dotnet new #{template} --name #{name} --output #{output}".run
17
+ end
18
+ end
19
+
20
+ def self.add_package(project_path, package_name)
21
+ project_content = File.read(project_path)
22
+ if (!project_content.include?("\"#{package_name}\""))
23
+ "dotnet add #{project_path} package #{package_name}".run
24
+ else
25
+ #puts " package ".colorize(:grey) + "#{package_name}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
26
+ end
27
+ end
28
+
29
+ def self.add_reference(project_path, reference_path)
30
+ project_content = File.read(project_path)
31
+ if (project_content.include?("<PackageReference Include=\"#{package}\""))
32
+ #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
33
+ else
34
+ "dotnet add #{project_path} reference #{reference_path}".run
35
+ end
36
+ end
37
+
38
+ def self.new_solution(name)
39
+ if File.exist? "#{name}.sln"
40
+ #puts "Solution #{name}.sln already exists".colorize(:yellow)
41
+ #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
42
+ else
43
+ "dotnet new sln --name #{name}".run
44
+ end
45
+ end
46
+
47
+ def self.build(project_path, configuration = "Release", output = "artifacts")
48
+ project_dir = File.dirname(project_path)
49
+ newest_file = Makit::Directory::get_newest_file(project_dir)
50
+ command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
51
+ if newest_file.nil?
52
+ newest_file_date = Time.now
53
+ RUNNER.cache_run(command_request, newest_file_date)
54
+ else
55
+ newest_file_date = File.mtime(newest_file)
56
+ RUNNER.cache_run(command_request, newest_file_date)
57
+ end
58
+ end
59
+
60
+ def self.publish(project_path, configuration = "Release", output = "artifacts")
61
+ project_dir = File.dirname(project_path)
62
+ newest_file = Makit::Directory::get_newest_file(project_dir)
63
+ command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
64
+ if newest_file.nil?
65
+ newest_file_date = Time.now
66
+ RUNNER.cache_run(command_request, newest_file_date)
67
+ else
68
+ newest_file_date = File.mtime(newest_file)
69
+ RUNNER.cache_run(command_request, newest_file_date)
70
+ end
71
+ end
72
+
73
+ def self.test(project_path, configuration = "Release", output = "artifacts")
74
+ project_dir = File.dirname(project_path)
75
+ newest_file = Makit::Directory::get_newest_file(project_dir)
76
+ command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
77
+ if newest_file.nil?
78
+ newest_file_date = Time.now
79
+ RUNNER.cache_run(command_request, newest_file_date)
80
+ else
81
+ newest_file_date = File.mtime(newest_file)
82
+ RUNNER.cache_run(command_request, newest_file_date)
83
+ end
84
+ end
85
+
86
+ def self.sln_add_projects(sln_name)
87
+ if !File.exist? "#{sln_name}.sln"
88
+ raise "Solution #{sln_name}.sln does not exist"
89
+ else
90
+ sln_path = "#{sln_name}.sln"
91
+ sln_content = File.read(sln_path)
92
+ Dir.glob("**/*.csproj").each do |project_path|
93
+ project_name = File.basename(project_path, ".csproj")
94
+ if (sln_content.include?("\"#{project_name}\""))
95
+ #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
96
+ #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
97
+ else
98
+ "dotnet sln #{sln_path} add #{project_path}".run
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end # class DotNet
104
+ end # module Makit