makit 0.0.138 → 0.0.140

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 (151) 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 -67
  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 +51 -0
  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 +385 -385
  37. data/lib/makit/commands/strategies/base.rb +171 -171
  38. data/lib/makit/commands/strategies/child_process.rb +1 -1
  39. data/lib/makit/commands/strategies/synchronous.rb +139 -139
  40. data/lib/makit/commands.rb +50 -50
  41. data/lib/makit/configuration/dotnet_project.rb +12 -12
  42. data/lib/makit/configuration/gitlab_helper.rb +58 -58
  43. data/lib/makit/configuration/project.rb +168 -168
  44. data/lib/makit/configuration/rakefile_helper.rb +43 -43
  45. data/lib/makit/configuration/step.rb +34 -34
  46. data/lib/makit/configuration/timeout.rb +74 -0
  47. data/lib/makit/configuration.rb +15 -14
  48. data/lib/makit/content/default_gitignore.rb +7 -7
  49. data/lib/makit/content/default_gitignore.txt +225 -225
  50. data/lib/makit/content/default_rakefile.rb +13 -13
  51. data/lib/makit/content/gem_rakefile.rb +16 -16
  52. data/lib/makit/context.rb +1 -1
  53. data/lib/makit/data.rb +49 -49
  54. data/lib/makit/directories.rb +140 -140
  55. data/lib/makit/directory.rb +262 -262
  56. data/lib/makit/docs/files.rb +89 -89
  57. data/lib/makit/docs/rake.rb +102 -102
  58. data/lib/makit/dotnet/cli.rb +69 -69
  59. data/lib/makit/dotnet/project.rb +217 -217
  60. data/lib/makit/dotnet/solution.rb +38 -38
  61. data/lib/makit/dotnet/solution_classlib.rb +239 -239
  62. data/lib/makit/dotnet/solution_console.rb +264 -264
  63. data/lib/makit/dotnet/solution_maui.rb +354 -354
  64. data/lib/makit/dotnet/solution_wasm.rb +275 -275
  65. data/lib/makit/dotnet/solution_wpf.rb +304 -304
  66. data/lib/makit/dotnet.rb +102 -102
  67. data/lib/makit/email.rb +90 -90
  68. data/lib/makit/environment.rb +142 -142
  69. data/lib/makit/examples/runner.rb +370 -370
  70. data/lib/makit/exceptions.rb +45 -45
  71. data/lib/makit/fileinfo.rb +24 -24
  72. data/lib/makit/files.rb +43 -43
  73. data/lib/makit/gems.rb +40 -40
  74. data/lib/makit/git/cli.rb +54 -54
  75. data/lib/makit/git/repository.rb +90 -90
  76. data/lib/makit/git.rb +98 -98
  77. data/lib/makit/gitlab_runner.rb +59 -59
  78. data/lib/makit/humanize.rb +137 -137
  79. data/lib/makit/indexer.rb +47 -47
  80. data/lib/makit/logging/configuration.rb +308 -308
  81. data/lib/makit/logging/format_registry.rb +84 -84
  82. data/lib/makit/logging/formatters/base.rb +39 -39
  83. data/lib/makit/logging/formatters/console_formatter.rb +140 -140
  84. data/lib/makit/logging/formatters/json_formatter.rb +65 -65
  85. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
  86. data/lib/makit/logging/formatters/text_formatter.rb +64 -64
  87. data/lib/makit/logging/log_request.rb +119 -119
  88. data/lib/makit/logging/logger.rb +199 -199
  89. data/lib/makit/logging/sinks/base.rb +91 -91
  90. data/lib/makit/logging/sinks/console.rb +72 -72
  91. data/lib/makit/logging/sinks/file_sink.rb +92 -92
  92. data/lib/makit/logging/sinks/structured.rb +123 -123
  93. data/lib/makit/logging/sinks/unified_file_sink.rb +296 -296
  94. data/lib/makit/logging.rb +565 -565
  95. data/lib/makit/markdown.rb +75 -75
  96. data/lib/makit/mp/basic_object_mp.rb +17 -17
  97. data/lib/makit/mp/command_mp.rb +13 -13
  98. data/lib/makit/mp/command_request.mp.rb +17 -17
  99. data/lib/makit/mp/project_mp.rb +199 -199
  100. data/lib/makit/mp/string_mp.rb +191 -191
  101. data/lib/makit/nuget.rb +74 -74
  102. data/lib/makit/port.rb +32 -32
  103. data/lib/makit/process.rb +163 -163
  104. data/lib/makit/protoc.rb +107 -107
  105. data/lib/makit/rake/cli.rb +196 -196
  106. data/lib/makit/rake.rb +80 -80
  107. data/lib/makit/ruby/cli.rb +185 -185
  108. data/lib/makit/ruby.rb +25 -25
  109. data/lib/makit/secrets.rb +51 -51
  110. data/lib/makit/serializer.rb +130 -130
  111. data/lib/makit/services/builder.rb +186 -186
  112. data/lib/makit/services/error_handler.rb +226 -226
  113. data/lib/makit/services/repository_manager.rb +231 -231
  114. data/lib/makit/services/validator.rb +112 -112
  115. data/lib/makit/setup/classlib.rb +101 -101
  116. data/lib/makit/setup/gem.rb +268 -268
  117. data/lib/makit/setup/razorclasslib.rb +101 -101
  118. data/lib/makit/setup/runner.rb +54 -54
  119. data/lib/makit/setup.rb +5 -5
  120. data/lib/makit/show.rb +110 -110
  121. data/lib/makit/storage.rb +126 -126
  122. data/lib/makit/symbols.rb +170 -170
  123. data/lib/makit/task_info.rb +130 -130
  124. data/lib/makit/tasks/at_exit.rb +15 -15
  125. data/lib/makit/tasks/build.rb +22 -22
  126. data/lib/makit/tasks/clean.rb +13 -13
  127. data/lib/makit/tasks/configure.rb +10 -10
  128. data/lib/makit/tasks/format.rb +10 -10
  129. data/lib/makit/tasks/hook_manager.rb +443 -443
  130. data/lib/makit/tasks/init.rb +49 -49
  131. data/lib/makit/tasks/integrate.rb +29 -29
  132. data/lib/makit/tasks/pull_incoming.rb +13 -13
  133. data/lib/makit/tasks/setup.rb +13 -13
  134. data/lib/makit/tasks/sync.rb +17 -17
  135. data/lib/makit/tasks/tag.rb +16 -16
  136. data/lib/makit/tasks/task_monkey_patch.rb +81 -81
  137. data/lib/makit/tasks/test.rb +22 -22
  138. data/lib/makit/tasks/update.rb +18 -18
  139. data/lib/makit/tasks.rb +20 -20
  140. data/lib/makit/test_cache.rb +239 -239
  141. data/lib/makit/tree.rb +37 -37
  142. data/lib/makit/v1/makit.v1_pb.rb +35 -35
  143. data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
  144. data/lib/makit/version.rb +99 -99
  145. data/lib/makit/version_util.rb +21 -21
  146. data/lib/makit/wix.rb +95 -95
  147. data/lib/makit/yaml.rb +29 -29
  148. data/lib/makit/zip.rb +17 -17
  149. data/lib/makit copy.rb +44 -44
  150. data/lib/makit.rb +42 -42
  151. metadata +3 -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