makit 0.0.140 → 0.0.141

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 (153) 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/build_commands.rb +500 -500
  7. data/lib/makit/cli/generators/base_generator.rb +74 -74
  8. data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
  9. data/lib/makit/cli/generators/generator_factory.rb +49 -49
  10. data/lib/makit/cli/generators/node_generator.rb +50 -50
  11. data/lib/makit/cli/generators/ruby_generator.rb +77 -77
  12. data/lib/makit/cli/generators/rust_generator.rb +50 -50
  13. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
  14. data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
  15. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
  16. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
  17. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
  18. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
  19. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
  20. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
  21. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
  22. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
  23. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
  24. data/lib/makit/cli/main.rb +69 -69
  25. data/lib/makit/cli/project_commands.rb +868 -868
  26. data/lib/makit/cli/repository_commands.rb +661 -661
  27. data/lib/makit/cli/strategy_commands.rb +203 -203
  28. data/lib/makit/cli/utility_commands.rb +521 -521
  29. data/lib/makit/commands/factory.rb +359 -359
  30. data/lib/makit/commands/middleware/base.rb +73 -73
  31. data/lib/makit/commands/middleware/cache.rb +248 -248
  32. data/lib/makit/commands/middleware/command_logger.rb +312 -312
  33. data/lib/makit/commands/middleware/validator.rb +269 -269
  34. data/lib/makit/commands/request.rb +316 -316
  35. data/lib/makit/commands/result.rb +323 -323
  36. data/lib/makit/commands/runner.rb +388 -385
  37. data/lib/makit/commands/strategies/base.rb +171 -171
  38. data/lib/makit/commands/strategies/child_process.rb +165 -165
  39. data/lib/makit/commands/strategies/factory.rb +136 -136
  40. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  41. data/lib/makit/commands.rb +50 -50
  42. data/lib/makit/configuration/dotnet_project.rb +12 -12
  43. data/lib/makit/configuration/gitlab_helper.rb +58 -58
  44. data/lib/makit/configuration/project.rb +168 -168
  45. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  46. data/lib/makit/configuration/step.rb +34 -34
  47. data/lib/makit/configuration/timeout.rb +74 -74
  48. data/lib/makit/configuration.rb +15 -15
  49. data/lib/makit/content/default_gitignore.rb +7 -7
  50. data/lib/makit/content/default_gitignore.txt +225 -225
  51. data/lib/makit/content/default_rakefile.rb +13 -13
  52. data/lib/makit/content/gem_rakefile.rb +16 -16
  53. data/lib/makit/context.rb +1 -1
  54. data/lib/makit/data.rb +49 -49
  55. data/lib/makit/directories.rb +140 -140
  56. data/lib/makit/directory.rb +262 -262
  57. data/lib/makit/docs/files.rb +89 -89
  58. data/lib/makit/docs/rake.rb +102 -102
  59. data/lib/makit/dotnet/cli.rb +69 -69
  60. data/lib/makit/dotnet/project.rb +217 -217
  61. data/lib/makit/dotnet/solution.rb +38 -38
  62. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  63. data/lib/makit/dotnet/solution_console.rb +264 -264
  64. data/lib/makit/dotnet/solution_maui.rb +354 -354
  65. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  66. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  67. data/lib/makit/dotnet.rb +102 -102
  68. data/lib/makit/email.rb +90 -90
  69. data/lib/makit/environment.rb +142 -142
  70. data/lib/makit/examples/runner.rb +370 -370
  71. data/lib/makit/exceptions.rb +45 -45
  72. data/lib/makit/fileinfo.rb +24 -24
  73. data/lib/makit/files.rb +43 -43
  74. data/lib/makit/gems.rb +40 -40
  75. data/lib/makit/git/cli.rb +54 -54
  76. data/lib/makit/git/repository.rb +90 -90
  77. data/lib/makit/git.rb +98 -98
  78. data/lib/makit/gitlab_runner.rb +59 -59
  79. data/lib/makit/humanize.rb +137 -137
  80. data/lib/makit/indexer.rb +47 -47
  81. data/lib/makit/logging/configuration.rb +308 -308
  82. data/lib/makit/logging/format_registry.rb +84 -84
  83. data/lib/makit/logging/formatters/base.rb +39 -39
  84. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  85. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  86. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  87. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  88. data/lib/makit/logging/log_request.rb +119 -119
  89. data/lib/makit/logging/logger.rb +199 -199
  90. data/lib/makit/logging/sinks/base.rb +91 -91
  91. data/lib/makit/logging/sinks/console.rb +72 -72
  92. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  93. data/lib/makit/logging/sinks/structured.rb +123 -123
  94. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  95. data/lib/makit/logging.rb +565 -565
  96. data/lib/makit/markdown.rb +75 -75
  97. data/lib/makit/mp/basic_object_mp.rb +17 -17
  98. data/lib/makit/mp/command_mp.rb +13 -13
  99. data/lib/makit/mp/command_request.mp.rb +17 -17
  100. data/lib/makit/mp/project_mp.rb +199 -199
  101. data/lib/makit/mp/string_mp.rb +199 -191
  102. data/lib/makit/nuget.rb +74 -74
  103. data/lib/makit/port.rb +32 -32
  104. data/lib/makit/process.rb +163 -163
  105. data/lib/makit/protoc.rb +107 -107
  106. data/lib/makit/rake/cli.rb +196 -196
  107. data/lib/makit/rake/trace_controller.rb +173 -173
  108. data/lib/makit/rake.rb +80 -80
  109. data/lib/makit/ruby/cli.rb +185 -185
  110. data/lib/makit/ruby.rb +25 -25
  111. data/lib/makit/secrets.rb +51 -51
  112. data/lib/makit/serializer.rb +130 -130
  113. data/lib/makit/services/builder.rb +186 -186
  114. data/lib/makit/services/error_handler.rb +226 -226
  115. data/lib/makit/services/repository_manager.rb +231 -231
  116. data/lib/makit/services/validator.rb +112 -112
  117. data/lib/makit/setup/classlib.rb +101 -101
  118. data/lib/makit/setup/gem.rb +268 -268
  119. data/lib/makit/setup/razorclasslib.rb +101 -101
  120. data/lib/makit/setup/runner.rb +54 -54
  121. data/lib/makit/setup.rb +5 -5
  122. data/lib/makit/show.rb +110 -110
  123. data/lib/makit/storage.rb +126 -126
  124. data/lib/makit/symbols.rb +170 -170
  125. data/lib/makit/task_info.rb +130 -130
  126. data/lib/makit/tasks/at_exit.rb +15 -15
  127. data/lib/makit/tasks/build.rb +22 -22
  128. data/lib/makit/tasks/clean.rb +13 -13
  129. data/lib/makit/tasks/configure.rb +10 -10
  130. data/lib/makit/tasks/format.rb +10 -10
  131. data/lib/makit/tasks/hook_manager.rb +443 -443
  132. data/lib/makit/tasks/init.rb +49 -49
  133. data/lib/makit/tasks/integrate.rb +29 -29
  134. data/lib/makit/tasks/pull_incoming.rb +13 -13
  135. data/lib/makit/tasks/setup.rb +13 -13
  136. data/lib/makit/tasks/sync.rb +17 -17
  137. data/lib/makit/tasks/tag.rb +16 -16
  138. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  139. data/lib/makit/tasks/test.rb +22 -22
  140. data/lib/makit/tasks/update.rb +18 -18
  141. data/lib/makit/tasks.rb +20 -20
  142. data/lib/makit/test_cache.rb +239 -239
  143. data/lib/makit/tree.rb +37 -37
  144. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  145. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  146. data/lib/makit/version.rb +99 -99
  147. data/lib/makit/version_util.rb +21 -21
  148. data/lib/makit/wix.rb +95 -95
  149. data/lib/makit/yaml.rb +29 -29
  150. data/lib/makit/zip.rb +17 -17
  151. data/lib/makit copy.rb +44 -44
  152. data/lib/makit.rb +42 -42
  153. metadata +2 -2
@@ -1,130 +1,130 @@
1
- # frozen_string_literal: true
2
-
3
- # Task timing and performance tracking utilities
4
- module Makit
5
- # Task execution time tracking and reporting
6
- #
7
- # This class provides functionality to track the execution time of tasks,
8
- # store timing information, and generate performance reports. It's designed
9
- # to help identify performance bottlenecks in build processes.
10
- class TaskInfo
11
- #
12
- # Class variable to store completed task information
13
- #
14
- class << self
15
- attr_accessor :completed_tasks
16
- end
17
- @completed_tasks = {}
18
-
19
- # @return [String] Name of the task being tracked
20
- # @return [Time] Time when task execution started
21
- # @return [Time] Time when task execution ended
22
- # @return [String] Directory path for task artifacts
23
- attr_reader :task_name, :start_time, :end_time, :artifacts_dir
24
-
25
- # Get the name of the slowest completed task
26
- #
27
- # Analyzes all completed tasks and returns the name of the one
28
- # with the longest execution duration.
29
- #
30
- # @return [String] Name of the slowest task, or "unknown" if no tasks completed
31
- def self.slowest_task_name
32
- return "unknown" if @completed_tasks.empty?
33
-
34
- @completed_tasks.max_by { |_task_name, task_info| task_info[:duration] }[0]
35
- end
36
-
37
- # Track execution time of a task with a block
38
- #
39
- # Creates a new TaskInfo instance, displays the task name,
40
- # executes the provided block, and ensures timing is reported
41
- # even if an exception occurs.
42
- #
43
- # @param task_name [String, Symbol] Name of the task to track
44
- # @yield [TaskInfo] The task info instance for use within the block
45
- # @return [Object] Result of the yielded block
46
- #
47
- # @example
48
- # Makit::TaskInfo.track(:generate) do
49
- # # generate code
50
- # end
51
- def self.track(task_name)
52
- task = new(task_name)
53
- Makit::Logging.default_logger.task_start(task_name)
54
- #Makit::SHOW.task(task_name)
55
- yield(task)
56
- ensure
57
- task&.report_and_store_time_taken
58
- end
59
-
60
- # Track execution time with inferred task name
61
- #
62
- # Similar to track() but attempts to infer the task name automatically.
63
- # Currently returns nil as task name inference is not implemented.
64
- #
65
- # @yield [TaskInfo] The task info instance for use within the block
66
- # @return [Object] Result of the yielded block
67
- def self.track_inferred(&block)
68
- task_name = infer_task_name
69
- Makit::Logging.default_logger.task_start(task_name)
70
- #Makit::SHOW.task(task_name)
71
- track(task_name, &block)
72
- end
73
-
74
- # Initialize a new task tracking instance
75
- #
76
- # Sets up timing tracking for a named task, creates an artifacts
77
- # directory path, and records the start time.
78
- #
79
- # @param task_name [String, Symbol] Name of the task to track
80
- def initialize(task_name)
81
- @task_name = task_name
82
- @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
83
- @start_time = Time.now
84
- # at_exit { report_and_store_time_taken }
85
- end
86
-
87
- # Report and store the task execution time
88
- #
89
- # Calculates the duration, displays a human-readable completion message,
90
- # and stores the timing information in the class-level completed_tasks hash.
91
- #
92
- # @return [nil]
93
- def report_and_store_time_taken
94
- @end_time = Time.now
95
- duration = @end_time - @start_time
96
-
97
- # leverate the Makit::Humanize.get_humanized_duration method
98
- humanized_duration = Makit::Humanize.get_humanized_duration(duration)
99
- puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
100
- # puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
101
-
102
- # Add to class-level storage
103
- self.class.completed_tasks[@task_name] = {
104
- start_time: @start_time,
105
- end_time: @end_time,
106
- duration: duration,
107
- }
108
- end
109
-
110
- # def format_duration(seconds)
111
- # if seconds >= 60
112
- # mins = (seconds / 60).to_i
113
- # secs = (seconds % 60).round(2)
114
- # "#{mins}m #{secs}s"
115
- # else
116
- # "#{seconds.round(2)}s"
117
- # end
118
- # end
119
-
120
- # Attempt to infer the current task name
121
- #
122
- # This method would extract the current Rake task name from the
123
- # application context, but is currently not implemented.
124
- #
125
- # @return [String, nil] The inferred task name, or nil if unavailable
126
- def self.infer_task_name
127
- # Rake.application.current_scope.join(":") rescue "unknown"
128
- end
129
- end
130
- end
1
+ # frozen_string_literal: true
2
+
3
+ # Task timing and performance tracking utilities
4
+ module Makit
5
+ # Task execution time tracking and reporting
6
+ #
7
+ # This class provides functionality to track the execution time of tasks,
8
+ # store timing information, and generate performance reports. It's designed
9
+ # to help identify performance bottlenecks in build processes.
10
+ class TaskInfo
11
+ #
12
+ # Class variable to store completed task information
13
+ #
14
+ class << self
15
+ attr_accessor :completed_tasks
16
+ end
17
+ @completed_tasks = {}
18
+
19
+ # @return [String] Name of the task being tracked
20
+ # @return [Time] Time when task execution started
21
+ # @return [Time] Time when task execution ended
22
+ # @return [String] Directory path for task artifacts
23
+ attr_reader :task_name, :start_time, :end_time, :artifacts_dir
24
+
25
+ # Get the name of the slowest completed task
26
+ #
27
+ # Analyzes all completed tasks and returns the name of the one
28
+ # with the longest execution duration.
29
+ #
30
+ # @return [String] Name of the slowest task, or "unknown" if no tasks completed
31
+ def self.slowest_task_name
32
+ return "unknown" if @completed_tasks.empty?
33
+
34
+ @completed_tasks.max_by { |_task_name, task_info| task_info[:duration] }[0]
35
+ end
36
+
37
+ # Track execution time of a task with a block
38
+ #
39
+ # Creates a new TaskInfo instance, displays the task name,
40
+ # executes the provided block, and ensures timing is reported
41
+ # even if an exception occurs.
42
+ #
43
+ # @param task_name [String, Symbol] Name of the task to track
44
+ # @yield [TaskInfo] The task info instance for use within the block
45
+ # @return [Object] Result of the yielded block
46
+ #
47
+ # @example
48
+ # Makit::TaskInfo.track(:generate) do
49
+ # # generate code
50
+ # end
51
+ def self.track(task_name)
52
+ task = new(task_name)
53
+ Makit::Logging.default_logger.task_start(task_name)
54
+ #Makit::SHOW.task(task_name)
55
+ yield(task)
56
+ ensure
57
+ task&.report_and_store_time_taken
58
+ end
59
+
60
+ # Track execution time with inferred task name
61
+ #
62
+ # Similar to track() but attempts to infer the task name automatically.
63
+ # Currently returns nil as task name inference is not implemented.
64
+ #
65
+ # @yield [TaskInfo] The task info instance for use within the block
66
+ # @return [Object] Result of the yielded block
67
+ def self.track_inferred(&block)
68
+ task_name = infer_task_name
69
+ Makit::Logging.default_logger.task_start(task_name)
70
+ #Makit::SHOW.task(task_name)
71
+ track(task_name, &block)
72
+ end
73
+
74
+ # Initialize a new task tracking instance
75
+ #
76
+ # Sets up timing tracking for a named task, creates an artifacts
77
+ # directory path, and records the start time.
78
+ #
79
+ # @param task_name [String, Symbol] Name of the task to track
80
+ def initialize(task_name)
81
+ @task_name = task_name
82
+ @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
83
+ @start_time = Time.now
84
+ # at_exit { report_and_store_time_taken }
85
+ end
86
+
87
+ # Report and store the task execution time
88
+ #
89
+ # Calculates the duration, displays a human-readable completion message,
90
+ # and stores the timing information in the class-level completed_tasks hash.
91
+ #
92
+ # @return [nil]
93
+ def report_and_store_time_taken
94
+ @end_time = Time.now
95
+ duration = @end_time - @start_time
96
+
97
+ # leverate the Makit::Humanize.get_humanized_duration method
98
+ humanized_duration = Makit::Humanize.get_humanized_duration(duration)
99
+ puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
100
+ # puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
101
+
102
+ # Add to class-level storage
103
+ self.class.completed_tasks[@task_name] = {
104
+ start_time: @start_time,
105
+ end_time: @end_time,
106
+ duration: duration,
107
+ }
108
+ end
109
+
110
+ # def format_duration(seconds)
111
+ # if seconds >= 60
112
+ # mins = (seconds / 60).to_i
113
+ # secs = (seconds % 60).round(2)
114
+ # "#{mins}m #{secs}s"
115
+ # else
116
+ # "#{seconds.round(2)}s"
117
+ # end
118
+ # end
119
+
120
+ # Attempt to infer the current task name
121
+ #
122
+ # This method would extract the current Rake task name from the
123
+ # application context, but is currently not implemented.
124
+ #
125
+ # @return [String, nil] The inferred task name, or nil if unavailable
126
+ def self.infer_task_name
127
+ # Rake.application.current_scope.join(":") rescue "unknown"
128
+ end
129
+ end
130
+ end
@@ -1,15 +1,15 @@
1
- # frozen_string_literal: true
2
-
3
- require "English"
4
-
5
- at_exit do
6
- command = "rake #{ARGV.join(" ")}"
7
- duration = Time.now - Makit::STARTTIME
8
- message = "#{command} (#{Makit::Humanize.get_humanized_duration(duration)})"
9
- # detect if the rake execution was successful
10
- if $ERROR_INFO.nil?
11
- Makit::Logging.default_logger.info(message)
12
- else
13
- Makit::Logging.default_logger.error(message)
14
- end
15
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "English"
4
+
5
+ at_exit do
6
+ command = "rake #{ARGV.join(" ")}"
7
+ duration = Time.now - Makit::STARTTIME
8
+ message = "#{command} (#{Makit::Humanize.get_humanized_duration(duration)})"
9
+ # detect if the rake execution was successful
10
+ if $ERROR_INFO.nil?
11
+ Makit::Logging.default_logger.info(message)
12
+ else
13
+ Makit::Logging.default_logger.error(message)
14
+ end
15
+ 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 "Build project artifacts.."
7
- task :build do
8
- Makit::Logging.default_logger.task_start("build")
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
- build_step = project.steps.find { |step| step.name == "build" }
15
- build_step&.commands&.each do |command|
16
- request = Makit::Commands::Request.from_string(command).exit_on_failure(true).show_stderr(true)
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 "Build project artifacts.."
7
+ task :build do
8
+ Makit::Logging.default_logger.task_start("build")
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
+ build_step = project.steps.find { |step| step.name == "build" }
15
+ build_step&.commands&.each do |command|
16
+ request = Makit::Commands::Request.from_string(command).exit_on_failure(true).show_stderr(true)
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,13 +1,13 @@
1
- # frozen_string_literal: true
2
-
3
- require "rake/clean"
4
- require_relative "../git/repository"
5
- require_relative "../commands/runner"
6
-
7
- CLEAN.include("artifacts/**/*")
8
-
9
- task :clean do
10
- if Makit::Git::Repository.git_repo?
11
- Makit::Commands::Runner.default.execute(Makit::Commands::Request.from_string("git clean -dXf"))
12
- end
13
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "rake/clean"
4
+ require_relative "../git/repository"
5
+ require_relative "../commands/runner"
6
+
7
+ CLEAN.include("artifacts/**/*")
8
+
9
+ task :clean do
10
+ if Makit::Git::Repository.git_repo?
11
+ Makit::Commands::Runner.default.execute(Makit::Commands::Request.from_string("git clean -dXf"))
12
+ end
13
+ end
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: true
2
-
3
- desc "Configure the project"
4
- task :configure do
5
- project = Makit::Configuration::Project.default
6
- if defined?(GIT_REMOTE_URL)
7
- project.git_remote_url = GIT_REMOTE_URL
8
- project.save
9
- end
10
- end
1
+ # frozen_string_literal: true
2
+
3
+ desc "Configure the project"
4
+ task :configure do
5
+ project = Makit::Configuration::Project.default
6
+ if defined?(GIT_REMOTE_URL)
7
+ project.git_remote_url = GIT_REMOTE_URL
8
+ project.save
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: true
2
-
3
- desc "Format project files"
4
- task :format do
5
- "rufo .".try if File.exist?("Gemfile") || File.exist?("Rakefile")
6
-
7
- Dir.glob("**/*.csproj").each do |file|
8
- "dotnet format #{file}".run
9
- end
10
- end
1
+ # frozen_string_literal: true
2
+
3
+ desc "Format project files"
4
+ task :format do
5
+ "rufo .".try if File.exist?("Gemfile") || File.exist?("Rakefile")
6
+
7
+ Dir.glob("**/*.csproj").each do |file|
8
+ "dotnet format #{file}".run
9
+ end
10
+ end