makit 0.0.168 → 0.0.169

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 (179) 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 +187 -187
  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/github_actions.rb +202 -202
  84. data/lib/makit/gitlab/pipeline.rb +857 -857
  85. data/lib/makit/gitlab/pipeline_service_impl.rb +1535 -1535
  86. data/lib/makit/gitlab_runner.rb +59 -59
  87. data/lib/makit/humanize.rb +218 -218
  88. data/lib/makit/indexer.rb +47 -47
  89. data/lib/makit/io/filesystem.rb +111 -111
  90. data/lib/makit/io/filesystem_service_impl.rb +337 -337
  91. data/lib/makit/lint.rb +212 -212
  92. data/lib/makit/logging/configuration.rb +309 -309
  93. data/lib/makit/logging/format_registry.rb +84 -84
  94. data/lib/makit/logging/formatters/base.rb +39 -39
  95. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  96. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  97. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  98. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  99. data/lib/makit/logging/log_request.rb +119 -119
  100. data/lib/makit/logging/logger.rb +199 -199
  101. data/lib/makit/logging/sinks/base.rb +91 -91
  102. data/lib/makit/logging/sinks/console.rb +72 -72
  103. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  104. data/lib/makit/logging/sinks/structured.rb +123 -123
  105. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  106. data/lib/makit/logging.rb +578 -578
  107. data/lib/makit/markdown.rb +75 -75
  108. data/lib/makit/mp/basic_object_mp.rb +17 -17
  109. data/lib/makit/mp/command_mp.rb +13 -13
  110. data/lib/makit/mp/command_request.mp.rb +17 -17
  111. data/lib/makit/mp/project_mp.rb +199 -199
  112. data/lib/makit/mp/string_mp.rb +205 -205
  113. data/lib/makit/nuget.rb +460 -458
  114. data/lib/makit/podman/podman.rb +458 -458
  115. data/lib/makit/podman/podman_service_impl.rb +1081 -1081
  116. data/lib/makit/port.rb +32 -32
  117. data/lib/makit/process.rb +377 -377
  118. data/lib/makit/protoc.rb +112 -112
  119. data/lib/makit/rake/cli.rb +196 -196
  120. data/lib/makit/rake/trace_controller.rb +174 -174
  121. data/lib/makit/rake.rb +81 -81
  122. data/lib/makit/ruby/cli.rb +185 -185
  123. data/lib/makit/ruby.rb +25 -25
  124. data/lib/makit/rubygems.rb +137 -137
  125. data/lib/makit/secrets/azure_key_vault.rb +322 -322
  126. data/lib/makit/secrets/azure_secrets.rb +221 -221
  127. data/lib/makit/secrets/local_secrets.rb +72 -72
  128. data/lib/makit/secrets/secrets_manager.rb +105 -105
  129. data/lib/makit/secrets.rb +96 -96
  130. data/lib/makit/serializer.rb +130 -130
  131. data/lib/makit/services/builder.rb +186 -186
  132. data/lib/makit/services/error_handler.rb +226 -226
  133. data/lib/makit/services/repository_manager.rb +367 -367
  134. data/lib/makit/services/validator.rb +112 -112
  135. data/lib/makit/setup/classlib.rb +101 -101
  136. data/lib/makit/setup/gem.rb +268 -268
  137. data/lib/makit/setup/pages.rb +11 -11
  138. data/lib/makit/setup/razorclasslib.rb +101 -101
  139. data/lib/makit/setup/runner.rb +54 -54
  140. data/lib/makit/setup.rb +5 -5
  141. data/lib/makit/show.rb +110 -110
  142. data/lib/makit/storage.rb +126 -126
  143. data/lib/makit/symbols.rb +175 -175
  144. data/lib/makit/task_info.rb +130 -130
  145. data/lib/makit/tasks/at_exit.rb +15 -15
  146. data/lib/makit/tasks/build.rb +22 -22
  147. data/lib/makit/tasks/bump.rb +7 -7
  148. data/lib/makit/tasks/clean.rb +13 -13
  149. data/lib/makit/tasks/configure.rb +10 -10
  150. data/lib/makit/tasks/format.rb +10 -10
  151. data/lib/makit/tasks/hook_manager.rb +443 -443
  152. data/lib/makit/tasks/info.rb +368 -368
  153. data/lib/makit/tasks/init.rb +49 -49
  154. data/lib/makit/tasks/integrate.rb +60 -60
  155. data/lib/makit/tasks/pull_incoming.rb +13 -13
  156. data/lib/makit/tasks/secrets.rb +7 -7
  157. data/lib/makit/tasks/setup.rb +16 -16
  158. data/lib/makit/tasks/sync.rb +14 -14
  159. data/lib/makit/tasks/tag.rb +27 -27
  160. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  161. data/lib/makit/tasks/test.rb +22 -22
  162. data/lib/makit/tasks/update.rb +21 -21
  163. data/lib/makit/tasks/version.rb +6 -6
  164. data/lib/makit/tasks.rb +24 -24
  165. data/lib/makit/test_cache.rb +239 -239
  166. data/lib/makit/tree.rb +37 -37
  167. data/lib/makit/v1/configuration/project_service_impl.rb +370 -370
  168. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -295
  169. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  170. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  171. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -572
  172. data/lib/makit/version.rb +661 -661
  173. data/lib/makit/version_util.rb +21 -21
  174. data/lib/makit/wix.rb +95 -95
  175. data/lib/makit/yaml.rb +29 -29
  176. data/lib/makit/zip.rb +17 -17
  177. data/lib/makit copy.rb +44 -44
  178. data/lib/makit.rb +121 -121
  179. metadata +2 -2
@@ -1,75 +1,75 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "humanize"
4
-
5
- # This module provides classes for the Makit gem.
6
- module Makit
7
- class Markdown
8
- def self.get_commands_markdown(commands)
9
- summary = ""
10
- commands.each do |command|
11
- md = Makit::Markdown.get_command_markdown(command)
12
- summary += md
13
- end
14
- summary
15
- end
16
-
17
- def self.get_command_markdown(command)
18
- md = "<details>\n"
19
- md += "<summary>#{Makit::Humanize.get_command_summary(command)}</summary>\n\n"
20
-
21
- if command.output.length.positive?
22
- md += "<table><tr><th>output</th></tr><tr><td>\n\n" # <pre>\n"
23
- md += "```shell\n"
24
- md += "#{command.output}\n"
25
- md += "```\n\n"
26
- md += "</td></tr></table>\n\n"
27
- # md += "output:\n"
28
- # md += "```shell\n"
29
- # md += "#{command.output}\n"
30
- # md += "```\n\n"
31
- end
32
- if command.error.length.positive?
33
- md += "error:\n"
34
- md += "```shell\n"
35
- md += "#{command.error}\n"
36
- md += "```\n\n"
37
- end
38
- md += "| exit code | started at | duration | user | device | os | directory |\n"
39
- md += "| --- | --- | --- | --- | --- | --- | --- |\n"
40
- md += "| #{command.exit_code} | #{Makit::Humanize.get_protobuf_timestamp(command.started_at)} | #{Makit::Humanize.get_protobuf_duration(command.duration)} | #{command.user} | #{command.device} | #{command.os} | #{command.directory} |\n"
41
-
42
- # md += "| Name | Value |\n"
43
- # md += "| --- | --- |\n"
44
- # md += "| exit code | #{command.exit_code} |\n"
45
- # md += "| started at | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} |\n"
46
- # md += "| duration | #{Makit::Humanize::get_protobuf_duration(command.duration)} |\n"
47
- # md += "| user | #{command.user} |\n"
48
- # md += "| device | #{command.device} |\n"
49
- # md += "| os | #{command.os} |\n"
50
- # md += "| directory | #{command.directory} |\n"
51
- md += "</details>\n"
52
- md
53
- end
54
-
55
- def self.get_make_result_markdown(make_result)
56
- md = "# Make Result\n"
57
- # display allow of the fields of the MakeResult message
58
- md += "| Name | Value |\n"
59
- md += "| --- | --- |\n"
60
- md += "| repository | #{make_result.repository} |\n"
61
- md += "| commit | #{make_result.commit} |\n"
62
- md += "| branch | #{make_result.branch} |\n"
63
- md += "| tag | #{make_result.tag} |\n"
64
- md += "| device | #{make_result.device} |\n"
65
- md += "| runtime identifier | #{make_result.runtime_identifier} |\n"
66
- md += "| initial size | #{make_result.initial_size} |\n"
67
- md += "| final size | #{make_result.final_size} |\n"
68
- md += "\n"
69
- md += "## Commands\n"
70
- make_result.commands.each do |command|
71
- md += Makit::Markdown.get_command_markdown(command)
72
- end
73
- end
74
- end
75
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "humanize"
4
+
5
+ # This module provides classes for the Makit gem.
6
+ module Makit
7
+ class Markdown
8
+ def self.get_commands_markdown(commands)
9
+ summary = ""
10
+ commands.each do |command|
11
+ md = Makit::Markdown.get_command_markdown(command)
12
+ summary += md
13
+ end
14
+ summary
15
+ end
16
+
17
+ def self.get_command_markdown(command)
18
+ md = "<details>\n"
19
+ md += "<summary>#{Makit::Humanize.get_command_summary(command)}</summary>\n\n"
20
+
21
+ if command.output.length.positive?
22
+ md += "<table><tr><th>output</th></tr><tr><td>\n\n" # <pre>\n"
23
+ md += "```shell\n"
24
+ md += "#{command.output}\n"
25
+ md += "```\n\n"
26
+ md += "</td></tr></table>\n\n"
27
+ # md += "output:\n"
28
+ # md += "```shell\n"
29
+ # md += "#{command.output}\n"
30
+ # md += "```\n\n"
31
+ end
32
+ if command.error.length.positive?
33
+ md += "error:\n"
34
+ md += "```shell\n"
35
+ md += "#{command.error}\n"
36
+ md += "```\n\n"
37
+ end
38
+ md += "| exit code | started at | duration | user | device | os | directory |\n"
39
+ md += "| --- | --- | --- | --- | --- | --- | --- |\n"
40
+ md += "| #{command.exit_code} | #{Makit::Humanize.get_protobuf_timestamp(command.started_at)} | #{Makit::Humanize.get_protobuf_duration(command.duration)} | #{command.user} | #{command.device} | #{command.os} | #{command.directory} |\n"
41
+
42
+ # md += "| Name | Value |\n"
43
+ # md += "| --- | --- |\n"
44
+ # md += "| exit code | #{command.exit_code} |\n"
45
+ # md += "| started at | #{Makit::Humanize::get_protobuf_timestamp(command.started_at)} |\n"
46
+ # md += "| duration | #{Makit::Humanize::get_protobuf_duration(command.duration)} |\n"
47
+ # md += "| user | #{command.user} |\n"
48
+ # md += "| device | #{command.device} |\n"
49
+ # md += "| os | #{command.os} |\n"
50
+ # md += "| directory | #{command.directory} |\n"
51
+ md += "</details>\n"
52
+ md
53
+ end
54
+
55
+ def self.get_make_result_markdown(make_result)
56
+ md = "# Make Result\n"
57
+ # display allow of the fields of the MakeResult message
58
+ md += "| Name | Value |\n"
59
+ md += "| --- | --- |\n"
60
+ md += "| repository | #{make_result.repository} |\n"
61
+ md += "| commit | #{make_result.commit} |\n"
62
+ md += "| branch | #{make_result.branch} |\n"
63
+ md += "| tag | #{make_result.tag} |\n"
64
+ md += "| device | #{make_result.device} |\n"
65
+ md += "| runtime identifier | #{make_result.runtime_identifier} |\n"
66
+ md += "| initial size | #{make_result.initial_size} |\n"
67
+ md += "| final size | #{make_result.final_size} |\n"
68
+ md += "\n"
69
+ md += "## Commands\n"
70
+ make_result.commands.each do |command|
71
+ md += Makit::Markdown.get_command_markdown(command)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
- require "yaml"
5
-
6
- # monkey patch String class with a run method
7
-
8
- class BasicObject
9
- def to_json(*_args)
10
- to_json
11
- end
12
-
13
- def to_pretty_json
14
- json = to_json
15
- ::JSON.pretty_generate(::JSON.parse(json))
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "yaml"
5
+
6
+ # monkey patch String class with a run method
7
+
8
+ class BasicObject
9
+ def to_json(*_args)
10
+ to_json
11
+ end
12
+
13
+ def to_pretty_json
14
+ json = to_json
15
+ ::JSON.pretty_generate(::JSON.parse(json))
16
+ end
17
+ end
@@ -1,13 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- module V1
5
- class Command
6
- def to_markdown
7
- md = "## #{name} #{arguments.join(" ")}\n\n"
8
- md += "```\n#{output}\n```\n"
9
- md
10
- end
11
- end
12
- end
13
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module V1
5
+ class Command
6
+ def to_markdown
7
+ md = "## #{name} #{arguments.join(" ")}\n\n"
8
+ md += "```\n#{output}\n```\n"
9
+ md
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- require "digest"
4
-
5
- module Makit
6
- module V1
7
- # class CommandRequest
8
- # def to_hash
9
- # int_hash = Digest::SHA256.hexdigest("{self.name}.#{self.arguments.join(" ")}")
10
- # int_hash
11
- # end
12
- # def to_hash_string
13
- # hash_string = "#{int_hash}"
14
- # end
15
- # end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+
5
+ module Makit
6
+ module V1
7
+ # class CommandRequest
8
+ # def to_hash
9
+ # int_hash = Digest::SHA256.hexdigest("{self.name}.#{self.arguments.join(" ")}")
10
+ # int_hash
11
+ # end
12
+ # def to_hash_string
13
+ # hash_string = "#{int_hash}"
14
+ # end
15
+ # end
16
+ end
17
+ end
@@ -1,199 +1,199 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
- require "yaml"
5
-
6
- module Makit
7
- module V1
8
- class Project
9
- # def to_yaml
10
- # data = JSON.parse(self.to_pretty_json)
11
- # data.to_yaml.sub(/^---\n/, "")
12
- # end
13
-
14
- def self.create
15
- project = Makit::V1::Project.new
16
- project.set_default_values
17
- project
18
- end
19
-
20
- def open(filename)
21
- other = Makit::Serializer.open(filename, Makit::V1::Project)
22
- # other = Makit::V1::Project::create_from_file(filename)
23
- self.name = other.name
24
- self.git_remote_url = other.git_remote_url
25
- self.dotnet_projects = other.dotnet_projects
26
- self.artifacts = other.artifacts
27
- end
28
-
29
- # def self.create_from_file(filename)
30
- # extension = File.extname(filename)
31
- # case extension
32
- # when ".yml"
33
- # yaml = File.read(filename)
34
- # create_from_yaml(yaml)
35
- # when ".json"
36
- # json = File.read(filename)
37
- # create_from_json(json)
38
- # else
39
- # raise "unsupported file extension: #{extension}"
40
- # end
41
- # end
42
-
43
- # def self.create_from_yaml(yaml)
44
- # json = JSON.pretty_generate(YAML.load(yaml))
45
- # project = Makit::V1::Project.decode_json(json)
46
- # project
47
- # end
48
-
49
- # def self.create_from_json(json)
50
- # project = Makit::V1::Project.decode_json(json)
51
- # project
52
- # end
53
-
54
- def set_default_values
55
- # self.language = "csharp"
56
- # self.primary_artifact_type = "nuget"
57
- self.git_remote_url = `git remote get-url origin`.strip if git_remote_url.nil? || git_remote_url.empty?
58
- if name.nil? || name.empty?
59
- if !git_remote_url.nil? && !git_remote_url.empty?
60
- self.name = get_name(File.basename(git_remote_url, ".git")) # get_capitalized_name(File.basename(self.git_remote_url, ".git"))
61
- else
62
- self.name = get_name(File.basename(Dir.getwd)) # get_capitalized_name(File.basename(Dir.getwd))
63
- end
64
- end
65
- self
66
- end
67
-
68
- def get_name(name)
69
- if !git_remote_url.nil? && !git_remote_url.empty?
70
- is_dotnet = git_remote_url.include?("nuget")
71
- get_capitalized_name(name) if is_dotnet
72
- end
73
- name.downcase
74
- end
75
-
76
- def get_capitalized_name(name)
77
- name.split(".").map(&:capitalize).join(".")
78
- end
79
-
80
- def save_as(filename)
81
- Makit::Serializer.save_as(filename, self)
82
- # extension = File.extname(filename)
83
- # case extension
84
- # when ".json"
85
- # File.write(filename, self.to_pretty_json)
86
- # when ".yml"
87
- # File.write(filename, self.to_yaml)
88
- # else
89
- # raise "unsupported file extension: #{extension}"
90
- # end
91
- end
92
-
93
- def with_dotnet_project(template, name, output)
94
- return if dotnet_projects.any? { |project| project.output == output }
95
-
96
- project = Makit::V1::DotNetProject.new
97
- project.template = template
98
- project.name = name
99
- project.output = output
100
- dotnet_projects << project
101
- end
102
-
103
- def setup
104
- setup_dotnet_projects
105
- end
106
-
107
- def make
108
- setup_dotnet_projects
109
- make_dotnet_projects
110
-
111
- # verify the artifacts exist
112
- artifacts.each do |artifact|
113
- raise "artifact does not exist: #{artifact}" unless File.exist?(artifact)
114
- end
115
- end
116
-
117
- def build
118
- build_dotnet_projects
119
- end
120
-
121
- def test
122
- test_dotnet_projects
123
- end
124
-
125
- def setup_dotnet_projects
126
- if dotnet_projects.any?
127
- if !File.exist?("#{name}.sln")
128
- puts " Creating solution file: #{"#{name}.sln".colorize(:green)}"
129
- "dotnet new sln -n #{name}".run unless File.exist?("#{name}.sln")
130
- else
131
- # puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
132
- end
133
- dotnet_projects.each do |project|
134
- add_project = true
135
- add_project = false if project.os == "windows" && !Makit::Environment.is_windows?
136
- next unless add_project
137
-
138
- Makit::DotNet.new_project(project.template, project.name, project.output)
139
- # add any nuget packages to the project
140
- project_filename = "#{project.output}/#{project.name}.csproj"
141
- project.packages.each do |package|
142
- Makit::DotNet.add_package(project_filename, package)
143
- end
144
- end
145
- # Makit::DotNet.new_solution(self.name)
146
- Makit::DotNet.sln_add_projects(name)
147
- else
148
- # puts " no dotnet projects found".colorize(:yellow)
149
- end
150
- end
151
-
152
- def make_dotnet_projects
153
- dotnet_projects.each do |project|
154
- next if project.os == "windows" && !Makit::Environment.is_windows?
155
-
156
- project.commands.each do |command|
157
- Makit::Directory.get_newest_file_timestamp(project.output)
158
- # newest_file = Makit::Directory::get_newest_file_or_now(project.output)
159
- command_request = Makit::Commands::Request.from_string(command)
160
- Makit::Commands::Runner.default.execute(command_request)
161
- end
162
- end
163
- end
164
-
165
- def build_dotnet_projects
166
- dotnet_projects.each do |project|
167
- next if project.os == "windows" && !Makit::Environment.is_windows?
168
-
169
- project.commands.each do |command|
170
- Makit::Directory.get_newest_file_timestamp(project.output)
171
- # newest_file = Makit::Directory::get_newest_file_or_now(project.output)
172
- command_request = Makit::Commands::Request.from_string(command)
173
- Makit::Commands::Runner.default.execute(command_request)
174
- end
175
- project.build_args.each do |build_arg|
176
- project_path = File.join(project.output, "#{project.name}.csproj")
177
- Makit::DotNet.build(project_path, build_arg.configuration, build_arg.output)
178
- end
179
- project.publish_args.each do |publish_arg|
180
- project_path = File.join(project.output, "#{project.name}.csproj")
181
- Makit::DotNet.publish(project_path, publish_arg.configuration, publish_arg.output)
182
- end
183
- end
184
- end
185
-
186
- def test_dotnet_projects
187
- dotnet_projects.each do |project|
188
- next if project.os == "windows" && !Makit::Environment.is_windows?
189
-
190
- project.test_args.each do |test_args|
191
- project_path = File.join(project.output, "#{project.name}.csproj")
192
- Makit::DotNet.test(project_path, test_args.configuration, test_args.output)
193
- end
194
- # "dotnet test #{project.output} --configuration Release".run
195
- end
196
- end
197
- end
198
- end
199
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "yaml"
5
+
6
+ module Makit
7
+ module V1
8
+ class Project
9
+ # def to_yaml
10
+ # data = JSON.parse(self.to_pretty_json)
11
+ # data.to_yaml.sub(/^---\n/, "")
12
+ # end
13
+
14
+ def self.create
15
+ project = Makit::V1::Project.new
16
+ project.set_default_values
17
+ project
18
+ end
19
+
20
+ def open(filename)
21
+ other = Makit::Serializer.open(filename, Makit::V1::Project)
22
+ # other = Makit::V1::Project::create_from_file(filename)
23
+ self.name = other.name
24
+ self.git_remote_url = other.git_remote_url
25
+ self.dotnet_projects = other.dotnet_projects
26
+ self.artifacts = other.artifacts
27
+ end
28
+
29
+ # def self.create_from_file(filename)
30
+ # extension = File.extname(filename)
31
+ # case extension
32
+ # when ".yml"
33
+ # yaml = File.read(filename)
34
+ # create_from_yaml(yaml)
35
+ # when ".json"
36
+ # json = File.read(filename)
37
+ # create_from_json(json)
38
+ # else
39
+ # raise "unsupported file extension: #{extension}"
40
+ # end
41
+ # end
42
+
43
+ # def self.create_from_yaml(yaml)
44
+ # json = JSON.pretty_generate(YAML.load(yaml))
45
+ # project = Makit::V1::Project.decode_json(json)
46
+ # project
47
+ # end
48
+
49
+ # def self.create_from_json(json)
50
+ # project = Makit::V1::Project.decode_json(json)
51
+ # project
52
+ # end
53
+
54
+ def set_default_values
55
+ # self.language = "csharp"
56
+ # self.primary_artifact_type = "nuget"
57
+ self.git_remote_url = `git remote get-url origin`.strip if git_remote_url.nil? || git_remote_url.empty?
58
+ if name.nil? || name.empty?
59
+ if !git_remote_url.nil? && !git_remote_url.empty?
60
+ self.name = get_name(File.basename(git_remote_url, ".git")) # get_capitalized_name(File.basename(self.git_remote_url, ".git"))
61
+ else
62
+ self.name = get_name(File.basename(Dir.getwd)) # get_capitalized_name(File.basename(Dir.getwd))
63
+ end
64
+ end
65
+ self
66
+ end
67
+
68
+ def get_name(name)
69
+ if !git_remote_url.nil? && !git_remote_url.empty?
70
+ is_dotnet = git_remote_url.include?("nuget")
71
+ get_capitalized_name(name) if is_dotnet
72
+ end
73
+ name.downcase
74
+ end
75
+
76
+ def get_capitalized_name(name)
77
+ name.split(".").map(&:capitalize).join(".")
78
+ end
79
+
80
+ def save_as(filename)
81
+ Makit::Serializer.save_as(filename, self)
82
+ # extension = File.extname(filename)
83
+ # case extension
84
+ # when ".json"
85
+ # File.write(filename, self.to_pretty_json)
86
+ # when ".yml"
87
+ # File.write(filename, self.to_yaml)
88
+ # else
89
+ # raise "unsupported file extension: #{extension}"
90
+ # end
91
+ end
92
+
93
+ def with_dotnet_project(template, name, output)
94
+ return if dotnet_projects.any? { |project| project.output == output }
95
+
96
+ project = Makit::V1::DotNetProject.new
97
+ project.template = template
98
+ project.name = name
99
+ project.output = output
100
+ dotnet_projects << project
101
+ end
102
+
103
+ def setup
104
+ setup_dotnet_projects
105
+ end
106
+
107
+ def make
108
+ setup_dotnet_projects
109
+ make_dotnet_projects
110
+
111
+ # verify the artifacts exist
112
+ artifacts.each do |artifact|
113
+ raise "artifact does not exist: #{artifact}" unless File.exist?(artifact)
114
+ end
115
+ end
116
+
117
+ def build
118
+ build_dotnet_projects
119
+ end
120
+
121
+ def test
122
+ test_dotnet_projects
123
+ end
124
+
125
+ def setup_dotnet_projects
126
+ if dotnet_projects.any?
127
+ if !File.exist?("#{name}.sln")
128
+ puts " Creating solution file: #{"#{name}.sln".colorize(:green)}"
129
+ "dotnet new sln -n #{name}".run unless File.exist?("#{name}.sln")
130
+ else
131
+ # puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
132
+ end
133
+ dotnet_projects.each do |project|
134
+ add_project = true
135
+ add_project = false if project.os == "windows" && !Makit::Environment.is_windows?
136
+ next unless add_project
137
+
138
+ Makit::DotNet.new_project(project.template, project.name, project.output)
139
+ # add any nuget packages to the project
140
+ project_filename = "#{project.output}/#{project.name}.csproj"
141
+ project.packages.each do |package|
142
+ Makit::DotNet.add_package(project_filename, package)
143
+ end
144
+ end
145
+ # Makit::DotNet.new_solution(self.name)
146
+ Makit::DotNet.sln_add_projects(name)
147
+ else
148
+ # puts " no dotnet projects found".colorize(:yellow)
149
+ end
150
+ end
151
+
152
+ def make_dotnet_projects
153
+ dotnet_projects.each do |project|
154
+ next if project.os == "windows" && !Makit::Environment.is_windows?
155
+
156
+ project.commands.each do |command|
157
+ Makit::Directory.get_newest_file_timestamp(project.output)
158
+ # newest_file = Makit::Directory::get_newest_file_or_now(project.output)
159
+ command_request = Makit::Commands::Request.from_string(command)
160
+ Makit::Commands::Runner.default.execute(command_request)
161
+ end
162
+ end
163
+ end
164
+
165
+ def build_dotnet_projects
166
+ dotnet_projects.each do |project|
167
+ next if project.os == "windows" && !Makit::Environment.is_windows?
168
+
169
+ project.commands.each do |command|
170
+ Makit::Directory.get_newest_file_timestamp(project.output)
171
+ # newest_file = Makit::Directory::get_newest_file_or_now(project.output)
172
+ command_request = Makit::Commands::Request.from_string(command)
173
+ Makit::Commands::Runner.default.execute(command_request)
174
+ end
175
+ project.build_args.each do |build_arg|
176
+ project_path = File.join(project.output, "#{project.name}.csproj")
177
+ Makit::DotNet.build(project_path, build_arg.configuration, build_arg.output)
178
+ end
179
+ project.publish_args.each do |publish_arg|
180
+ project_path = File.join(project.output, "#{project.name}.csproj")
181
+ Makit::DotNet.publish(project_path, publish_arg.configuration, publish_arg.output)
182
+ end
183
+ end
184
+ end
185
+
186
+ def test_dotnet_projects
187
+ dotnet_projects.each do |project|
188
+ next if project.os == "windows" && !Makit::Environment.is_windows?
189
+
190
+ project.test_args.each do |test_args|
191
+ project_path = File.join(project.output, "#{project.name}.csproj")
192
+ Makit::DotNet.test(project_path, test_args.configuration, test_args.output)
193
+ end
194
+ # "dotnet test #{project.output} --configuration Release".run
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end