makit 0.0.68 → 0.0.70

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 (58) 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 +404 -404
  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 +143 -143
  20. data/lib/makit/directory.rb +264 -264
  21. data/lib/makit/docs/files.rb +94 -0
  22. data/lib/makit/docs/rake.rb +101 -0
  23. data/lib/makit/dotnet.rb +182 -182
  24. data/lib/makit/environment.rb +127 -127
  25. data/lib/makit/fileinfo.rb +26 -16
  26. data/lib/makit/files.rb +47 -47
  27. data/lib/makit/git.rb +145 -96
  28. data/lib/makit/gitlab_runner.rb +60 -60
  29. data/lib/makit/humanize.rb +129 -129
  30. data/lib/makit/indexer.rb +56 -56
  31. data/lib/makit/logging.rb +106 -106
  32. data/lib/makit/markdown.rb +75 -75
  33. data/lib/makit/mp/basic_object_mp.rb +16 -16
  34. data/lib/makit/mp/command_mp.rb +13 -0
  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 +62 -62
  39. data/lib/makit/process.rb +26 -26
  40. data/lib/makit/protoc.rb +104 -104
  41. data/lib/makit/secrets.rb +51 -51
  42. data/lib/makit/serializer.rb +115 -115
  43. data/lib/makit/show.rb +110 -110
  44. data/lib/makit/storage.rb +131 -131
  45. data/lib/makit/symbols.rb +149 -149
  46. data/lib/makit/task_info.rb +79 -0
  47. data/lib/makit/tasks.rb +123 -68
  48. data/lib/makit/tree.rb +37 -37
  49. data/lib/makit/v1/makit.v1_pb.rb +34 -34
  50. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  51. data/lib/makit/version.rb +65 -65
  52. data/lib/makit/wix.rb +95 -95
  53. data/lib/makit/yaml.rb +17 -17
  54. data/lib/makit/zip.rb +17 -17
  55. data/lib/makit.rb +267 -267
  56. metadata +7 -5
  57. data/lib/generated/makit/v1/makit.v1_pb.rb +0 -35
  58. data/lib/generated/makit/v1/web/link_pb.rb +0 -20
@@ -0,0 +1,101 @@
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
+ module Docs
10
+ # This class provide methods for generating documentation
11
+ # about source files and artifacts.
12
+ #
13
+ # docs/Files.md
14
+ #
15
+ #
16
+ class Rake
17
+ def self.get_top_level_tasks
18
+ ::Rake.application.top_level_tasks
19
+ end
20
+
21
+ def self.get_top_task_name
22
+ self.get_top_level_tasks.first
23
+ end
24
+
25
+ def self.duration
26
+ Time.now - Makit::STARTTIME
27
+ end
28
+
29
+ def self.start_time
30
+ Makit::STARTTIME
31
+ end
32
+
33
+ # return a hash of name => value for properties of the rake execution
34
+ def self.properties
35
+ {
36
+ "top_level_tasks" => self.get_top_level_tasks,
37
+ # If global VERSION is defined, then add it to the properties (this is NOT the Makit::VERSION)
38
+ "version" => (defined?(VERSION) ? VERSION : ""),
39
+ "branch" => Makit::Git.branch,
40
+ # add the current user name
41
+ "user" => ENV["USER"],
42
+ # add the current machine name
43
+ "machine" => ENV["COMPUTERNAME"],
44
+ # add the os name
45
+ "os" => ENV["OS"],
46
+ "duration" => Makit::Humanize.get_humanized_duration(self.duration),
47
+ "start_time" => Makit::Humanize.get_humanized_timestamp(self.start_time),
48
+ "source_file_count" => Makit::Git.get_file_infos.count,
49
+ "source_file_size" => Makit::Humanize.get_humanized_size(Makit::Git.get_file_infos.sum(&:size)),
50
+ "untracked_file_count" => Makit::Git.get_untracked_file_infos.count,
51
+ "untracked_file_size" => Makit::Humanize.get_humanized_size(Makit::Git.get_untracked_file_infos.sum(&:size)),
52
+ # express the ratio of untracked file size to tracked file size as a percentage
53
+ "ratio_untracked_size_to_tracked_size" => ((Makit::Git.get_untracked_file_infos.sum(&:size) / Makit::Git.get_file_infos.sum(&:size)) * 100).to_i,
54
+ }
55
+ end
56
+
57
+ def self.generate
58
+
59
+ # if the top level tasks are of size 1, with the name "default",
60
+ # then we will continue to generate the documentation.
61
+ # otherwise, we will display a message and exit.
62
+ if self.get_top_level_tasks.size != 1 || self.get_top_level_tasks.first != "default"
63
+ puts " no top level tasks specified, skipping rake documentation generation".colorize(:yellow)
64
+ return
65
+ end
66
+
67
+ filename = "docs/Rake.md"
68
+ if !Dir.exist?("docs")
69
+ Dir.mkdir("docs")
70
+ end
71
+ # overwrite the file if it exists
72
+ if File.exist?(filename)
73
+ File.delete(filename)
74
+ end
75
+ File.open(filename, "w") do |file|
76
+
77
+ # display: "Rake default completed in HUMANIZED_DURATION"
78
+ file.write("# Rake default\n\n")
79
+
80
+ # display a table of the properties
81
+ file.write("## Properties\n\n")
82
+ self.properties.each do |key, value|
83
+ file.write("| #{key} | #{value} |\n")
84
+ end
85
+ file.write("\n\n")
86
+
87
+ # display the completed tasks
88
+ file.write("## Completed Tasks\n\n")
89
+ Makit::TaskInfo.completed_tasks.each do |task_name, task_info|
90
+ file.write("| #{task_name} | #{Makit::Humanize.get_humanized_duration(task_info[:duration])} |\n")
91
+ end
92
+ file.write("\n\n")
93
+
94
+ ## report on the available rake tasks
95
+ file.write(Makit::RUNNER.execute("rake -T").to_markdown)
96
+ file.write("\n\n")
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
data/lib/makit/dotnet.rb CHANGED
@@ -1,182 +1,182 @@
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.project_short_name(project_path)
12
- project_name = File.basename(project_path, ".csproj")
13
- project_name
14
- end
15
-
16
- def self.new_project(template, name, output, args = "")
17
- if Dir.exist? output
18
- puts " .csproj ".colorize(:grey) + "#{name}".colorize(:green)
19
- else
20
- "dotnet new #{template} --name #{name} --output #{output} #{args}".run
21
- end
22
- end
23
-
24
- def self.set_project_target_framework(project_hint, target_framework)
25
- project_path = find_project(project_hint)
26
- project_content = File.read(project_path)
27
- project_content.gsub!(/<TargetFramework>.*<\/TargetFramework>/, "<TargetFramework>#{target_framework}</TargetFramework>")
28
- File.write(project_path, project_content)
29
- end
30
-
31
- def self.find_project(project_hint)
32
- matches = []
33
- Dir.glob("**/*.csproj").each do |project_path|
34
- #project_name = File.basename(project_path, ".csproj")
35
- if project_path.include?(project_hint)
36
- matches << project_path
37
- end
38
- end
39
- if matches.length == 1
40
- return matches.first
41
- elsif matches.length > 1
42
- raise "Multiple projects found matching #{project_hint}".colorize(:red)
43
- end
44
- raise "No project found matching #{project_hint}".colorize(:red)
45
- end
46
-
47
- def self.add_package(project_path, package_name)
48
- if (!File.exist?(project_path))
49
- actual_project_path = Makit::DotNet::find_project(project_path)
50
- if (!File.exist?(actual_project_path))
51
- raise "Project #{project_path} does not exist".colorize(:red)
52
- else
53
- project_path = actual_project_path
54
- end
55
- end
56
- project_content = File.read(project_path)
57
- if (!project_content.include?("\"#{package_name}\""))
58
- "dotnet add #{project_path} package #{package_name}".run
59
- else
60
- puts " package ".colorize(:grey) + "#{package_name}".colorize(:green)
61
- #puts " #{project_short_name(project_path)} has package #{package_name}".colorize(:grey)
62
- end
63
- end
64
-
65
- def self.add_packages(project_path, packages)
66
- packages.each do |package|
67
- add_package(project_path, package)
68
- end
69
- end
70
-
71
- def self.add_reference(project_path, reference_path)
72
- if (!File.exist?(project_path))
73
- actual_project_path = Makit::DotNet::find_project(project_path)
74
- if (!File.exist?(actual_project_path))
75
- raise "Project #{project_path} does not exist".colorize(:red)
76
- else
77
- project_path = actual_project_path
78
- end
79
- end
80
- if (!File.exist?(reference_path))
81
- actual_reference_path = Makit::DotNet::find_project(reference_path)
82
- if (!File.exist?(actual_reference_path))
83
- raise "Project #{reference_path} does not exist".colorize(:red)
84
- else
85
- reference_path = actual_reference_path
86
- end
87
- end
88
- project_content = File.read(project_path)
89
- if (project_content.include?(File.basename(reference_path)))
90
- puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:green)
91
- #puts " #{project_short_name(project_path)} references #{project_short_name(reference_path)}".colorize(:grey)
92
- #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
93
- else
94
- "dotnet add #{project_path} reference #{reference_path}".run
95
- end
96
- end
97
-
98
- def self.add_references(project_path, references)
99
- references.each do |reference|
100
- add_reference(project_path, reference)
101
- end
102
- end
103
-
104
- def self.new_solution(name)
105
- if File.exist? "#{name}.sln"
106
- #puts "Solution #{name}.sln already exists".colorize(:yellow)
107
- #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
108
- else
109
- "dotnet new sln --name #{name}".run
110
- end
111
- end
112
-
113
- def self.build(project_path, configuration = "Release", output = "artifacts")
114
- project_dir = File.dirname(project_path)
115
- newest_file = Makit::Directory::get_newest_file(project_dir)
116
- command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
117
- if newest_file.nil?
118
- newest_file_date = Time.now
119
- RUNNER.cache_run(command_request, newest_file_date)
120
- else
121
- newest_file_date = File.mtime(newest_file)
122
- RUNNER.cache_run(command_request, newest_file_date)
123
- end
124
- end
125
-
126
- def self.publish(project_path, configuration = "Release", output = "artifacts")
127
- project_dir = File.dirname(project_path)
128
- newest_file = Makit::Directory::get_newest_file(project_dir)
129
- command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
130
- if newest_file.nil?
131
- newest_file_date = Time.now
132
- RUNNER.cache_run(command_request, newest_file_date)
133
- else
134
- newest_file_date = File.mtime(newest_file)
135
- RUNNER.cache_run(command_request, newest_file_date)
136
- end
137
- end
138
-
139
- def self.test(project_path, configuration = "Release", output = "artifacts")
140
- project_dir = File.dirname(project_path)
141
- newest_file = Makit::Directory::get_newest_file(project_dir)
142
- command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
143
- if newest_file.nil?
144
- newest_file_date = Time.now
145
- RUNNER.cache_run(command_request, newest_file_date)
146
- else
147
- newest_file_date = File.mtime(newest_file)
148
- RUNNER.cache_run(command_request, newest_file_date)
149
- end
150
- end
151
-
152
- def self.sln_add_projects(sln_name)
153
- if !File.exist? "#{sln_name}.sln"
154
- raise "Solution #{sln_name}.sln does not exist"
155
- else
156
- sln_path = "#{sln_name}.sln"
157
- sln_content = File.read(sln_path)
158
- Dir.glob("**/*.csproj").each do |project_path|
159
- project_name = File.basename(project_path, ".csproj")
160
- if (sln_content.include?("\"#{project_name}\""))
161
- #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
162
- #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
163
- else
164
- "dotnet sln #{sln_path} add #{project_path}".run
165
- end
166
- end
167
- end
168
- end
169
-
170
- def self.format_project(project_path)
171
- project_name = File.basename(project_path, ".csproj")
172
- "dotnet tool update --global dotnet-format".run
173
- "dotnet format #{project_path}".run
174
- end
175
-
176
- def self.upgrade_project(project_path)
177
- project_name = File.basename(project_path, ".csproj")
178
- "dotnet tool install --global dotnet-outdated-tool".run
179
- "dotnet outdated #{project_path} --upgrade:Auto".run
180
- end
181
- end # class DotNet
182
- 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.project_short_name(project_path)
12
+ project_name = File.basename(project_path, ".csproj")
13
+ project_name
14
+ end
15
+
16
+ def self.new_project(template, name, output, args = "")
17
+ if Dir.exist? output
18
+ puts " .csproj ".colorize(:grey) + "#{name}".colorize(:green)
19
+ else
20
+ "dotnet new #{template} --name #{name} --output #{output} #{args}".run
21
+ end
22
+ end
23
+
24
+ def self.set_project_target_framework(project_hint, target_framework)
25
+ project_path = find_project(project_hint)
26
+ project_content = File.read(project_path)
27
+ project_content.gsub!(/<TargetFramework>.*<\/TargetFramework>/, "<TargetFramework>#{target_framework}</TargetFramework>")
28
+ File.write(project_path, project_content)
29
+ end
30
+
31
+ def self.find_project(project_hint)
32
+ matches = []
33
+ Dir.glob("**/*.csproj").each do |project_path|
34
+ #project_name = File.basename(project_path, ".csproj")
35
+ if project_path.include?(project_hint)
36
+ matches << project_path
37
+ end
38
+ end
39
+ if matches.length == 1
40
+ return matches.first
41
+ elsif matches.length > 1
42
+ raise "Multiple projects found matching #{project_hint}".colorize(:red)
43
+ end
44
+ raise "No project found matching #{project_hint}".colorize(:red)
45
+ end
46
+
47
+ def self.add_package(project_path, package_name)
48
+ if (!File.exist?(project_path))
49
+ actual_project_path = Makit::DotNet::find_project(project_path)
50
+ if (!File.exist?(actual_project_path))
51
+ raise "Project #{project_path} does not exist".colorize(:red)
52
+ else
53
+ project_path = actual_project_path
54
+ end
55
+ end
56
+ project_content = File.read(project_path)
57
+ if (!project_content.include?("\"#{package_name}\""))
58
+ "dotnet add #{project_path} package #{package_name}".run
59
+ else
60
+ puts " package ".colorize(:grey) + "#{package_name}".colorize(:green)
61
+ #puts " #{project_short_name(project_path)} has package #{package_name}".colorize(:grey)
62
+ end
63
+ end
64
+
65
+ def self.add_packages(project_path, packages)
66
+ packages.each do |package|
67
+ add_package(project_path, package)
68
+ end
69
+ end
70
+
71
+ def self.add_reference(project_path, reference_path)
72
+ if (!File.exist?(project_path))
73
+ actual_project_path = Makit::DotNet::find_project(project_path)
74
+ if (!File.exist?(actual_project_path))
75
+ raise "Project #{project_path} does not exist".colorize(:red)
76
+ else
77
+ project_path = actual_project_path
78
+ end
79
+ end
80
+ if (!File.exist?(reference_path))
81
+ actual_reference_path = Makit::DotNet::find_project(reference_path)
82
+ if (!File.exist?(actual_reference_path))
83
+ raise "Project #{reference_path} does not exist".colorize(:red)
84
+ else
85
+ reference_path = actual_reference_path
86
+ end
87
+ end
88
+ project_content = File.read(project_path)
89
+ if (project_content.include?(File.basename(reference_path)))
90
+ puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:green)
91
+ #puts " #{project_short_name(project_path)} references #{project_short_name(reference_path)}".colorize(:grey)
92
+ #puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
93
+ else
94
+ "dotnet add #{project_path} reference #{reference_path}".run
95
+ end
96
+ end
97
+
98
+ def self.add_references(project_path, references)
99
+ references.each do |reference|
100
+ add_reference(project_path, reference)
101
+ end
102
+ end
103
+
104
+ def self.new_solution(name)
105
+ if File.exist? "#{name}.sln"
106
+ #puts "Solution #{name}.sln already exists".colorize(:yellow)
107
+ #puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
108
+ else
109
+ "dotnet new sln --name #{name}".run
110
+ end
111
+ end
112
+
113
+ def self.build(project_path, configuration = "Release", output = "artifacts")
114
+ project_dir = File.dirname(project_path)
115
+ newest_file = Makit::Directory::get_newest_file(project_dir)
116
+ command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
117
+ if newest_file.nil?
118
+ newest_file_date = Time.now
119
+ RUNNER.cache_run(command_request, newest_file_date)
120
+ else
121
+ newest_file_date = File.mtime(newest_file)
122
+ RUNNER.cache_run(command_request, newest_file_date)
123
+ end
124
+ end
125
+
126
+ def self.publish(project_path, configuration = "Release", output = "artifacts")
127
+ project_dir = File.dirname(project_path)
128
+ newest_file = Makit::Directory::get_newest_file(project_dir)
129
+ command_request = Makit::RUNNER::parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
130
+ if newest_file.nil?
131
+ newest_file_date = Time.now
132
+ RUNNER.cache_run(command_request, newest_file_date)
133
+ else
134
+ newest_file_date = File.mtime(newest_file)
135
+ RUNNER.cache_run(command_request, newest_file_date)
136
+ end
137
+ end
138
+
139
+ def self.test(project_path, configuration = "Release", output = "artifacts")
140
+ project_dir = File.dirname(project_path)
141
+ newest_file = Makit::Directory::get_newest_file(project_dir)
142
+ command_request = Makit::RUNNER::parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
143
+ if newest_file.nil?
144
+ newest_file_date = Time.now
145
+ RUNNER.cache_run(command_request, newest_file_date)
146
+ else
147
+ newest_file_date = File.mtime(newest_file)
148
+ RUNNER.cache_run(command_request, newest_file_date)
149
+ end
150
+ end
151
+
152
+ def self.sln_add_projects(sln_name)
153
+ if !File.exist? "#{sln_name}.sln"
154
+ raise "Solution #{sln_name}.sln does not exist"
155
+ else
156
+ sln_path = "#{sln_name}.sln"
157
+ sln_content = File.read(sln_path)
158
+ Dir.glob("**/*.csproj").each do |project_path|
159
+ project_name = File.basename(project_path, ".csproj")
160
+ if (sln_content.include?("\"#{project_name}\""))
161
+ #puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
162
+ #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
163
+ else
164
+ "dotnet sln #{sln_path} add #{project_path}".run
165
+ end
166
+ end
167
+ end
168
+ end
169
+
170
+ def self.format_project(project_path)
171
+ project_name = File.basename(project_path, ".csproj")
172
+ "dotnet tool update --global dotnet-format".run
173
+ "dotnet format #{project_path}".run
174
+ end
175
+
176
+ def self.upgrade_project(project_path)
177
+ project_name = File.basename(project_path, ".csproj")
178
+ "dotnet tool install --global dotnet-outdated-tool".run
179
+ "dotnet outdated #{project_path} --upgrade:Auto".run
180
+ end
181
+ end # class DotNet
182
+ end # module Makit