makit 0.0.99 → 0.0.112

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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -0
  3. data/exe/makit +5 -0
  4. data/lib/makit/apache.rb +28 -32
  5. data/lib/makit/cli/build_commands.rb +500 -0
  6. data/lib/makit/cli/generators/base_generator.rb +74 -0
  7. data/lib/makit/cli/generators/dotnet_generator.rb +50 -0
  8. data/lib/makit/cli/generators/generator_factory.rb +49 -0
  9. data/lib/makit/cli/generators/node_generator.rb +50 -0
  10. data/lib/makit/cli/generators/ruby_generator.rb +77 -0
  11. data/lib/makit/cli/generators/rust_generator.rb +50 -0
  12. data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -0
  13. data/lib/makit/cli/generators/templates/node_templates.rb +161 -0
  14. data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -0
  15. data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -0
  16. data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -0
  17. data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -0
  18. data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -0
  19. data/lib/makit/cli/generators/templates/ruby/test.rb +39 -0
  20. data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -0
  21. data/lib/makit/cli/generators/templates/ruby/version.rb +29 -0
  22. data/lib/makit/cli/generators/templates/rust_templates.rb +128 -0
  23. data/lib/makit/cli/main.rb +62 -33
  24. data/lib/makit/cli/project_commands.rb +868 -0
  25. data/lib/makit/cli/repository_commands.rb +661 -0
  26. data/lib/makit/cli/utility_commands.rb +521 -0
  27. data/lib/makit/commands/factory.rb +359 -0
  28. data/lib/makit/commands/middleware/base.rb +73 -0
  29. data/lib/makit/commands/middleware/cache.rb +248 -0
  30. data/lib/makit/commands/middleware/command_logger.rb +320 -0
  31. data/lib/makit/commands/middleware/unified_logger.rb +243 -0
  32. data/lib/makit/commands/middleware/validator.rb +269 -0
  33. data/lib/makit/commands/request.rb +254 -0
  34. data/lib/makit/commands/result.rb +323 -0
  35. data/lib/makit/commands/runner.rb +337 -0
  36. data/lib/makit/commands/strategies/base.rb +160 -0
  37. data/lib/makit/commands/strategies/synchronous.rb +134 -0
  38. data/lib/makit/commands.rb +51 -21
  39. data/lib/makit/configuration/gitlab_helper.rb +60 -0
  40. data/lib/makit/configuration/project.rb +127 -0
  41. data/lib/makit/configuration/rakefile_helper.rb +43 -0
  42. data/lib/makit/configuration/step.rb +34 -0
  43. data/lib/makit/configuration.rb +14 -0
  44. data/lib/makit/content/default_gitignore.rb +7 -5
  45. data/lib/makit/content/default_rakefile.rb +13 -11
  46. data/lib/makit/content/gem_rakefile.rb +16 -14
  47. data/lib/makit/context.rb +1 -0
  48. data/lib/makit/data.rb +49 -50
  49. data/lib/makit/directories.rb +141 -145
  50. data/lib/makit/directory.rb +262 -276
  51. data/lib/makit/docs/files.rb +89 -94
  52. data/lib/makit/docs/rake.rb +102 -106
  53. data/lib/makit/dotnet/cli.rb +65 -0
  54. data/lib/makit/dotnet/project.rb +153 -0
  55. data/lib/makit/dotnet/solution.rb +38 -0
  56. data/lib/makit/dotnet/solution_classlib.rb +239 -0
  57. data/lib/makit/dotnet/solution_console.rb +264 -0
  58. data/lib/makit/dotnet/solution_maui.rb +354 -0
  59. data/lib/makit/dotnet/solution_wasm.rb +275 -0
  60. data/lib/makit/dotnet/solution_wpf.rb +304 -0
  61. data/lib/makit/dotnet.rb +102 -219
  62. data/lib/makit/email.rb +90 -61
  63. data/lib/makit/environment.rb +142 -139
  64. data/lib/makit/examples/runner.rb +370 -0
  65. data/lib/makit/exceptions.rb +45 -0
  66. data/lib/makit/fileinfo.rb +24 -26
  67. data/lib/makit/files.rb +43 -47
  68. data/lib/makit/gems.rb +29 -28
  69. data/lib/makit/git/cli.rb +54 -0
  70. data/lib/makit/git/repository.rb +90 -0
  71. data/lib/makit/git.rb +98 -145
  72. data/lib/makit/gitlab_runner.rb +59 -60
  73. data/lib/makit/humanize.rb +137 -129
  74. data/lib/makit/indexer.rb +47 -56
  75. data/lib/makit/logging/configuration.rb +305 -0
  76. data/lib/makit/logging/format_registry.rb +84 -0
  77. data/lib/makit/logging/formatters/base.rb +39 -0
  78. data/lib/makit/logging/formatters/console_formatter.rb +140 -0
  79. data/lib/makit/logging/formatters/json_formatter.rb +65 -0
  80. data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -0
  81. data/lib/makit/logging/formatters/text_formatter.rb +64 -0
  82. data/lib/makit/logging/log_request.rb +115 -0
  83. data/lib/makit/logging/logger.rb +163 -0
  84. data/lib/makit/logging/sinks/base.rb +91 -0
  85. data/lib/makit/logging/sinks/console.rb +72 -0
  86. data/lib/makit/logging/sinks/file_sink.rb +92 -0
  87. data/lib/makit/logging/sinks/structured.rb +129 -0
  88. data/lib/makit/logging/sinks/unified_file_sink.rb +303 -0
  89. data/lib/makit/logging.rb +530 -106
  90. data/lib/makit/markdown.rb +75 -75
  91. data/lib/makit/mp/basic_object_mp.rb +17 -16
  92. data/lib/makit/mp/command_mp.rb +13 -13
  93. data/lib/makit/mp/command_request.mp.rb +17 -16
  94. data/lib/makit/mp/project_mp.rb +199 -210
  95. data/lib/makit/mp/string_mp.rb +193 -176
  96. data/lib/makit/nuget.rb +74 -72
  97. data/lib/makit/port.rb +32 -34
  98. data/lib/makit/process.rb +163 -65
  99. data/lib/makit/protoc.rb +107 -104
  100. data/lib/makit/rake/cli.rb +196 -0
  101. data/lib/makit/rake.rb +25 -25
  102. data/lib/makit/ruby/cli.rb +185 -0
  103. data/lib/makit/ruby.rb +25 -0
  104. data/lib/makit/secrets.rb +51 -51
  105. data/lib/makit/serializer.rb +130 -115
  106. data/lib/makit/services/builder.rb +186 -0
  107. data/lib/makit/services/error_handler.rb +226 -0
  108. data/lib/makit/services/repository_manager.rb +229 -0
  109. data/lib/makit/services/validator.rb +112 -0
  110. data/lib/makit/setup/classlib.rb +53 -0
  111. data/lib/makit/setup/gem.rb +263 -0
  112. data/lib/makit/setup/runner.rb +45 -0
  113. data/lib/makit/setup.rb +5 -0
  114. data/lib/makit/show.rb +110 -110
  115. data/lib/makit/storage.rb +126 -131
  116. data/lib/makit/symbols.rb +170 -149
  117. data/lib/makit/task_info.rb +128 -86
  118. data/lib/makit/tasks/at_exit.rb +13 -0
  119. data/lib/makit/tasks/build.rb +19 -0
  120. data/lib/makit/tasks/clean.rb +11 -0
  121. data/lib/makit/tasks/hook_manager.rb +393 -0
  122. data/lib/makit/tasks/init.rb +47 -0
  123. data/lib/makit/tasks/integrate.rb +17 -0
  124. data/lib/makit/tasks/pull_incoming.rb +11 -0
  125. data/lib/makit/tasks/setup.rb +6 -0
  126. data/lib/makit/tasks/sync.rb +12 -0
  127. data/lib/makit/tasks/tag.rb +15 -0
  128. data/lib/makit/tasks/task_monkey_patch.rb +79 -0
  129. data/lib/makit/tasks.rb +15 -150
  130. data/lib/makit/test_cache.rb +239 -0
  131. data/lib/makit/tree.rb +37 -37
  132. data/lib/makit/v1/makit.v1_pb.rb +3 -4
  133. data/lib/makit/v1/makit.v1_services_pb.rb +27 -25
  134. data/lib/makit/version.rb +5 -61
  135. data/lib/makit/version_util.rb +21 -0
  136. data/lib/makit/wix.rb +95 -95
  137. data/lib/makit/yaml.rb +29 -17
  138. data/lib/makit/zip.rb +17 -17
  139. data/lib/makit copy.rb +44 -0
  140. data/lib/makit.rb +40 -267
  141. metadata +117 -110
  142. data/lib/makit/cli/clean.rb +0 -14
  143. data/lib/makit/cli/clone.rb +0 -59
  144. data/lib/makit/cli/init.rb +0 -38
  145. data/lib/makit/cli/make.rb +0 -54
  146. data/lib/makit/cli/new.rb +0 -37
  147. data/lib/makit/cli/nuget_cache.rb +0 -38
  148. data/lib/makit/cli/pull.rb +0 -31
  149. data/lib/makit/cli/setup.rb +0 -71
  150. data/lib/makit/cli/work.rb +0 -21
  151. data/lib/makit/command_runner.rb +0 -404
  152. data/lib/makit/content/default_gitignore.txt +0 -222
data/lib/makit/symbols.rb CHANGED
@@ -1,149 +1,170 @@
1
- # frozen_string_literal: true
2
-
3
- require "rainbow"
4
-
5
- # https://symbl.cc/en/unicode/table/
6
- module Makit
7
- class Symbols
8
- def self.checkmark
9
- "\u2713"
10
- end
11
-
12
- def self.success
13
- "\u2713"
14
- end
15
-
16
- def self.error
17
- Rainbow("\u0058").red
18
- end
19
-
20
- def self.warning
21
- Rainbow("\u26A0").yellow
22
- end
23
-
24
- def self.debug
25
- Rainbow("\u24D8").blue # Circle with "i"
26
- end
27
-
28
- def self.info
29
- Rainbow("\u2139").blue # Information source
30
- end
31
-
32
- def self.fatal
33
- Rainbow("\u25A0").bright.red # Filled square, indicating stop/critical
34
- end
35
-
36
- def self.warn
37
- Rainbow("\u26A0").yellow # Warning sign
38
- end
39
-
40
- def self.star
41
- Rainbow("\u2605").yellow # Star
42
- end
43
-
44
- def self.coffee
45
- Rainbow("\u2615").yellow # Hot beverage
46
- end
47
-
48
- def self.heart
49
- Rainbow("\u2764").red # Heavy black heart
50
- end
51
-
52
- def self.bug
53
- Rainbow("\u1F41E").yellow # Bug
54
- end
55
-
56
- def self.gear
57
- Rainbow("\u2699").yellow # Gear
58
- end
59
-
60
- def self.magnifying_glass
61
- Rainbow("\u1F50D").yellow # Left-pointing magnifying glass
62
- end
63
-
64
- def self.question
65
- Rainbow("\u003F").yellow # Question mark
66
- end
67
-
68
- def self.arrow_right
69
- Rainbow("\u27A4").yellow # Arrow pointing rightwards then curving upwards
70
- end
71
-
72
- def self.arrow_left
73
- Rainbow("\u2B05").yellow # Left arrow
74
- end
75
-
76
- def self.arrow_up
77
- Rainbow("\u2B06").yellow # Up arrow
78
- end
79
-
80
- def self.arrow_down
81
- Rainbow("\u2B07").yellow # Down arrow
82
- end
83
-
84
- def self.arrow_up_down
85
- Rainbow("\u2195").yellow # Up/down arrow
86
- end
87
-
88
- def self.arrow_left_right
89
- Rainbow("\u2194").yellow # Left/right arrow
90
- end
91
-
92
- def self.arrow_upper_right
93
- Rainbow("\u2197").yellow # North east arrow
94
- end
95
-
96
- def self.arrow_lower_right
97
- Rainbow("\u2198").yellow # South east arrow
98
- end
99
-
100
- def self.arrow_lower_left
101
- Rainbow("\u2199").yellow # South west arrow
102
- end
103
-
104
- def self.arrow_upper_left
105
- Rainbow("\u2196").yellow # North west arrow
106
- end
107
-
108
- def self.arrow_up_small
109
- Rainbow("\u2B06").yellow # Up arrow
110
- end
111
-
112
- def self.arrow_down_small
113
- Rainbow("\u2B07").yellow # Down arrow
114
- end
115
-
116
- def self.arrow_right_small
117
- Rainbow("\u27A1").yellow # Black rightwards arrow
118
- end
119
-
120
- def self.arrow_left_small
121
- Rainbow("\u2B05").yellow # Left arrow
122
- end
123
-
124
- def self.arrow_up_down_small
125
- Rainbow("\u2195").yellow # Up/down arrow
126
- end
127
-
128
- def self.music
129
- Rainbow("\u266B").yellow # Beamed eighth notes
130
- end
131
-
132
- def self.get_severity_symbol(severity)
133
- case severity
134
- when "DEBUG"
135
- question
136
- # when "INFO"
137
- # info
138
- when "WARN"
139
- warning
140
- when "ERROR"
141
- error
142
- when "FATAL"
143
- fatal
144
- else
145
- " "
146
- end
147
- end
148
- end
149
- end
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require "rainbow"
5
+ rescue LoadError
6
+ # rainbow gem not available, define a no-op rainbow method
7
+ class String
8
+ def rainbow
9
+ self
10
+ end
11
+ end
12
+ end
13
+
14
+ # https://symbl.cc/en/unicode/table/
15
+ module Makit
16
+ # Unicode symbol utilities with colorization
17
+ #
18
+ # This class provides a collection of Unicode symbols with appropriate
19
+ # colors for use in terminal output. Symbols are provided for various
20
+ # purposes including status indicators, directional arrows, and decorative elements.
21
+ class Symbols
22
+ def self.checkmark
23
+ "\u2713"
24
+ end
25
+
26
+ def self.success
27
+ "\u2713"
28
+ end
29
+
30
+ def self.error
31
+ Rainbow("\u0058").red
32
+ end
33
+
34
+ def self.warning
35
+ Rainbow("\u26A0").yellow
36
+ end
37
+
38
+ def self.debug
39
+ Rainbow("\u24D8").blue # Circle with "i"
40
+ end
41
+
42
+ def self.info
43
+ Rainbow("\u2139").blue # Information source
44
+ end
45
+
46
+ def self.fatal
47
+ Rainbow("\u25A0").bright.red # Filled square, indicating stop/critical
48
+ end
49
+
50
+ def self.warn
51
+ Rainbow("\u26A0").yellow # Warning sign
52
+ end
53
+
54
+ def self.star
55
+ Rainbow("\u2605").yellow # Star
56
+ end
57
+
58
+ def self.coffee
59
+ Rainbow("\u2615").yellow # Hot beverage
60
+ end
61
+
62
+ def self.heart
63
+ Rainbow("\u2764").red # Heavy black heart
64
+ end
65
+
66
+ def self.bug
67
+ Rainbow("\u1F41E").yellow # Bug
68
+ end
69
+
70
+ def self.gear
71
+ Rainbow("\u2699").yellow # Gear
72
+ end
73
+
74
+ def self.magnifying_glass
75
+ Rainbow("\u1F50D").yellow # Left-pointing magnifying glass
76
+ end
77
+
78
+ def self.question
79
+ Rainbow("\u003F").yellow # Question mark
80
+ end
81
+
82
+ def self.arrow_right
83
+ Rainbow("\u27A4").yellow # Arrow pointing rightwards then curving upwards
84
+ end
85
+
86
+ def self.arrow_left
87
+ Rainbow("\u2B05").yellow # Left arrow
88
+ end
89
+
90
+ def self.arrow_up
91
+ Rainbow("\u2B06").yellow # Up arrow
92
+ end
93
+
94
+ def self.arrow_down
95
+ Rainbow("\u2B07").yellow # Down arrow
96
+ end
97
+
98
+ def self.arrow_up_down
99
+ Rainbow("\u2195").yellow # Up/down arrow
100
+ end
101
+
102
+ def self.arrow_left_right
103
+ Rainbow("\u2194").yellow # Left/right arrow
104
+ end
105
+
106
+ def self.arrow_upper_right
107
+ Rainbow("\u2197").yellow # North east arrow
108
+ end
109
+
110
+ def self.arrow_lower_right
111
+ Rainbow("\u2198").yellow # South east arrow
112
+ end
113
+
114
+ def self.arrow_lower_left
115
+ Rainbow("\u2199").yellow # South west arrow
116
+ end
117
+
118
+ def self.arrow_upper_left
119
+ Rainbow("\u2196").yellow # North west arrow
120
+ end
121
+
122
+ def self.arrow_up_small
123
+ Rainbow("\u2B06").yellow # Up arrow
124
+ end
125
+
126
+ def self.arrow_down_small
127
+ Rainbow("\u2B07").yellow # Down arrow
128
+ end
129
+
130
+ def self.arrow_right_small
131
+ Rainbow("\u27A1").yellow # Black rightwards arrow
132
+ end
133
+
134
+ def self.arrow_left_small
135
+ Rainbow("\u2B05").yellow # Left arrow
136
+ end
137
+
138
+ def self.arrow_up_down_small
139
+ Rainbow("\u2195").yellow # Up/down arrow
140
+ end
141
+
142
+ def self.music
143
+ Rainbow("\u266B").yellow # Beamed eighth notes
144
+ end
145
+
146
+ # Get appropriate symbol for log severity level
147
+ #
148
+ # Returns a colored Unicode symbol that matches the given log severity level.
149
+ # Used primarily in log formatting to provide visual indicators.
150
+ #
151
+ # @param severity [String] The severity level (DEBUG, WARN, ERROR, FATAL)
152
+ # @return [String] Colored Unicode symbol or space for unrecognized levels
153
+ def self.get_severity_symbol(severity)
154
+ case severity
155
+ when "DEBUG"
156
+ question
157
+ # when "INFO"
158
+ # info
159
+ when "WARN"
160
+ warning
161
+ when "ERROR"
162
+ error
163
+ when "FATAL"
164
+ fatal
165
+ else
166
+ " "
167
+ end
168
+ end
169
+ end
170
+ end
@@ -1,86 +1,128 @@
1
- # lib/task_guard.rb
2
- module Makit
3
- class TaskInfo
4
-
5
- #
6
- # completed_tasks is a class variable that is used to store the completed tasks
7
- #
8
- class << self
9
- attr_accessor :completed_tasks
10
- end
11
- @completed_tasks = {}
12
-
13
- attr_reader :task_name, :start_time, :end_time, :artifacts_dir
14
-
15
- def self.slowest_task_name
16
- if @completed_tasks.empty?
17
- return "unknown"
18
- end
19
- @completed_tasks.max_by { |task_name, task_info| task_info[:duration] }[0]
20
- end
21
-
22
- #
23
- # block-yielding initializer
24
- #
25
- # usage:
26
- #
27
- # Makit::TaskInfo.track(:generate) do
28
- # # generate code
29
- # end
30
- #
31
- def self.track(task_name)
32
- task = new(task_name)
33
- Makit::SHOW.task(task_name)
34
- yield(task)
35
- ensure
36
- task.report_and_store_time_taken if task
37
- end
38
-
39
- #
40
- # Block-yielding initializer with inferred task name
41
- #
42
- def self.track_inferred
43
- task_name = infer_task_name
44
- Makit::SHOW.task(task_name)
45
- track(task_name) { |task| yield(task) }
46
- end
47
-
48
- def initialize(task_name)
49
- @task_name = task_name
50
- @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
51
- @start_time = Time.now
52
- #at_exit { report_and_store_time_taken }
53
- end
54
-
55
- def report_and_store_time_taken
56
- @end_time = Time.now
57
- duration = @end_time - @start_time
58
-
59
- # leverate the Makit::Humanize.get_humanized_duration method
60
- humanized_duration = Makit::Humanize.get_humanized_duration(duration)
61
- puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
62
- #puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
63
-
64
- # Add to class-level storage
65
- self.class.completed_tasks[@task_name] = {
66
- start_time: @start_time,
67
- end_time: @end_time,
68
- duration: duration,
69
- }
70
- end
71
-
72
- #def format_duration(seconds)
73
- # if seconds >= 60
74
- # mins = (seconds / 60).to_i
75
- # secs = (seconds % 60).round(2)
76
- # "#{mins}m #{secs}s"
77
- # else
78
- # "#{seconds.round(2)}s"
79
- # end
80
- # end
81
-
82
- def self.infer_task_name
83
- #Rake.application.current_scope.join(":") rescue "unknown"
84
- end
85
- end
86
- 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::SHOW.task(task_name)
54
+ yield(task)
55
+ ensure
56
+ task&.report_and_store_time_taken
57
+ end
58
+
59
+ # Track execution time with inferred task name
60
+ #
61
+ # Similar to track() but attempts to infer the task name automatically.
62
+ # Currently returns nil as task name inference is not implemented.
63
+ #
64
+ # @yield [TaskInfo] The task info instance for use within the block
65
+ # @return [Object] Result of the yielded block
66
+ def self.track_inferred(&block)
67
+ task_name = infer_task_name
68
+ Makit::SHOW.task(task_name)
69
+ track(task_name, &block)
70
+ end
71
+
72
+ # Initialize a new task tracking instance
73
+ #
74
+ # Sets up timing tracking for a named task, creates an artifacts
75
+ # directory path, and records the start time.
76
+ #
77
+ # @param task_name [String, Symbol] Name of the task to track
78
+ def initialize(task_name)
79
+ @task_name = task_name
80
+ @artifacts_dir = File.join("artifacts", task_name.to_s.gsub(":", "_"))
81
+ @start_time = Time.now
82
+ # at_exit { report_and_store_time_taken }
83
+ end
84
+
85
+ # Report and store the task execution time
86
+ #
87
+ # Calculates the duration, displays a human-readable completion message,
88
+ # and stores the timing information in the class-level completed_tasks hash.
89
+ #
90
+ # @return [nil]
91
+ def report_and_store_time_taken
92
+ @end_time = Time.now
93
+ duration = @end_time - @start_time
94
+
95
+ # leverate the Makit::Humanize.get_humanized_duration method
96
+ humanized_duration = Makit::Humanize.get_humanized_duration(duration)
97
+ puts " #{@task_name} completed in #{humanized_duration}".colorize(:grey)
98
+ # puts "[TaskGuard] Task '#{@task_name}' completed in #{duration}."
99
+
100
+ # Add to class-level storage
101
+ self.class.completed_tasks[@task_name] = {
102
+ start_time: @start_time,
103
+ end_time: @end_time,
104
+ duration: duration,
105
+ }
106
+ end
107
+
108
+ # def format_duration(seconds)
109
+ # if seconds >= 60
110
+ # mins = (seconds / 60).to_i
111
+ # secs = (seconds % 60).round(2)
112
+ # "#{mins}m #{secs}s"
113
+ # else
114
+ # "#{seconds.round(2)}s"
115
+ # end
116
+ # end
117
+
118
+ # Attempt to infer the current task name
119
+ #
120
+ # This method would extract the current Rake task name from the
121
+ # application context, but is currently not implemented.
122
+ #
123
+ # @return [String, nil] The inferred task name, or nil if unavailable
124
+ def self.infer_task_name
125
+ # Rake.application.current_scope.join(":") rescue "unknown"
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,13 @@
1
+ require "English"
2
+
3
+ at_exit do
4
+ command = "rake #{ARGV.join(" ")}"
5
+ duration = Time.now - Makit::STARTTIME
6
+ message = "#{command} (#{Makit::Humanize.get_humanized_duration(duration)})"
7
+ # detect if the rake execution was successful
8
+ if $ERROR_INFO.nil?
9
+ Makit::Logging.default_logger.info(message)
10
+ else
11
+ Makit::Logging.default_logger.error(message)
12
+ end # display the humanized duration of the rake execution
13
+ end
@@ -0,0 +1,19 @@
1
+ require_relative "../setup/runner"
2
+
3
+ desc "Build project artifacts.."
4
+ task :build do
5
+ # load the default project configuration
6
+ #puts "loading project configuration"
7
+ #project = Makit::Configuration::Project.default
8
+
9
+ # for each step in the project configuration, run the commands
10
+ #project.steps.each do |step|
11
+ # step.commands.each do |command|
12
+ # request = Makit::Commands::Request.from_string(command)
13
+ # result = Makit::Commands::Runner.default.execute(request)
14
+ # end
15
+ #end
16
+
17
+ # Make sure the build commands are in the project configuration
18
+
19
+ end
@@ -0,0 +1,11 @@
1
+ require "rake/clean"
2
+ require_relative "../git/repository"
3
+ require_relative "../commands/runner"
4
+
5
+ CLEAN.include("artifacts/**/*")
6
+
7
+ task :clean do
8
+ if Makit::Git::Repository.git_repo?
9
+ Makit::Commands::Runner.default.execute(Makit::Commands::Request.from_string("git clean -dXf"))
10
+ end
11
+ end