makit 0.0.144 → 0.0.145

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 (165) 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/cli/base.rb +17 -0
  7. data/lib/makit/cli/build_commands.rb +500 -500
  8. data/lib/makit/cli/generators/base_generator.rb +74 -74
  9. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  10. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  11. data/lib/makit/cli/generators/node_generator.rb +50 -50
  12. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  13. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  14. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  15. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  16. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  17. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +41 -40
  18. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  19. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  20. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  21. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  22. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  23. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  24. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  25. data/lib/makit/cli/main.rb +78 -69
  26. data/lib/makit/cli/pipeline_commands.rb +311 -0
  27. data/lib/makit/cli/project_commands.rb +868 -868
  28. data/lib/makit/cli/repository_commands.rb +661 -661
  29. data/lib/makit/cli/strategy_commands.rb +207 -212
  30. data/lib/makit/cli/utility_commands.rb +521 -521
  31. data/lib/makit/commands/factory.rb +359 -359
  32. data/lib/makit/commands/middleware/base.rb +73 -73
  33. data/lib/makit/commands/middleware/cache.rb +248 -248
  34. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  35. data/lib/makit/commands/middleware/validator.rb +269 -269
  36. data/lib/makit/commands/request.rb +316 -316
  37. data/lib/makit/commands/result.rb +323 -323
  38. data/lib/makit/commands/runner.rb +386 -386
  39. data/lib/makit/commands/strategies/base.rb +171 -171
  40. data/lib/makit/commands/strategies/child_process.rb +162 -162
  41. data/lib/makit/commands/strategies/factory.rb +136 -136
  42. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  43. data/lib/makit/commands.rb +50 -50
  44. data/lib/makit/configuration/dotnet_project.rb +48 -48
  45. data/lib/makit/configuration/gitlab_helper.rb +61 -58
  46. data/lib/makit/configuration/project.rb +446 -168
  47. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  48. data/lib/makit/configuration/step.rb +34 -34
  49. data/lib/makit/configuration/timeout.rb +74 -74
  50. data/lib/makit/configuration.rb +21 -16
  51. data/lib/makit/content/default_gitignore.rb +7 -7
  52. data/lib/makit/content/default_gitignore.txt +225 -225
  53. data/lib/makit/content/default_rakefile.rb +13 -13
  54. data/lib/makit/content/gem_rakefile.rb +16 -16
  55. data/lib/makit/context.rb +1 -1
  56. data/lib/makit/data.rb +49 -49
  57. data/lib/makit/directories.rb +140 -140
  58. data/lib/makit/directory.rb +262 -262
  59. data/lib/makit/docs/files.rb +89 -89
  60. data/lib/makit/docs/rake.rb +102 -102
  61. data/lib/makit/dotnet/cli.rb +69 -69
  62. data/lib/makit/dotnet/project.rb +217 -217
  63. data/lib/makit/dotnet/solution.rb +38 -38
  64. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  65. data/lib/makit/dotnet/solution_console.rb +264 -264
  66. data/lib/makit/dotnet/solution_maui.rb +354 -354
  67. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  68. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  69. data/lib/makit/dotnet.rb +102 -102
  70. data/lib/makit/email.rb +90 -90
  71. data/lib/makit/environment.rb +142 -142
  72. data/lib/makit/examples/runner.rb +370 -370
  73. data/lib/makit/exceptions.rb +45 -45
  74. data/lib/makit/fileinfo.rb +32 -24
  75. data/lib/makit/files.rb +43 -43
  76. data/lib/makit/gems.rb +40 -40
  77. data/lib/makit/git/cli.rb +54 -54
  78. data/lib/makit/git/repository.rb +266 -90
  79. data/lib/makit/git.rb +104 -98
  80. data/lib/makit/gitlab/pipeline.rb +857 -0
  81. data/lib/makit/gitlab/pipeline_service_impl.rb +1536 -0
  82. data/lib/makit/gitlab_runner.rb +59 -59
  83. data/lib/makit/humanize.rb +218 -137
  84. data/lib/makit/indexer.rb +47 -47
  85. data/lib/makit/io/filesystem.rb +111 -0
  86. data/lib/makit/io/filesystem_service_impl.rb +337 -0
  87. data/lib/makit/logging/configuration.rb +308 -308
  88. data/lib/makit/logging/format_registry.rb +84 -84
  89. data/lib/makit/logging/formatters/base.rb +39 -39
  90. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  91. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  92. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  93. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  94. data/lib/makit/logging/log_request.rb +119 -119
  95. data/lib/makit/logging/logger.rb +199 -199
  96. data/lib/makit/logging/sinks/base.rb +91 -91
  97. data/lib/makit/logging/sinks/console.rb +72 -72
  98. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  99. data/lib/makit/logging/sinks/structured.rb +123 -123
  100. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  101. data/lib/makit/logging.rb +565 -565
  102. data/lib/makit/markdown.rb +75 -75
  103. data/lib/makit/mp/basic_object_mp.rb +17 -17
  104. data/lib/makit/mp/command_mp.rb +13 -13
  105. data/lib/makit/mp/command_request.mp.rb +17 -17
  106. data/lib/makit/mp/project_mp.rb +199 -199
  107. data/lib/makit/mp/string_mp.rb +205 -199
  108. data/lib/makit/nuget.rb +74 -74
  109. data/lib/makit/podman/podman.rb +458 -0
  110. data/lib/makit/podman/podman_service_impl.rb +1081 -0
  111. data/lib/makit/port.rb +32 -32
  112. data/lib/makit/process.rb +377 -377
  113. data/lib/makit/protoc.rb +112 -107
  114. data/lib/makit/rake/cli.rb +196 -196
  115. data/lib/makit/rake/trace_controller.rb +174 -174
  116. data/lib/makit/rake.rb +81 -81
  117. data/lib/makit/ruby/cli.rb +185 -185
  118. data/lib/makit/ruby.rb +25 -25
  119. data/lib/makit/secrets.rb +51 -51
  120. data/lib/makit/serializer.rb +130 -130
  121. data/lib/makit/services/builder.rb +186 -186
  122. data/lib/makit/services/error_handler.rb +226 -226
  123. data/lib/makit/services/repository_manager.rb +367 -231
  124. data/lib/makit/services/validator.rb +112 -112
  125. data/lib/makit/setup/classlib.rb +101 -101
  126. data/lib/makit/setup/gem.rb +268 -268
  127. data/lib/makit/setup/pages.rb +11 -11
  128. data/lib/makit/setup/razorclasslib.rb +101 -101
  129. data/lib/makit/setup/runner.rb +54 -54
  130. data/lib/makit/setup.rb +5 -5
  131. data/lib/makit/show.rb +110 -110
  132. data/lib/makit/storage.rb +126 -126
  133. data/lib/makit/symbols.rb +175 -170
  134. data/lib/makit/task_info.rb +130 -130
  135. data/lib/makit/tasks/at_exit.rb +15 -15
  136. data/lib/makit/tasks/build.rb +22 -22
  137. data/lib/makit/tasks/clean.rb +13 -13
  138. data/lib/makit/tasks/configure.rb +10 -10
  139. data/lib/makit/tasks/format.rb +10 -10
  140. data/lib/makit/tasks/hook_manager.rb +443 -443
  141. data/lib/makit/tasks/init.rb +49 -49
  142. data/lib/makit/tasks/integrate.rb +29 -29
  143. data/lib/makit/tasks/pull_incoming.rb +13 -13
  144. data/lib/makit/tasks/setup.rb +16 -16
  145. data/lib/makit/tasks/sync.rb +17 -17
  146. data/lib/makit/tasks/tag.rb +16 -16
  147. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  148. data/lib/makit/tasks/test.rb +22 -22
  149. data/lib/makit/tasks/update.rb +18 -18
  150. data/lib/makit/tasks.rb +20 -20
  151. data/lib/makit/test_cache.rb +239 -239
  152. data/lib/makit/tree.rb +37 -37
  153. data/lib/makit/v1/configuration/project_service_impl.rb +371 -0
  154. data/lib/makit/v1/git/git_repository_service_impl.rb +295 -0
  155. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  156. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  157. data/lib/makit/v1/services/repository_manager_service_impl.rb +572 -0
  158. data/lib/makit/version.rb +100 -100
  159. data/lib/makit/version_util.rb +21 -21
  160. data/lib/makit/wix.rb +95 -95
  161. data/lib/makit/yaml.rb +29 -29
  162. data/lib/makit/zip.rb +17 -17
  163. data/lib/makit copy.rb +44 -44
  164. data/lib/makit.rb +111 -43
  165. metadata +61 -36
@@ -1,49 +1,49 @@
1
- # frozen_string_literal: true
2
-
3
- Rake.application.top_level_tasks.unshift("init")
4
-
5
- task :init do
6
- puts "-" * 80
7
- humanized_timestamp = Makit::Humanize.get_humanized_timestamp(Time.now)
8
- # log the rake + arguments, as it would be invoke at the console.
9
- # for instance: rake -T
10
- # or: rake
11
- # or: rake clean
12
- # or: rake LOG_LEVEL=debug
13
- command = "rake #{ARGV.join(" ")}"
14
- message = "#{command} (#{humanized_timestamp})"
15
-
16
- # Create filename-friendly version of rake command
17
- rake_name = command.gsub(/[^a-zA-Z0-9\-_]/, "_").gsub(/_+/, "_").gsub(/^_|_$/, "")
18
-
19
- # Get the default logger and add custom file logging sinks
20
- log = Makit::Logging.default_logger
21
-
22
- # Add structured JSON and simple text logging sinks to the default logger
23
- additional_sinks = [
24
- Makit::Logging::Sinks::UnifiedFileSink.new(
25
- configurations: [
26
- # Structured JSON logging
27
- {
28
- file: "artifacts/#{rake_name}.json",
29
- format: :json,
30
- append: true,
31
- include_metadata: true,
32
- },
33
- # Simple text logging with rendered context
34
- {
35
- file: "artifacts/#{rake_name}.txt",
36
- format: :plain,
37
- append: true,
38
- include_context: true,
39
- },
40
- ],
41
- ),
42
- ]
43
-
44
- # Add the additional sinks to the default logger
45
- log.sinks.concat(additional_sinks)
46
-
47
- # Log with the enhanced default logger
48
- log.info(message)
49
- end
1
+ # frozen_string_literal: true
2
+
3
+ Rake.application.top_level_tasks.unshift("init")
4
+
5
+ task :init do
6
+ puts "-" * 80
7
+ humanized_timestamp = Makit::Humanize.get_humanized_timestamp(Time.now)
8
+ # log the rake + arguments, as it would be invoke at the console.
9
+ # for instance: rake -T
10
+ # or: rake
11
+ # or: rake clean
12
+ # or: rake LOG_LEVEL=debug
13
+ command = "rake #{ARGV.join(" ")}"
14
+ message = "#{command} (#{humanized_timestamp})"
15
+
16
+ # Create filename-friendly version of rake command
17
+ rake_name = command.gsub(/[^a-zA-Z0-9\-_]/, "_").gsub(/_+/, "_").gsub(/^_|_$/, "")
18
+
19
+ # Get the default logger and add custom file logging sinks
20
+ log = Makit::Logging.default_logger
21
+
22
+ # Add structured JSON and simple text logging sinks to the default logger
23
+ additional_sinks = [
24
+ Makit::Logging::Sinks::UnifiedFileSink.new(
25
+ configurations: [
26
+ # Structured JSON logging
27
+ {
28
+ file: "artifacts/#{rake_name}.json",
29
+ format: :json,
30
+ append: true,
31
+ include_metadata: true,
32
+ },
33
+ # Simple text logging with rendered context
34
+ {
35
+ file: "artifacts/#{rake_name}.txt",
36
+ format: :plain,
37
+ append: true,
38
+ include_context: true,
39
+ },
40
+ ],
41
+ ),
42
+ ]
43
+
44
+ # Add the additional sinks to the default logger
45
+ log.sinks.concat(additional_sinks)
46
+
47
+ # Log with the enhanced default logger
48
+ log.info(message)
49
+ end
@@ -1,29 +1,29 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../git/repository"
4
-
5
- if Dir.exist?(".git")
6
- desc "Integrate changes into the git repository."
7
- task :integrate do
8
- Makit::Logging.default_logger.task_start("integrate")
9
- unstaged_files = Makit::Git::Repository.unstaged_files
10
- untracked_files = Makit::Git::Repository.untracked_files
11
- if unstaged_files.length.positive? || untracked_files.length.positive?
12
- #Makit::Git::CLI.integrate
13
- #return unless Repository.git_repo? && !Repository.detached
14
-
15
- ## check for unstaged or untracked files
16
- # unstaged_files = `git status --porcelain`.split("\n")
17
- # untracked_files = `git ls-files --others --exclude-standard`.split("\n")
18
- # return unless unstaged_files.length.positive? || untracked_files.length.positive?
19
-
20
- "git add .".try
21
- "git commit -m \"integrate\"".run unless Makit::Git::Repository.clean?
22
- else
23
- Makit::Logging.default_logger.info("No unstaged or untracked files found")
24
- # puts " No unstaged or untracked files found".colorize(:grey)
25
- end
26
- end
27
- else
28
- Makit::Logging.default_logger.debug("Not a git repository, skipping integrate")
29
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../git/repository"
4
+
5
+ if Dir.exist?(".git")
6
+ desc "Integrate changes into the git repository."
7
+ task :integrate do
8
+ Makit::Logging.default_logger.task_start("integrate")
9
+ unstaged_files = Makit::Git::Repository.unstaged_files
10
+ untracked_files = Makit::Git::Repository.untracked_files
11
+ if unstaged_files.length.positive? || untracked_files.length.positive?
12
+ #Makit::Git::CLI.integrate
13
+ #return unless Repository.git_repo? && !Repository.detached
14
+
15
+ ## check for unstaged or untracked files
16
+ # unstaged_files = `git status --porcelain`.split("\n")
17
+ # untracked_files = `git ls-files --others --exclude-standard`.split("\n")
18
+ # return unless unstaged_files.length.positive? || untracked_files.length.positive?
19
+
20
+ "git add .".try
21
+ "git commit -m \"integrate\"".run unless Makit::Git::Repository.clean?
22
+ else
23
+ Makit::Logging.default_logger.info("No unstaged or untracked files found")
24
+ # puts " No unstaged or untracked files found".colorize(:grey)
25
+ end
26
+ end
27
+ else
28
+ Makit::Logging.default_logger.debug("Not a git repository, skipping integrate")
29
+ end
@@ -1,13 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../git/repository"
4
-
5
- if Makit::Git::Repository.git_repo?
6
- desc "pull changes from the remote branch, preferring incoming changes for conflicts"
7
- task :pull_incoming do
8
- Makit::Logging.default_logger.task_start("pull_incoming")
9
- # Makit::SHOW.task(:pull_incoming)
10
- puts " git branch is ".colorize(:grey) + Makit::Git::Repository.branch.to_s.colorize(:green)
11
- "git pull origin #{Makit::Git::Repository.branch} -X theirs".try
12
- end
13
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../git/repository"
4
+
5
+ if Makit::Git::Repository.git_repo?
6
+ desc "pull changes from the remote branch, preferring incoming changes for conflicts"
7
+ task :pull_incoming do
8
+ Makit::Logging.default_logger.task_start("pull_incoming")
9
+ # Makit::SHOW.task(:pull_incoming)
10
+ puts " git branch is ".colorize(:grey) + Makit::Git::Repository.branch.to_s.colorize(:green)
11
+ "git pull origin #{Makit::Git::Repository.branch} -X theirs".try
12
+ end
13
+ end
@@ -1,16 +1,16 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../setup/runner"
4
-
5
- desc "Setup project files.."
6
- task :setup do
7
- Makit::Logging.default_logger.task_start("setup")
8
-
9
- # if a .git directory exists, then make sure we have a .gitignore
10
- if File.exist?(".git")
11
- if !File.exist?(".gitignore")
12
- File.write(".gitignore", Makit::Content::GITIGNORE)
13
- end
14
- end
15
- Makit::Setup::Runner.run
16
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../setup/runner"
4
+
5
+ desc "Setup project files.."
6
+ task :setup do
7
+ Makit::Logging.default_logger.task_start("setup")
8
+
9
+ # if a .git directory exists, then make sure we have a .gitignore
10
+ if File.exist?(".git")
11
+ if !File.exist?(".gitignore")
12
+ File.write(".gitignore", Makit::Content::GITIGNORE)
13
+ end
14
+ end
15
+ Makit::Setup::Runner.run
16
+ end
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../git/cli"
4
-
5
- if Dir.exist?(".git")
6
- desc "Sync changes with the git repository."
7
- task :sync do
8
- Makit::Logging.default_logger.task_start("sync")
9
- # Makit::SHOW.task(:sync)
10
- Makit::Git::CLI.sync
11
- "git pull".try
12
- "git push origin".try
13
- "git push origin --tags".try
14
- end
15
- else
16
- Makit::Logging.default_logger.debug("Not a git repository, skipping sync")
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../git/cli"
4
+
5
+ if Dir.exist?(".git")
6
+ desc "Sync changes with the git repository."
7
+ task :sync do
8
+ Makit::Logging.default_logger.task_start("sync")
9
+ # Makit::SHOW.task(:sync)
10
+ Makit::Git::CLI.sync
11
+ "git pull".try
12
+ "git push origin".try
13
+ "git push origin --tags".try
14
+ end
15
+ else
16
+ Makit::Logging.default_logger.debug("Not a git repository, skipping sync")
17
+ end
@@ -1,16 +1,16 @@
1
- # frozen_string_literal: true
2
-
3
- if Dir.exist?(".git")
4
- desc "tag the current version"
5
- task :tag do
6
- # check if the variable VERSION is defined
7
- unless defined?(VERSION)
8
- puts " VERSION is not defined".colorize(:red)
9
- return
10
- end
11
-
12
- Makit::Git::CLI.tag(VERSION)
13
- end
14
- else
15
- Makit::Logging.default_logger.debug("Not a git repository, skipping tag")
16
- end
1
+ # frozen_string_literal: true
2
+
3
+ if Dir.exist?(".git")
4
+ desc "tag the current version"
5
+ task :tag do
6
+ # check if the variable VERSION is defined
7
+ unless defined?(VERSION)
8
+ puts " VERSION is not defined".colorize(:red)
9
+ return
10
+ end
11
+
12
+ Makit::Git::CLI.tag(VERSION)
13
+ end
14
+ else
15
+ Makit::Logging.default_logger.debug("Not a git repository, skipping tag")
16
+ end
@@ -1,81 +1,81 @@
1
- # frozen_string_literal: true
2
-
3
- # Monkey patch for Rake::Task to add hook support
4
- #
5
- # This module patches Rake::Task to automatically execute pre and post hooks
6
- # for all task invocations. It preserves the original behavior while adding
7
- # the hook functionality.
8
- #
9
- # @note This file should be required after the HookManager class is defined
10
- require_relative "hook_manager"
11
-
12
- # Monkey patch Rake::Task to add hook support
13
- module Rake
14
- class Task
15
- # Store original methods before patching
16
- alias original_invoke invoke
17
- alias original_execute execute
18
-
19
- # Enhanced invoke method with hook support
20
- #
21
- # This method wraps the original invoke method to execute pre and post hooks
22
- # around task execution. It handles errors gracefully and ensures hooks are
23
- # always executed even if the task fails.
24
- #
25
- # @param args [Array] arguments passed to the task
26
- # @return [Object] the result of the task execution
27
- def invoke(*args)
28
- start_time = Time.now
29
- result = nil
30
- error = nil
31
-
32
- begin
33
- # Execute pre-task hooks
34
- Makit::Tasks::HookManager.execute_pre_hooks(name)
35
-
36
- # Execute the original task
37
- result = original_invoke(*args)
38
- rescue StandardError => e
39
- error = e
40
- raise
41
- ensure
42
- # Execute post-task hooks (always runs, even on error)
43
- duration = Time.now - start_time
44
- Makit::Tasks::HookManager.execute_post_hooks(name, duration, result, error)
45
- end
46
-
47
- result
48
- end
49
-
50
- # Enhanced execute method with hook support
51
- #
52
- # This method wraps the original execute method to execute pre and post hooks
53
- # around task execution. It handles errors gracefully and ensures hooks are
54
- # always executed even if the task fails.
55
- #
56
- # @param args [Array] arguments passed to the task
57
- # @return [Object] the result of the task execution
58
- def execute(*args)
59
- start_time = Time.now
60
- result = nil
61
- error = nil
62
-
63
- begin
64
- # Execute pre-task hooks
65
- Makit::Tasks::HookManager.execute_pre_hooks(name)
66
-
67
- # Execute the original task
68
- result = original_execute(*args)
69
- rescue StandardError => e
70
- error = e
71
- raise
72
- ensure
73
- # Execute post-task hooks (always runs, even on error)
74
- duration = Time.now - start_time
75
- Makit::Tasks::HookManager.execute_post_hooks(name, duration, result, error)
76
- end
77
-
78
- result
79
- end
80
- end
81
- end
1
+ # frozen_string_literal: true
2
+
3
+ # Monkey patch for Rake::Task to add hook support
4
+ #
5
+ # This module patches Rake::Task to automatically execute pre and post hooks
6
+ # for all task invocations. It preserves the original behavior while adding
7
+ # the hook functionality.
8
+ #
9
+ # @note This file should be required after the HookManager class is defined
10
+ require_relative "hook_manager"
11
+
12
+ # Monkey patch Rake::Task to add hook support
13
+ module Rake
14
+ class Task
15
+ # Store original methods before patching
16
+ alias original_invoke invoke
17
+ alias original_execute execute
18
+
19
+ # Enhanced invoke method with hook support
20
+ #
21
+ # This method wraps the original invoke method to execute pre and post hooks
22
+ # around task execution. It handles errors gracefully and ensures hooks are
23
+ # always executed even if the task fails.
24
+ #
25
+ # @param args [Array] arguments passed to the task
26
+ # @return [Object] the result of the task execution
27
+ def invoke(*args)
28
+ start_time = Time.now
29
+ result = nil
30
+ error = nil
31
+
32
+ begin
33
+ # Execute pre-task hooks
34
+ Makit::Tasks::HookManager.execute_pre_hooks(name)
35
+
36
+ # Execute the original task
37
+ result = original_invoke(*args)
38
+ rescue StandardError => e
39
+ error = e
40
+ raise
41
+ ensure
42
+ # Execute post-task hooks (always runs, even on error)
43
+ duration = Time.now - start_time
44
+ Makit::Tasks::HookManager.execute_post_hooks(name, duration, result, error)
45
+ end
46
+
47
+ result
48
+ end
49
+
50
+ # Enhanced execute method with hook support
51
+ #
52
+ # This method wraps the original execute method to execute pre and post hooks
53
+ # around task execution. It handles errors gracefully and ensures hooks are
54
+ # always executed even if the task fails.
55
+ #
56
+ # @param args [Array] arguments passed to the task
57
+ # @return [Object] the result of the task execution
58
+ def execute(*args)
59
+ start_time = Time.now
60
+ result = nil
61
+ error = nil
62
+
63
+ begin
64
+ # Execute pre-task hooks
65
+ Makit::Tasks::HookManager.execute_pre_hooks(name)
66
+
67
+ # Execute the original task
68
+ result = original_execute(*args)
69
+ rescue StandardError => e
70
+ error = e
71
+ raise
72
+ ensure
73
+ # Execute post-task hooks (always runs, even on error)
74
+ duration = Time.now - start_time
75
+ Makit::Tasks::HookManager.execute_post_hooks(name, duration, result, error)
76
+ end
77
+
78
+ result
79
+ end
80
+ end
81
+ end
@@ -1,22 +1,22 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../setup/runner"
4
-
5
- if File.exist?(".makit.json")
6
- desc "Test project artifacts.."
7
- task :test do
8
- Makit::Logging.default_logger.task_start("test")
9
- # load the default project configuration
10
- # puts "loading project configuration"
11
- project = Makit::Configuration::Project.default
12
-
13
- # if the project has a build step, run the commands
14
- test_step = project.steps.find { |step| step.name == "test" }
15
- test_step&.commands&.each do |command|
16
- request = Makit::Commands::Request.from_string(command)
17
- Makit::Commands::Runner.default.execute(request)
18
- end
19
- end
20
- else
21
- Makit::Logging.default_logger.debug("Project not configured, skipping setup task definition")
22
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../setup/runner"
4
+
5
+ if File.exist?(".makit.json")
6
+ desc "Test project artifacts.."
7
+ task :test do
8
+ Makit::Logging.default_logger.task_start("test")
9
+ # load the default project configuration
10
+ # puts "loading project configuration"
11
+ project = Makit::Configuration::Project.default
12
+
13
+ # if the project has a build step, run the commands
14
+ test_step = project.steps.find { |step| step.name == "test" }
15
+ test_step&.commands&.each do |command|
16
+ request = Makit::Commands::Request.from_string(command)
17
+ Makit::Commands::Runner.default.execute(request)
18
+ end
19
+ end
20
+ else
21
+ Makit::Logging.default_logger.debug("Project not configured, skipping setup task definition")
22
+ end
@@ -1,18 +1,18 @@
1
- # frozen_string_literal: true
2
-
3
- desc "Update project dependencies"
4
- task :update do
5
- "bundle update".run if File.exist?("Gemfile")
6
- # are there any *.sln files?
7
- Dir.glob("**/*.sln").each do |sln_file|
8
- "dotnet sln migrate #{sln_file}".run
9
- FileUtils.rm_f(sln_file) if File.exist?(sln_file.gsub(".sln", ".slnx"))
10
- end
11
- "dotnet tool update --global dotnet-outdated-tool".run
12
- Dir.glob("**/*.slnx").each do |slnx_file|
13
- "dotnet outdated #{slnx_file} --upgrade:Auto".run
14
- end
15
- Dir.glob("**/*.csproj").each do |csproj_file|
16
- "dotnet outdated #{csproj_file} --upgrade:Auto".run
17
- end
18
- end
1
+ # frozen_string_literal: true
2
+
3
+ desc "Update project dependencies"
4
+ task :update do
5
+ "bundle update".run if File.exist?("Gemfile")
6
+ # are there any *.sln files?
7
+ Dir.glob("**/*.sln").each do |sln_file|
8
+ "dotnet sln migrate #{sln_file}".run
9
+ FileUtils.rm_f(sln_file) if File.exist?(sln_file.gsub(".sln", ".slnx"))
10
+ end
11
+ "dotnet tool update --global dotnet-outdated-tool".run
12
+ Dir.glob("**/*.slnx").each do |slnx_file|
13
+ "dotnet outdated #{slnx_file} --upgrade:Auto".run
14
+ end
15
+ Dir.glob("**/*.csproj").each do |csproj_file|
16
+ "dotnet outdated #{csproj_file} --upgrade:Auto".run
17
+ end
18
+ end
data/lib/makit/tasks.rb CHANGED
@@ -1,20 +1,20 @@
1
- # frozen_string_literal: true
2
-
3
- # Load all task-related modules
4
- require_relative "tasks/hook_manager"
5
- require_relative "tasks/task_monkey_patch"
6
-
7
- require_relative "tasks/build"
8
- require_relative "tasks/clean"
9
- require_relative "tasks/configure"
10
- require_relative "tasks/integrate"
11
- require_relative "tasks/tag"
12
- require_relative "tasks/pull_incoming"
13
- # require_relative "tasks/publish"
14
- # require_relative "tasks/install"
15
- require_relative "tasks/sync"
16
- # require_relative "tasks/configure"
17
- require_relative "tasks/setup"
18
- require_relative "tasks/test"
19
- require_relative "tasks/format"
20
- require_relative "tasks/update"
1
+ # frozen_string_literal: true
2
+
3
+ # Load all task-related modules
4
+ require_relative "tasks/hook_manager"
5
+ require_relative "tasks/task_monkey_patch"
6
+
7
+ require_relative "tasks/build"
8
+ require_relative "tasks/clean"
9
+ require_relative "tasks/configure"
10
+ require_relative "tasks/integrate"
11
+ require_relative "tasks/tag"
12
+ require_relative "tasks/pull_incoming"
13
+ # require_relative "tasks/publish"
14
+ # require_relative "tasks/install"
15
+ require_relative "tasks/sync"
16
+ # require_relative "tasks/configure"
17
+ require_relative "tasks/setup"
18
+ require_relative "tasks/test"
19
+ require_relative "tasks/format"
20
+ require_relative "tasks/update"