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,12 +1,12 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
-
5
- module Makit
6
- module Configuration
7
- # Project configuration management
8
- class DotNetProject
9
- attr_accessor :name, :output_dir, :frameworks, :template
10
- end
11
- end
12
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module Makit
6
+ module Configuration
7
+ # Project configuration management
8
+ class DotNetProject
9
+ attr_accessor :name, :output_dir, :frameworks, :template
10
+ end
11
+ end
12
+ end
@@ -1,58 +1,58 @@
1
- # frozen_string_literal: true
2
-
3
- require "yaml"
4
-
5
- module Makit
6
- module Configuration
7
- # Helper for GitLab CI YAML conversion
8
- class GitLabHelper
9
- def self.to_yaml(project, path)
10
- yaml_content = generate_yaml(project)
11
- File.write(path, yaml_content)
12
- end
13
-
14
- def self.from_yaml(path)
15
- content = File.read(path)
16
- data = YAML.safe_load(content, symbolize_names: true, permitted_classes: [Symbol])
17
-
18
- project = Project.new(name: data[:name] || "Unknown", version: data[:version] || "1.0.0")
19
-
20
- # Extract steps from GitLab CI jobs
21
- data.each do |key, value|
22
- next unless value.is_a?(Hash) && value[:script]
23
-
24
- step_name = key.to_s.gsub(/_job$/, "")
25
- step = Step.new(
26
- name: step_name,
27
- description: value[:description] || "GitLab CI job: #{step_name}",
28
- commands: value[:script],
29
- )
30
- project.add_step(step)
31
- end
32
-
33
- project
34
- end
35
-
36
- def self.generate_yaml(project)
37
- yaml = {
38
- stages: project.steps.map(&:name),
39
- variables: {
40
- project_name: project.name,
41
- project_version: project.version,
42
- },
43
- }
44
-
45
- project.steps.each do |step|
46
- job_name = "#{step.name}_job"
47
- yaml[job_name.to_sym] = {
48
- stage: step.name,
49
- script: step.commands,
50
- description: step.description,
51
- }
52
- end
53
-
54
- yaml.to_yaml
55
- end
56
- end
57
- end
58
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+
5
+ module Makit
6
+ module Configuration
7
+ # Helper for GitLab CI YAML conversion
8
+ class GitLabHelper
9
+ def self.to_yaml(project, path)
10
+ yaml_content = generate_yaml(project)
11
+ File.write(path, yaml_content)
12
+ end
13
+
14
+ def self.from_yaml(path)
15
+ content = File.read(path)
16
+ data = YAML.safe_load(content, symbolize_names: true, permitted_classes: [Symbol])
17
+
18
+ project = Project.new(name: data[:name] || "Unknown", version: data[:version] || "1.0.0")
19
+
20
+ # Extract steps from GitLab CI jobs
21
+ data.each do |key, value|
22
+ next unless value.is_a?(Hash) && value[:script]
23
+
24
+ step_name = key.to_s.gsub(/_job$/, "")
25
+ step = Step.new(
26
+ name: step_name,
27
+ description: value[:description] || "GitLab CI job: #{step_name}",
28
+ commands: value[:script],
29
+ )
30
+ project.add_step(step)
31
+ end
32
+
33
+ project
34
+ end
35
+
36
+ def self.generate_yaml(project)
37
+ yaml = {
38
+ stages: project.steps.map(&:name),
39
+ variables: {
40
+ project_name: project.name,
41
+ project_version: project.version,
42
+ },
43
+ }
44
+
45
+ project.steps.each do |step|
46
+ job_name = "#{step.name}_job"
47
+ yaml[job_name.to_sym] = {
48
+ stage: step.name,
49
+ script: step.commands,
50
+ description: step.description,
51
+ }
52
+ end
53
+
54
+ yaml.to_yaml
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,168 +1,168 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
-
5
- module Makit
6
- module Configuration
7
- # Project configuration management
8
- class Project
9
- attr_accessor :git_remote_url, :name, :version, :project_type, :steps, :authors, :description, :license_expression
10
- attr_accessor :dotnet_projects
11
-
12
- def initialize(name, version = nil, project_type = nil)
13
- # Support both keyword arguments and positional arguments for compatibility
14
- if name.is_a?(Hash)
15
- # Keyword arguments: Project.new(name: "test", version: "1.0.0")
16
- @name = name[:name]
17
- @version = name[:version]
18
- @project_type = name[:project_type]
19
- else
20
- # Positional arguments: Project.new("test", "1.0.0", "nuget")
21
- @name = name
22
- @version = version
23
- @project_type = project_type
24
- end
25
- @authors = "authors"
26
- @description = "description"
27
- @license_expression = "MIT"
28
- @steps = []
29
- end
30
-
31
- def add_step(step)
32
- raise ArgumentError, "Step must be a Makit::Configuration::Step instance" unless step.is_a?(Step)
33
-
34
- @steps << step
35
- end
36
-
37
- def to_json(*args)
38
- {
39
- name: @name,
40
- version: @version,
41
- project_type: @project_type,
42
- authors: @authors,
43
- description: @description,
44
- license_expression: @license_expression,
45
- steps: @steps.map(&:to_h),
46
- }.to_json(*args)
47
- end
48
-
49
- def to_json_pretty
50
- JSON.pretty_generate({
51
- name: @name,
52
- version: @version,
53
- project_type: @project_type,
54
- authors: @authors,
55
- description: @description,
56
- license_expression: @license_expression,
57
- steps: @steps.map(&:to_h),
58
- })
59
- end
60
-
61
- def self.from_json(path)
62
- content = File.read(path)
63
- data = JSON.parse(content, symbolize_names: true)
64
-
65
- project = new(data[:name], data[:version], data[:project_type])
66
-
67
- # Set additional fields if they exist in the JSON
68
- project.authors = data[:authors] if data[:authors]
69
- project.description = data[:description] if data[:description]
70
- project.license_expression = data[:license_expression] if data[:license_expression]
71
-
72
- data[:steps].each do |step_data|
73
- step = Step.new(
74
- name: step_data[:name],
75
- description: step_data[:description],
76
- commands: step_data[:commands],
77
- )
78
- project.add_step(step)
79
- end
80
-
81
- project
82
- end
83
-
84
- # Class method for deserializing from JSON string (used by serializer)
85
- def self.decode_json(json_string)
86
- data = JSON.parse(json_string, symbolize_names: true)
87
-
88
- project = new(data[:name], data[:version], data[:project_type])
89
-
90
- # Set additional fields if they exist in the JSON
91
- project.authors = data[:authors] if data[:authors]
92
- project.description = data[:description] if data[:description]
93
- project.license_expression = data[:license_expression] if data[:license_expression]
94
-
95
- data[:steps].each do |step_data|
96
- step = Step.new(
97
- name: step_data[:name],
98
- description: step_data[:description],
99
- commands: step_data[:commands],
100
- )
101
- project.add_step(step)
102
- end
103
-
104
- project
105
- end
106
-
107
- def to_gitlab_ci(path)
108
- GitLabHelper.to_yaml(self, path)
109
- end
110
-
111
- def to_rakefile
112
- RakefileHelper.generate(self)
113
- end
114
-
115
- # Save the project to a specific path as pretty JSON
116
- def save_as(path)
117
- # Validate that the project has a non-empty name before saving
118
- if @name.nil? || @name.strip.empty?
119
- raise ArgumentError, "Project name cannot be empty. Please set a valid project name before saving."
120
- end
121
-
122
- File.write(path, to_json_pretty)
123
- end
124
-
125
- def save
126
- # Validate that the project has a non-empty name before saving
127
- if @name.nil? || @name.strip.empty?
128
- raise ArgumentError, "Project name cannot be empty. Please set a valid project name before saving."
129
- end
130
-
131
- save_as(".makit.json")
132
- end
133
-
134
- # Display the project configuration in YAML format
135
- def show
136
- require "yaml"
137
-
138
- project_data = {
139
- name: @name,
140
- version: @version,
141
- project_type: @project_type,
142
- git_remote_url: @git_remote_url,
143
- steps: @steps.map(&:to_h),
144
- }
145
-
146
- puts YAML.dump(project_data)
147
- end
148
-
149
- # Load a project from the default .makit.json file
150
- def self.default
151
- if File.exist?(".makit.json")
152
- from_json(".makit.json")
153
- else
154
- # Makit::Logging.default_logger.warn("Project not configured")
155
- # #if defined?(NAME) && defined?(VERSION) && defined?(PROJECT_TYPE)
156
- # project = new(name: NAME, version: VERSION, project_type: PROJECT_TYPE)
157
- # project.save
158
- # else
159
- project = new(name: "", version: "0.0.0", project_type: "")
160
- Makit::Logging.default_logger.warn("Project not configured")
161
- # Makit::Logging.default_logger.warn("Define NAME, VERSION, and PROJECT_TYPE in the Rakefile")
162
- # end
163
- project
164
- end
165
- end
166
- end
167
- end
168
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module Makit
6
+ module Configuration
7
+ # Project configuration management
8
+ class Project
9
+ attr_accessor :git_remote_url, :name, :version, :project_type, :steps, :authors, :description, :license_expression
10
+ attr_accessor :dotnet_projects
11
+
12
+ def initialize(name, version = nil, project_type = nil)
13
+ # Support both keyword arguments and positional arguments for compatibility
14
+ if name.is_a?(Hash)
15
+ # Keyword arguments: Project.new(name: "test", version: "1.0.0")
16
+ @name = name[:name]
17
+ @version = name[:version]
18
+ @project_type = name[:project_type]
19
+ else
20
+ # Positional arguments: Project.new("test", "1.0.0", "nuget")
21
+ @name = name
22
+ @version = version
23
+ @project_type = project_type
24
+ end
25
+ @authors = "authors"
26
+ @description = "description"
27
+ @license_expression = "MIT"
28
+ @steps = []
29
+ end
30
+
31
+ def add_step(step)
32
+ raise ArgumentError, "Step must be a Makit::Configuration::Step instance" unless step.is_a?(Step)
33
+
34
+ @steps << step
35
+ end
36
+
37
+ def to_json(*args)
38
+ {
39
+ name: @name,
40
+ version: @version,
41
+ project_type: @project_type,
42
+ authors: @authors,
43
+ description: @description,
44
+ license_expression: @license_expression,
45
+ steps: @steps.map(&:to_h),
46
+ }.to_json(*args)
47
+ end
48
+
49
+ def to_json_pretty
50
+ JSON.pretty_generate({
51
+ name: @name,
52
+ version: @version,
53
+ project_type: @project_type,
54
+ authors: @authors,
55
+ description: @description,
56
+ license_expression: @license_expression,
57
+ steps: @steps.map(&:to_h),
58
+ })
59
+ end
60
+
61
+ def self.from_json(path)
62
+ content = File.read(path)
63
+ data = JSON.parse(content, symbolize_names: true)
64
+
65
+ project = new(data[:name], data[:version], data[:project_type])
66
+
67
+ # Set additional fields if they exist in the JSON
68
+ project.authors = data[:authors] if data[:authors]
69
+ project.description = data[:description] if data[:description]
70
+ project.license_expression = data[:license_expression] if data[:license_expression]
71
+
72
+ data[:steps].each do |step_data|
73
+ step = Step.new(
74
+ name: step_data[:name],
75
+ description: step_data[:description],
76
+ commands: step_data[:commands],
77
+ )
78
+ project.add_step(step)
79
+ end
80
+
81
+ project
82
+ end
83
+
84
+ # Class method for deserializing from JSON string (used by serializer)
85
+ def self.decode_json(json_string)
86
+ data = JSON.parse(json_string, symbolize_names: true)
87
+
88
+ project = new(data[:name], data[:version], data[:project_type])
89
+
90
+ # Set additional fields if they exist in the JSON
91
+ project.authors = data[:authors] if data[:authors]
92
+ project.description = data[:description] if data[:description]
93
+ project.license_expression = data[:license_expression] if data[:license_expression]
94
+
95
+ data[:steps].each do |step_data|
96
+ step = Step.new(
97
+ name: step_data[:name],
98
+ description: step_data[:description],
99
+ commands: step_data[:commands],
100
+ )
101
+ project.add_step(step)
102
+ end
103
+
104
+ project
105
+ end
106
+
107
+ def to_gitlab_ci(path)
108
+ GitLabHelper.to_yaml(self, path)
109
+ end
110
+
111
+ def to_rakefile
112
+ RakefileHelper.generate(self)
113
+ end
114
+
115
+ # Save the project to a specific path as pretty JSON
116
+ def save_as(path)
117
+ # Validate that the project has a non-empty name before saving
118
+ if @name.nil? || @name.strip.empty?
119
+ raise ArgumentError, "Project name cannot be empty. Please set a valid project name before saving."
120
+ end
121
+
122
+ File.write(path, to_json_pretty)
123
+ end
124
+
125
+ def save
126
+ # Validate that the project has a non-empty name before saving
127
+ if @name.nil? || @name.strip.empty?
128
+ raise ArgumentError, "Project name cannot be empty. Please set a valid project name before saving."
129
+ end
130
+
131
+ save_as(".makit.json")
132
+ end
133
+
134
+ # Display the project configuration in YAML format
135
+ def show
136
+ require "yaml"
137
+
138
+ project_data = {
139
+ name: @name,
140
+ version: @version,
141
+ project_type: @project_type,
142
+ git_remote_url: @git_remote_url,
143
+ steps: @steps.map(&:to_h),
144
+ }
145
+
146
+ puts YAML.dump(project_data)
147
+ end
148
+
149
+ # Load a project from the default .makit.json file
150
+ def self.default
151
+ if File.exist?(".makit.json")
152
+ from_json(".makit.json")
153
+ else
154
+ # Makit::Logging.default_logger.warn("Project not configured")
155
+ # #if defined?(NAME) && defined?(VERSION) && defined?(PROJECT_TYPE)
156
+ # project = new(name: NAME, version: VERSION, project_type: PROJECT_TYPE)
157
+ # project.save
158
+ # else
159
+ project = new(name: "", version: "0.0.0", project_type: "")
160
+ Makit::Logging.default_logger.warn("Project not configured")
161
+ # Makit::Logging.default_logger.warn("Define NAME, VERSION, and PROJECT_TYPE in the Rakefile")
162
+ # end
163
+ project
164
+ end
165
+ end
166
+ end
167
+ end
168
+ end
@@ -1,43 +1,43 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- module Configuration
5
- # Helper for Rakefile generation
6
- class RakefileHelper
7
- def self.generate(project)
8
- rakefile_content = []
9
-
10
- # Add header comment
11
- rakefile_content << "# Generated Rakefile for #{project.name} v#{project.version}"
12
- rakefile_content << "# Generated by Makit::Configuration::RakefileHelper"
13
- rakefile_content << ""
14
-
15
- # Add default task
16
- if project.steps.any?
17
- default_tasks = project.steps.map(&:name).join(",")
18
- rakefile_content << "desc 'Run all project steps'"
19
- rakefile_content << "task :default => [:#{default_tasks}]"
20
- rakefile_content << ""
21
- end
22
-
23
- # Add individual step tasks
24
- project.steps.each do |step|
25
- rakefile_content << "desc '#{step.description}'"
26
- rakefile_content << "task :#{step.name} do"
27
- step.commands.each do |command|
28
- rakefile_content << " sh '#{command}'"
29
- end
30
- rakefile_content << "end"
31
- rakefile_content << ""
32
- end
33
-
34
- rakefile_content.join("\n")
35
- end
36
-
37
- def self.write(project, path)
38
- content = generate(project)
39
- File.write(path, content)
40
- end
41
- end
42
- end
43
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module Configuration
5
+ # Helper for Rakefile generation
6
+ class RakefileHelper
7
+ def self.generate(project)
8
+ rakefile_content = []
9
+
10
+ # Add header comment
11
+ rakefile_content << "# Generated Rakefile for #{project.name} v#{project.version}"
12
+ rakefile_content << "# Generated by Makit::Configuration::RakefileHelper"
13
+ rakefile_content << ""
14
+
15
+ # Add default task
16
+ if project.steps.any?
17
+ default_tasks = project.steps.map(&:name).join(",")
18
+ rakefile_content << "desc 'Run all project steps'"
19
+ rakefile_content << "task :default => [:#{default_tasks}]"
20
+ rakefile_content << ""
21
+ end
22
+
23
+ # Add individual step tasks
24
+ project.steps.each do |step|
25
+ rakefile_content << "desc '#{step.description}'"
26
+ rakefile_content << "task :#{step.name} do"
27
+ step.commands.each do |command|
28
+ rakefile_content << " sh '#{command}'"
29
+ end
30
+ rakefile_content << "end"
31
+ rakefile_content << ""
32
+ end
33
+
34
+ rakefile_content.join("\n")
35
+ end
36
+
37
+ def self.write(project, path)
38
+ content = generate(project)
39
+ File.write(path, content)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,34 +1,34 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- module Configuration
5
- # Individual step in a project configuration
6
- class Step
7
- attr_accessor :name, :description, :commands
8
-
9
- def initialize(name:, description:, commands:)
10
- @name = name
11
- @description = description
12
- @commands = commands.is_a?(Array) ? commands : [commands]
13
-
14
- validate_commands
15
- end
16
-
17
- def to_h
18
- {
19
- name: @name,
20
- description: @description,
21
- commands: @commands,
22
- }
23
- end
24
-
25
- private
26
-
27
- def validate_commands
28
- return if @commands.is_a?(Array) && @commands.all? { |cmd| cmd.is_a?(String) }
29
-
30
- raise ArgumentError, "Commands must be an array of strings"
31
- end
32
- end
33
- end
34
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ module Configuration
5
+ # Individual step in a project configuration
6
+ class Step
7
+ attr_accessor :name, :description, :commands
8
+
9
+ def initialize(name:, description:, commands:)
10
+ @name = name
11
+ @description = description
12
+ @commands = commands.is_a?(Array) ? commands : [commands]
13
+
14
+ validate_commands
15
+ end
16
+
17
+ def to_h
18
+ {
19
+ name: @name,
20
+ description: @description,
21
+ commands: @commands,
22
+ }
23
+ end
24
+
25
+ private
26
+
27
+ def validate_commands
28
+ return if @commands.is_a?(Array) && @commands.all? { |cmd| cmd.is_a?(String) }
29
+
30
+ raise ArgumentError, "Commands must be an array of strings"
31
+ end
32
+ end
33
+ end
34
+ end