makit 0.0.164 → 0.0.166

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 (178) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -41
  3. data/exe/makit +5 -5
  4. data/lib/makit/apache.rb +28 -28
  5. data/lib/makit/auto.rb +48 -48
  6. data/lib/makit/azure/blob_storage.rb +257 -257
  7. data/lib/makit/azure/cli.rb +284 -284
  8. data/lib/makit/azure-pipelines.rb +139 -0
  9. data/lib/makit/cli/base.rb +17 -17
  10. data/lib/makit/cli/build_commands.rb +500 -500
  11. data/lib/makit/cli/generators/base_generator.rb +74 -74
  12. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  13. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  14. data/lib/makit/cli/generators/node_generator.rb +50 -50
  15. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  16. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  17. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  18. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  19. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  20. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -41
  21. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  22. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  23. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  24. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  25. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  26. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  27. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  28. data/lib/makit/cli/main.rb +78 -78
  29. data/lib/makit/cli/pipeline_commands.rb +311 -311
  30. data/lib/makit/cli/project_commands.rb +868 -868
  31. data/lib/makit/cli/repository_commands.rb +661 -661
  32. data/lib/makit/cli/strategy_commands.rb +207 -207
  33. data/lib/makit/cli/utility_commands.rb +521 -521
  34. data/lib/makit/commands/factory.rb +359 -359
  35. data/lib/makit/commands/middleware/base.rb +73 -73
  36. data/lib/makit/commands/middleware/cache.rb +248 -248
  37. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  38. data/lib/makit/commands/middleware/validator.rb +269 -269
  39. data/lib/makit/commands/request.rb +316 -316
  40. data/lib/makit/commands/result.rb +323 -323
  41. data/lib/makit/commands/runner.rb +386 -386
  42. data/lib/makit/commands/strategies/base.rb +171 -171
  43. data/lib/makit/commands/strategies/child_process.rb +162 -162
  44. data/lib/makit/commands/strategies/factory.rb +136 -136
  45. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  46. data/lib/makit/commands.rb +50 -50
  47. data/lib/makit/configuration/dotnet_project.rb +48 -48
  48. data/lib/makit/configuration/gitlab_helper.rb +61 -61
  49. data/lib/makit/configuration/project.rb +292 -292
  50. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  51. data/lib/makit/configuration/step.rb +34 -34
  52. data/lib/makit/configuration/timeout.rb +74 -74
  53. data/lib/makit/configuration.rb +21 -21
  54. data/lib/makit/content/default_gitignore.rb +7 -7
  55. data/lib/makit/content/default_gitignore.txt +225 -225
  56. data/lib/makit/content/default_rakefile.rb +13 -13
  57. data/lib/makit/content/gem_rakefile.rb +16 -16
  58. data/lib/makit/context.rb +1 -1
  59. data/lib/makit/data.rb +49 -49
  60. data/lib/makit/directories.rb +170 -170
  61. data/lib/makit/directory.rb +262 -262
  62. data/lib/makit/docs/files.rb +89 -89
  63. data/lib/makit/docs/rake.rb +102 -102
  64. data/lib/makit/dotnet/cli.rb +224 -224
  65. data/lib/makit/dotnet/project.rb +217 -217
  66. data/lib/makit/dotnet/solution.rb +38 -38
  67. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  68. data/lib/makit/dotnet/solution_console.rb +264 -264
  69. data/lib/makit/dotnet/solution_maui.rb +354 -354
  70. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  71. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  72. data/lib/makit/dotnet.rb +110 -110
  73. data/lib/makit/email.rb +90 -90
  74. data/lib/makit/environment.rb +142 -142
  75. data/lib/makit/examples/runner.rb +370 -370
  76. data/lib/makit/exceptions.rb +45 -45
  77. data/lib/makit/fileinfo.rb +32 -32
  78. data/lib/makit/files.rb +43 -43
  79. data/lib/makit/gems.rb +49 -49
  80. data/lib/makit/git/cli.rb +103 -103
  81. data/lib/makit/git/repository.rb +100 -100
  82. data/lib/makit/git.rb +104 -104
  83. data/lib/makit/gitlab/pipeline.rb +857 -857
  84. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  85. data/lib/makit/gitlab_runner.rb +59 -59
  86. data/lib/makit/humanize.rb +218 -218
  87. data/lib/makit/indexer.rb +47 -47
  88. data/lib/makit/io/filesystem.rb +111 -111
  89. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  90. data/lib/makit/lint.rb +212 -212
  91. data/lib/makit/logging/configuration.rb +309 -309
  92. data/lib/makit/logging/format_registry.rb +84 -84
  93. data/lib/makit/logging/formatters/base.rb +39 -39
  94. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  95. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  96. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  97. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  98. data/lib/makit/logging/log_request.rb +119 -119
  99. data/lib/makit/logging/logger.rb +199 -199
  100. data/lib/makit/logging/sinks/base.rb +91 -91
  101. data/lib/makit/logging/sinks/console.rb +72 -72
  102. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  103. data/lib/makit/logging/sinks/structured.rb +123 -123
  104. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  105. data/lib/makit/logging.rb +578 -578
  106. data/lib/makit/markdown.rb +75 -75
  107. data/lib/makit/mp/basic_object_mp.rb +17 -17
  108. data/lib/makit/mp/command_mp.rb +13 -13
  109. data/lib/makit/mp/command_request.mp.rb +17 -17
  110. data/lib/makit/mp/project_mp.rb +199 -199
  111. data/lib/makit/mp/string_mp.rb +205 -205
  112. data/lib/makit/nuget.rb +454 -454
  113. data/lib/makit/podman/podman.rb +458 -458
  114. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  115. data/lib/makit/port.rb +32 -32
  116. data/lib/makit/process.rb +377 -377
  117. data/lib/makit/protoc.rb +112 -112
  118. data/lib/makit/rake/cli.rb +196 -196
  119. data/lib/makit/rake/trace_controller.rb +174 -174
  120. data/lib/makit/rake.rb +81 -81
  121. data/lib/makit/ruby/cli.rb +185 -185
  122. data/lib/makit/ruby.rb +25 -25
  123. data/lib/makit/rubygems.rb +137 -137
  124. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  125. data/lib/makit/secrets/azure_secrets.rb +221 -183
  126. data/lib/makit/secrets/local_secrets.rb +72 -72
  127. data/lib/makit/secrets/secrets_manager.rb +105 -105
  128. data/lib/makit/secrets.rb +96 -16
  129. data/lib/makit/serializer.rb +130 -130
  130. data/lib/makit/services/builder.rb +186 -186
  131. data/lib/makit/services/error_handler.rb +226 -226
  132. data/lib/makit/services/repository_manager.rb +367 -367
  133. data/lib/makit/services/validator.rb +112 -112
  134. data/lib/makit/setup/classlib.rb +101 -101
  135. data/lib/makit/setup/gem.rb +268 -268
  136. data/lib/makit/setup/pages.rb +11 -11
  137. data/lib/makit/setup/razorclasslib.rb +101 -101
  138. data/lib/makit/setup/runner.rb +54 -54
  139. data/lib/makit/setup.rb +5 -5
  140. data/lib/makit/show.rb +110 -110
  141. data/lib/makit/storage.rb +126 -126
  142. data/lib/makit/symbols.rb +175 -175
  143. data/lib/makit/task_info.rb +130 -130
  144. data/lib/makit/tasks/at_exit.rb +15 -15
  145. data/lib/makit/tasks/build.rb +22 -22
  146. data/lib/makit/tasks/bump.rb +7 -7
  147. data/lib/makit/tasks/clean.rb +13 -13
  148. data/lib/makit/tasks/configure.rb +10 -10
  149. data/lib/makit/tasks/format.rb +10 -10
  150. data/lib/makit/tasks/hook_manager.rb +443 -443
  151. data/lib/makit/tasks/info.rb +368 -368
  152. data/lib/makit/tasks/init.rb +49 -49
  153. data/lib/makit/tasks/integrate.rb +60 -60
  154. data/lib/makit/tasks/pull_incoming.rb +13 -13
  155. data/lib/makit/tasks/secrets.rb +7 -7
  156. data/lib/makit/tasks/setup.rb +16 -16
  157. data/lib/makit/tasks/sync.rb +14 -14
  158. data/lib/makit/tasks/tag.rb +27 -27
  159. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  160. data/lib/makit/tasks/test.rb +22 -22
  161. data/lib/makit/tasks/update.rb +21 -21
  162. data/lib/makit/tasks/version.rb +6 -6
  163. data/lib/makit/tasks.rb +24 -24
  164. data/lib/makit/test_cache.rb +239 -239
  165. data/lib/makit/tree.rb +37 -37
  166. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  167. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  168. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  169. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  170. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  171. data/lib/makit/version.rb +661 -661
  172. data/lib/makit/version_util.rb +21 -21
  173. data/lib/makit/wix.rb +95 -95
  174. data/lib/makit/yaml.rb +29 -29
  175. data/lib/makit/zip.rb +17 -17
  176. data/lib/makit copy.rb +44 -44
  177. data/lib/makit.rb +120 -119
  178. metadata +3 -2
@@ -1,217 +1,217 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- class DotNet
5
- class Project
6
- attr_accessor :filename
7
-
8
- def initialize(filename)
9
- @filename = filename
10
- end
11
-
12
- def set_version(version)
13
- # set the <Version> tag to the version
14
- project_content = File.read(filename)
15
- if project_content.include?("<Version>")
16
- project_content.gsub!(%r{<Version>.*</Version>},
17
- "<Version>#{version}</Version>")
18
- else
19
- # add the <Version> tag to the next line after the <PropertyGroup> tag
20
- project_content.gsub!("<PropertyGroup>",
21
- "<PropertyGroup>\n <Version>#{version}</Version>")
22
- end
23
- File.write(filename, project_content)
24
- end
25
-
26
- def get_version
27
- # get the <Version> tag
28
- project_content = File.read(filename)
29
- raise "Version not found in #{filename}".colorize(:red) unless project_content.include?("<Version>")
30
-
31
- project_content.match(%r{<Version>(.*)</Version>})[1]
32
- end
33
-
34
- # <TargetFramework>net8.0</TargetFramework>
35
- # <TargetFrameworks>net8.0;net8.0-browser</TargetFrameworks>
36
- def set_target_frameworks(target_frameworks)
37
- project_content = File.read(filename)
38
- target_frameworks = target_frameworks.join(";") if target_frameworks.is_a?(Array)
39
- if target_frameworks.include?(";")
40
- # use <TargetFrameworks> tag
41
- if project_content.include?("<TargetFrameworks>")
42
- project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
43
- "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
44
- else
45
- project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
46
- "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
47
- end
48
- elsif project_content.include?("<TargetFramework>")
49
- # use <TargetFramework> tag
50
- project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
51
- "<TargetFramework>#{target_frameworks}</TargetFramework>")
52
- else
53
- project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
54
- "<TargetFramework>#{target_frameworks}</TargetFramework>")
55
- end
56
- File.write(filename, project_content)
57
- end
58
-
59
- def set_nuget_metadata(package_id, authors, description, license_expression)
60
- project_content = File.read(filename)
61
- if project_content.include?("<PropertyGroup Label=\"NuGet Metadata\">")
62
- project_content.gsub!(%r{<PropertyGroup Label="NuGet Metadata">.*</PropertyGroup>},
63
- " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n\n</PropertyGroup>")
64
- else
65
- # add the <PropertyGroup Label=\"NuGet Metadata\"> tag before the </Project> closing tag
66
- project_content.gsub!(%r{</Project>},
67
- " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n </PropertyGroup>\n\n</Project>")
68
- end
69
-
70
- File.write(filename, project_content)
71
- end
72
-
73
- # consider move some of the methods to the CLI class
74
- def self.installed?
75
- is_installed?
76
- end
77
-
78
- def self.version
79
- `dotnet --version`
80
- end
81
-
82
- def self.project_short_name(project_path)
83
- File.basename(project_path, ".csproj")
84
- end
85
-
86
- def self.new_project(template, name, output, args = "")
87
- if Dir.exist? output
88
- Makit::Logging.default_logger.info("#{output}/#{name}.csproj")
89
- # puts " .csproj ".colorize(:grey) + name.to_s.colorize(:green)
90
- else
91
- "dotnet new #{template} --name #{name} --output #{output} #{args}".run
92
- end
93
- end
94
-
95
- def self.set_project_target_framework(project_hint, target_framework)
96
- project_path = find_project(project_hint)
97
- project_content = File.read(project_path)
98
- project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
99
- "<TargetFramework>#{target_framework}</TargetFramework>")
100
- File.write(project_path, project_content)
101
- end
102
-
103
- def self.find_project(project_hint)
104
- matches = []
105
- Dir.glob("**/*.csproj").each do |project_path|
106
- matches << project_path if project_path.include?(project_hint)
107
- end
108
- if matches.length == 1
109
- return matches.first
110
- elsif matches.length > 1
111
- raise "Multiple projects found matching #{project_hint}".colorize(:red)
112
- end
113
-
114
- raise "No project found matching #{project_hint}".colorize(:red)
115
- end
116
-
117
- def self.add_package(project_path, package_name)
118
- unless File.exist?(project_path)
119
- actual_project_path = Makit::DotNet::Project.find_project(project_path)
120
- raise "Project #{project_path} does not exist".colorize(:red) unless File.exist?(actual_project_path)
121
-
122
- project_path = actual_project_path
123
- end
124
-
125
- project_content = File.read(project_path)
126
- if project_content.include?("\"#{package_name}\"")
127
- puts " package ".colorize(:grey) + package_name.to_s.colorize(:green)
128
- else
129
- "dotnet add #{project_path} package #{package_name}".run
130
- end
131
- end
132
-
133
- def self.add_packages(project_path, packages)
134
- packages.each do |package|
135
- add_package(project_path, package)
136
- end
137
- end
138
-
139
- def self.add_reference(project_path, reference_path)
140
- unless File.exist?(project_path)
141
- actual_project_path = Makit::DotNet::Project.find_project(project_path)
142
- raise "Project #{project_path} does not exist".colorize(:red) unless File.exist?(actual_project_path)
143
-
144
- project_path = actual_project_path
145
- end
146
-
147
- unless File.exist?(reference_path)
148
- actual_reference_path = Makit::DotNet::Project.find_project(reference_path)
149
- raise "Project #{reference_path} does not exist".colorize(:red) unless File.exist?(actual_reference_path)
150
-
151
- reference_path = actual_reference_path
152
- end
153
-
154
- project_content = File.read(project_path)
155
- if project_content.include?(File.basename(reference_path))
156
- # puts " reference ".colorize(:grey) + reference_path.to_s.colorize(:green)
157
- else
158
- "dotnet add #{project_path} reference #{reference_path}".run
159
- end
160
- end
161
-
162
- def self.add_references(project_path, references)
163
- references.each do |reference|
164
- add_reference(project_path, reference)
165
- end
166
- end
167
-
168
- def self.build(project_path, configuration = "Release", output = "artifacts")
169
- project_dir = File.dirname(project_path)
170
- newest_file = Makit::Directory.get_newest_file(project_dir)
171
- command_request = Makit::Commands::Runner.default.parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
172
- newest_file_date = if newest_file.nil?
173
- Time.now
174
- else
175
- File.mtime(newest_file)
176
- end
177
- RUNNER.cache_run(command_request, newest_file_date)
178
- end
179
-
180
- def self.publish(project_path, configuration = "Release", output = "artifacts")
181
- project_dir = File.dirname(project_path)
182
- newest_file = Makit::Directory.get_newest_file(project_dir)
183
- command_request = Makit::Commands::Runner.default.parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
184
- newest_file_date = if newest_file.nil?
185
- Time.now
186
- else
187
- File.mtime(newest_file)
188
- end
189
- RUNNER.cache_run(command_request, newest_file_date)
190
- end
191
-
192
- def self.test(project_path, configuration = "Release", output = "artifacts")
193
- project_dir = File.dirname(project_path)
194
- newest_file = Makit::Directory.get_newest_file(project_dir)
195
- command_request = Makit::Commands::Runner.default.parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
196
- newest_file_date = if newest_file.nil?
197
- Time.now
198
- else
199
- File.mtime(newest_file)
200
- end
201
- RUNNER.cache_run(command_request, newest_file_date)
202
- end
203
-
204
- def self.format_project(project_path)
205
- File.basename(project_path, ".csproj")
206
- "dotnet tool update --global dotnet-format".run
207
- "dotnet format #{project_path}".run
208
- end
209
-
210
- def self.upgrade_project(project_path)
211
- File.basename(project_path, ".csproj")
212
- "dotnet tool install --global dotnet-outdated-tool".run
213
- "dotnet outdated #{project_path} --upgrade:Auto".run
214
- end
215
- end
216
- end
217
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ class DotNet
5
+ class Project
6
+ attr_accessor :filename
7
+
8
+ def initialize(filename)
9
+ @filename = filename
10
+ end
11
+
12
+ def set_version(version)
13
+ # set the <Version> tag to the version
14
+ project_content = File.read(filename)
15
+ if project_content.include?("<Version>")
16
+ project_content.gsub!(%r{<Version>.*</Version>},
17
+ "<Version>#{version}</Version>")
18
+ else
19
+ # add the <Version> tag to the next line after the <PropertyGroup> tag
20
+ project_content.gsub!("<PropertyGroup>",
21
+ "<PropertyGroup>\n <Version>#{version}</Version>")
22
+ end
23
+ File.write(filename, project_content)
24
+ end
25
+
26
+ def get_version
27
+ # get the <Version> tag
28
+ project_content = File.read(filename)
29
+ raise "Version not found in #{filename}".colorize(:red) unless project_content.include?("<Version>")
30
+
31
+ project_content.match(%r{<Version>(.*)</Version>})[1]
32
+ end
33
+
34
+ # <TargetFramework>net8.0</TargetFramework>
35
+ # <TargetFrameworks>net8.0;net8.0-browser</TargetFrameworks>
36
+ def set_target_frameworks(target_frameworks)
37
+ project_content = File.read(filename)
38
+ target_frameworks = target_frameworks.join(";") if target_frameworks.is_a?(Array)
39
+ if target_frameworks.include?(";")
40
+ # use <TargetFrameworks> tag
41
+ if project_content.include?("<TargetFrameworks>")
42
+ project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
43
+ "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
44
+ else
45
+ project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
46
+ "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
47
+ end
48
+ elsif project_content.include?("<TargetFramework>")
49
+ # use <TargetFramework> tag
50
+ project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
51
+ "<TargetFramework>#{target_frameworks}</TargetFramework>")
52
+ else
53
+ project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
54
+ "<TargetFramework>#{target_frameworks}</TargetFramework>")
55
+ end
56
+ File.write(filename, project_content)
57
+ end
58
+
59
+ def set_nuget_metadata(package_id, authors, description, license_expression)
60
+ project_content = File.read(filename)
61
+ if project_content.include?("<PropertyGroup Label=\"NuGet Metadata\">")
62
+ project_content.gsub!(%r{<PropertyGroup Label="NuGet Metadata">.*</PropertyGroup>},
63
+ " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n\n</PropertyGroup>")
64
+ else
65
+ # add the <PropertyGroup Label=\"NuGet Metadata\"> tag before the </Project> closing tag
66
+ project_content.gsub!(%r{</Project>},
67
+ " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n </PropertyGroup>\n\n</Project>")
68
+ end
69
+
70
+ File.write(filename, project_content)
71
+ end
72
+
73
+ # consider move some of the methods to the CLI class
74
+ def self.installed?
75
+ is_installed?
76
+ end
77
+
78
+ def self.version
79
+ `dotnet --version`
80
+ end
81
+
82
+ def self.project_short_name(project_path)
83
+ File.basename(project_path, ".csproj")
84
+ end
85
+
86
+ def self.new_project(template, name, output, args = "")
87
+ if Dir.exist? output
88
+ Makit::Logging.default_logger.info("#{output}/#{name}.csproj")
89
+ # puts " .csproj ".colorize(:grey) + name.to_s.colorize(:green)
90
+ else
91
+ "dotnet new #{template} --name #{name} --output #{output} #{args}".run
92
+ end
93
+ end
94
+
95
+ def self.set_project_target_framework(project_hint, target_framework)
96
+ project_path = find_project(project_hint)
97
+ project_content = File.read(project_path)
98
+ project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
99
+ "<TargetFramework>#{target_framework}</TargetFramework>")
100
+ File.write(project_path, project_content)
101
+ end
102
+
103
+ def self.find_project(project_hint)
104
+ matches = []
105
+ Dir.glob("**/*.csproj").each do |project_path|
106
+ matches << project_path if project_path.include?(project_hint)
107
+ end
108
+ if matches.length == 1
109
+ return matches.first
110
+ elsif matches.length > 1
111
+ raise "Multiple projects found matching #{project_hint}".colorize(:red)
112
+ end
113
+
114
+ raise "No project found matching #{project_hint}".colorize(:red)
115
+ end
116
+
117
+ def self.add_package(project_path, package_name)
118
+ unless File.exist?(project_path)
119
+ actual_project_path = Makit::DotNet::Project.find_project(project_path)
120
+ raise "Project #{project_path} does not exist".colorize(:red) unless File.exist?(actual_project_path)
121
+
122
+ project_path = actual_project_path
123
+ end
124
+
125
+ project_content = File.read(project_path)
126
+ if project_content.include?("\"#{package_name}\"")
127
+ puts " package ".colorize(:grey) + package_name.to_s.colorize(:green)
128
+ else
129
+ "dotnet add #{project_path} package #{package_name}".run
130
+ end
131
+ end
132
+
133
+ def self.add_packages(project_path, packages)
134
+ packages.each do |package|
135
+ add_package(project_path, package)
136
+ end
137
+ end
138
+
139
+ def self.add_reference(project_path, reference_path)
140
+ unless File.exist?(project_path)
141
+ actual_project_path = Makit::DotNet::Project.find_project(project_path)
142
+ raise "Project #{project_path} does not exist".colorize(:red) unless File.exist?(actual_project_path)
143
+
144
+ project_path = actual_project_path
145
+ end
146
+
147
+ unless File.exist?(reference_path)
148
+ actual_reference_path = Makit::DotNet::Project.find_project(reference_path)
149
+ raise "Project #{reference_path} does not exist".colorize(:red) unless File.exist?(actual_reference_path)
150
+
151
+ reference_path = actual_reference_path
152
+ end
153
+
154
+ project_content = File.read(project_path)
155
+ if project_content.include?(File.basename(reference_path))
156
+ # puts " reference ".colorize(:grey) + reference_path.to_s.colorize(:green)
157
+ else
158
+ "dotnet add #{project_path} reference #{reference_path}".run
159
+ end
160
+ end
161
+
162
+ def self.add_references(project_path, references)
163
+ references.each do |reference|
164
+ add_reference(project_path, reference)
165
+ end
166
+ end
167
+
168
+ def self.build(project_path, configuration = "Release", output = "artifacts")
169
+ project_dir = File.dirname(project_path)
170
+ newest_file = Makit::Directory.get_newest_file(project_dir)
171
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
172
+ newest_file_date = if newest_file.nil?
173
+ Time.now
174
+ else
175
+ File.mtime(newest_file)
176
+ end
177
+ RUNNER.cache_run(command_request, newest_file_date)
178
+ end
179
+
180
+ def self.publish(project_path, configuration = "Release", output = "artifacts")
181
+ project_dir = File.dirname(project_path)
182
+ newest_file = Makit::Directory.get_newest_file(project_dir)
183
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
184
+ newest_file_date = if newest_file.nil?
185
+ Time.now
186
+ else
187
+ File.mtime(newest_file)
188
+ end
189
+ RUNNER.cache_run(command_request, newest_file_date)
190
+ end
191
+
192
+ def self.test(project_path, configuration = "Release", output = "artifacts")
193
+ project_dir = File.dirname(project_path)
194
+ newest_file = Makit::Directory.get_newest_file(project_dir)
195
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
196
+ newest_file_date = if newest_file.nil?
197
+ Time.now
198
+ else
199
+ File.mtime(newest_file)
200
+ end
201
+ RUNNER.cache_run(command_request, newest_file_date)
202
+ end
203
+
204
+ def self.format_project(project_path)
205
+ File.basename(project_path, ".csproj")
206
+ "dotnet tool update --global dotnet-format".run
207
+ "dotnet format #{project_path}".run
208
+ end
209
+
210
+ def self.upgrade_project(project_path)
211
+ File.basename(project_path, ".csproj")
212
+ "dotnet tool install --global dotnet-outdated-tool".run
213
+ "dotnet outdated #{project_path} --upgrade:Auto".run
214
+ end
215
+ end
216
+ end
217
+ end
@@ -1,38 +1,38 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "solution_classlib"
4
- require_relative "solution_console"
5
- require_relative "solution_wasm"
6
- require_relative "solution_maui"
7
- require_relative "solution_wpf"
8
-
9
- module Makit
10
- class DotNet
11
- class SolutionType
12
- ClassLibrary = "classlib"
13
- ConsoleApplication = "console"
14
- Wasm = "wasm"
15
- Maui = "maui"
16
- Wpf = "wpf"
17
- end
18
-
19
- class Solution
20
- def self.setup(solution_type, name)
21
- case solution_type
22
- when SolutionType::ClassLibrary
23
- SolutionClassLib.setup(name)
24
- when SolutionType::ConsoleApplication
25
- SolutionConsole.setup(name)
26
- when SolutionType::Wasm
27
- SolutionWasm.setup(name)
28
- when SolutionType::Maui
29
- SolutionMaui.setup(name)
30
- when SolutionType::Wpf
31
- SolutionWpf.setup(name)
32
- else
33
- raise ArgumentError, "Unsupported solution type: #{solution_type}"
34
- end
35
- end
36
- end
37
- end
38
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "solution_classlib"
4
+ require_relative "solution_console"
5
+ require_relative "solution_wasm"
6
+ require_relative "solution_maui"
7
+ require_relative "solution_wpf"
8
+
9
+ module Makit
10
+ class DotNet
11
+ class SolutionType
12
+ ClassLibrary = "classlib"
13
+ ConsoleApplication = "console"
14
+ Wasm = "wasm"
15
+ Maui = "maui"
16
+ Wpf = "wpf"
17
+ end
18
+
19
+ class Solution
20
+ def self.setup(solution_type, name)
21
+ case solution_type
22
+ when SolutionType::ClassLibrary
23
+ SolutionClassLib.setup(name)
24
+ when SolutionType::ConsoleApplication
25
+ SolutionConsole.setup(name)
26
+ when SolutionType::Wasm
27
+ SolutionWasm.setup(name)
28
+ when SolutionType::Maui
29
+ SolutionMaui.setup(name)
30
+ when SolutionType::Wpf
31
+ SolutionWpf.setup(name)
32
+ else
33
+ raise ArgumentError, "Unsupported solution type: #{solution_type}"
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end