makit 0.0.111 → 0.0.126

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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/lib/makit/cli/repository_commands.rb +1 -1
  3. data/lib/makit/commands/middleware/cache.rb +3 -3
  4. data/lib/makit/commands/middleware/command_logger.rb +33 -45
  5. data/lib/makit/commands/request.rb +63 -1
  6. data/lib/makit/commands/runner.rb +56 -5
  7. data/lib/makit/commands/strategies/base.rb +13 -2
  8. data/lib/makit/commands/strategies/synchronous.rb +11 -6
  9. data/lib/makit/commands.rb +8 -0
  10. data/lib/makit/configuration/gitlab_helper.rb +0 -2
  11. data/lib/makit/configuration/project.rb +48 -8
  12. data/lib/makit/configuration/step.rb +3 -3
  13. data/lib/makit/content/default_gitignore.txt +226 -0
  14. data/lib/makit/directories.rb +3 -4
  15. data/lib/makit/docs/files.rb +1 -1
  16. data/lib/makit/docs/rake.rb +1 -1
  17. data/lib/makit/dotnet/cli.rb +69 -65
  18. data/lib/makit/dotnet/project.rb +71 -7
  19. data/lib/makit/examples/runner.rb +2 -2
  20. data/lib/makit/logging/configuration.rb +9 -6
  21. data/lib/makit/logging/format_registry.rb +84 -84
  22. data/lib/makit/logging/formatters/console_formatter.rb +22 -9
  23. data/lib/makit/logging/log_request.rb +6 -2
  24. data/lib/makit/logging/logger.rb +45 -5
  25. data/lib/makit/logging/sinks/base.rb +91 -91
  26. data/lib/makit/logging/sinks/structured.rb +123 -129
  27. data/lib/makit/logging/sinks/unified_file_sink.rb +39 -46
  28. data/lib/makit/logging.rb +45 -1
  29. data/lib/makit/mp/project_mp.rb +6 -6
  30. data/lib/makit/mp/string_mp.rb +108 -265
  31. data/lib/makit/serializer.rb +14 -1
  32. data/lib/makit/services/builder.rb +5 -5
  33. data/lib/makit/services/repository_manager.rb +8 -6
  34. data/lib/makit/setup/classlib.rb +44 -7
  35. data/lib/makit/setup/gem.rb +268 -250
  36. data/lib/makit/setup/razorclasslib.rb +91 -0
  37. data/lib/makit/setup/runner.rb +36 -22
  38. data/lib/makit/setup.rb +5 -0
  39. data/lib/makit/symbols.rb +10 -1
  40. data/lib/makit/tasks/at_exit.rb +3 -1
  41. data/lib/makit/tasks/build.rb +16 -12
  42. data/lib/makit/tasks/clean.rb +2 -0
  43. data/lib/makit/tasks/configure.rb +10 -0
  44. data/lib/makit/tasks/format.rb +10 -0
  45. data/lib/makit/tasks/hook_manager.rb +160 -8
  46. data/lib/makit/tasks/init.rb +2 -0
  47. data/lib/makit/tasks/integrate.rb +17 -3
  48. data/lib/makit/tasks/pull_incoming.rb +6 -5
  49. data/lib/makit/tasks/setup.rb +10 -3
  50. data/lib/makit/tasks/sync.rb +13 -7
  51. data/lib/makit/tasks/tag.rb +16 -0
  52. data/lib/makit/tasks/task_monkey_patch.rb +58 -56
  53. data/lib/makit/tasks/test.rb +22 -0
  54. data/lib/makit/tasks/update.rb +18 -0
  55. data/lib/makit/tasks.rb +20 -5
  56. data/lib/makit/v1/makit.v1_pb.rb +1 -0
  57. data/lib/makit/version.rb +1 -1
  58. data/lib/makit/version_util.rb +21 -0
  59. data/lib/makit copy.rb +44 -0
  60. data/lib/makit.rb +31 -0
  61. metadata +118 -13
  62. data/lib/makit/command_runner.rb +0 -463
  63. data/lib/makit/commands/compatibility.rb +0 -365
  64. data/lib/makit/commands/middleware/unified_logger.rb +0 -243
  65. data/lib/makit/task_hooks.rb +0 -125
@@ -0,0 +1,226 @@
1
+ # General
2
+ [Aa]rtifacts/
3
+ artifacts.zip
4
+ [Gg]enerated/
5
+ [Tt]hirdparty/
6
+
7
+ # Jekyll
8
+ _site/
9
+
10
+
11
+ # Ruby
12
+ *.gem
13
+ *.rbc
14
+ /.config
15
+ /coverage/
16
+ /InstalledFiles
17
+ /pkg/
18
+ /spec/reports/
19
+ /spec/examples.txt
20
+ /test/tmp/
21
+ /test/version_tmp/
22
+ /tmp/
23
+ /.yardoc/
24
+ /_yardoc/
25
+ /doc/
26
+ /rdoc/
27
+ /.bundle/
28
+ /vendor/bundle
29
+ /lib/bundler/man/
30
+ .rvmrc
31
+
32
+ # Rust
33
+ /target/
34
+ Cargo.lock
35
+ **/*.rs.bk
36
+ /target
37
+ /Cargo.lock
38
+
39
+ # DotNet
40
+ *.rsuser
41
+ *.suo
42
+ *.user
43
+ *.userosscache
44
+ *.sln.docstates
45
+ *.txt
46
+ *.userprefs
47
+ BenchmarkDotNet.Artifacts/
48
+ [Dd]ebug/
49
+ [Dd]ebugPublic/
50
+ [Rr]elease/
51
+ [Rr]eleases/
52
+ x64/
53
+ x86/
54
+ [Aa][Rr][Mm]/
55
+ [Aa][Rr][Mm]64/
56
+ bld/
57
+ [Bb]in/
58
+ [Oo]bj/
59
+ [Ll]og/
60
+ [Aa]rtifacts/
61
+ .vs/
62
+ Generated\ Files/
63
+ [Tt]est[Rr]esult*/
64
+ [Bb]uild[Ll]og.*
65
+ *.VisualState.xml
66
+ TestResult.xml
67
+ [Dd]ebugPS/
68
+ [Rr]eleasePS/
69
+ dlldata.c
70
+ BenchmarkDotNet.Artifacts/
71
+
72
+ project.lock.json
73
+ project.fragment.lock.json
74
+ artifacts/
75
+ StyleCopReport.xml
76
+ *_i.c
77
+ *_p.c
78
+ *_h.h
79
+ *.ilk
80
+ *.meta
81
+ *.obj
82
+ *.iobj
83
+ *.pch
84
+ *.pdb
85
+ *.ipdb
86
+ *.pgc
87
+ *.pgd
88
+ *.rsp
89
+ *.sbr
90
+ *.tlb
91
+ *.tli
92
+ *.tlh
93
+ *.tmp
94
+ *.tmp_proj
95
+ *_wpftmp.csproj
96
+ *.log
97
+ *.vspscc
98
+ *.vssscc
99
+ .builds
100
+ *.pidb
101
+ *.svclog
102
+ *.scc
103
+ _Chutzpah*
104
+ ipch/
105
+ *.aps
106
+ *.ncb
107
+ *.opendb
108
+ *.opensdf
109
+ *.sdf
110
+ *.cachefile
111
+ *.VC.db
112
+ *.VC.VC.opendb
113
+ *.psess
114
+ *.vsp
115
+ *.vspx
116
+ *.sap
117
+ *.e2e
118
+ $tf/
119
+ *.gpState
120
+ _ReSharper*/
121
+ *.[Rr]e[Ss]harper
122
+ *.DotSettings.user
123
+ .JustCode
124
+ _TeamCity*
125
+ *.dotCover
126
+ .axoCover/*
127
+ !.axoCover/settings.json
128
+ *.coverage
129
+ *.coveragexml
130
+ _NCrunch_*
131
+ .*crunch*.local.xml
132
+ nCrunchTemp_*
133
+ *.mm.*
134
+ AutoTest.Net/
135
+ .sass-cache/
136
+ [Ee]xpress/
137
+ DocProject/buildhelp/
138
+ DocProject/Help/*.HxT
139
+ DocProject/Help/*.HxC
140
+ DocProject/Help/*.hhc
141
+ DocProject/Help/*.hhk
142
+ DocProject/Help/*.hhp
143
+ DocProject/Help/Html2
144
+ DocProject/Help/html
145
+ publish/
146
+ *.[Pp]ublish.xml
147
+ *.azurePubxml
148
+ *.pubxml
149
+ *.publishproj
150
+ PublishScripts/
151
+ *.nupkg
152
+ **/[Pp]ackages/*
153
+ !**/[Pp]ackages/build/
154
+ *.nuget.props
155
+ *.nuget.targets
156
+ csx/
157
+ *.build.csdef
158
+ ecf/
159
+ rcf/
160
+ AppPackages/
161
+ BundleArtifacts/
162
+ Package.StoreAssociation.xml
163
+ _pkginfo.txt
164
+ *.appx
165
+ *.[Cc]ache
166
+ # but keep track of directories ending in .cache
167
+ !*.[Cc]ache/
168
+ ClientBin/
169
+ ~$*
170
+ *~
171
+ *.dbmdl
172
+ *.dbproj.schemaview
173
+ *.jfm
174
+ *.pfx
175
+ *.publishsettings
176
+ orleans.codegen.cs
177
+ **/wwwroot/lib/
178
+ Generated_Code/
179
+ _UpgradeReport_Files/
180
+ Backup*/
181
+ UpgradeLog*.XML
182
+ UpgradeLog*.htm
183
+ ServiceFabricBackup/
184
+ *.rptproj.bak
185
+ *.mdf
186
+ *.ldf
187
+ *.ndf
188
+ *.rdl.data
189
+ *.bim.layout
190
+ *.bim_*.settings
191
+ *.rptproj.rsuser
192
+ FakesAssemblies/
193
+ *.GhostDoc.xml
194
+ .ntvs_analysis.dat
195
+ node_modules/
196
+ *.plg
197
+ *.opt
198
+ *.vbw
199
+ **/*.HTMLClient/GeneratedArtifacts
200
+ **/*.DesktopClient/GeneratedArtifacts
201
+ **/*.DesktopClient/ModelManifest.xml
202
+ **/*.Server/GeneratedArtifacts
203
+ **/*.Server/ModelManifest.xml
204
+ _Pvt_Extensions
205
+ .paket/paket.exe
206
+ paket-files/
207
+ .fake/
208
+ .idea/
209
+ *.sln.iml
210
+ .cr/personal
211
+ __pycache__/
212
+ *.pyc
213
+ tools/**
214
+ !tools/packages.config
215
+ *.tss
216
+ *.jmconfig
217
+ *.btp.cs
218
+ *.btm.cs
219
+ *.odx.cs
220
+ *.xsd.cs
221
+ OpenCover/
222
+ ASALocalRun/
223
+ *.binlog
224
+ *.nvuser
225
+ .mfractor/
226
+ .localhistory/
@@ -69,10 +69,9 @@ module Makit
69
69
  FileUtils.mkdir_p(REPOS)
70
70
  FileUtils.mkdir_p(TEMP)
71
71
  FileUtils.mkdir_p(INSTALL)
72
- unless Dir.exist?(LOCAL_NUGET_SOURCE)
73
- Dir.mkdir(LOCAL_NUGET_SOURCE)
74
- system("dotnet nuget add source #{LOCAL_NUGET_SOURCE} --name local")
75
- end
72
+
73
+ FileUtils.mkdir_p(LOCAL_NUGET_SOURCE)
74
+ # NOTE: Nuget source setup moved to lazy initialization to avoid blocking module loading
76
75
 
77
76
  def self.get_project_path(relative_path)
78
77
  File.join(PROJECT_ROOT, relative_path)
@@ -80,7 +80,7 @@ module Makit
80
80
  # Git Repository Size
81
81
  #
82
82
  ## report on the git repository size
83
- file.write(Makit::RUNNER.execute("git count-objects -vH").to_markdown)
83
+ file.write(Makit::Commands::Runner.default.execute("git count-objects -vH").to_markdown)
84
84
  file.write("\n\n")
85
85
  end
86
86
  end
@@ -81,7 +81,7 @@ module Makit
81
81
  content += "\n\n"
82
82
 
83
83
  ## report on the available rake tasks
84
- content += Makit::RUNNER.execute("rake -T").to_markdown
84
+ content += Makit::Commands::Runner.default.execute("rake -T").to_markdown
85
85
  content += "\n\n"
86
86
 
87
87
  filename = "docs/Rake.md"
@@ -1,65 +1,69 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- class DotNet
5
- class CLI
6
- def self.new_solution(name)
7
- if File.exist? "#{name}.sln"
8
- # puts "Solution #{name}.sln already exists".colorize(:yellow)
9
- else
10
- "dotnet new sln --name #{name}".run
11
- end
12
- end
13
-
14
- def self.sln_add_projects(sln_name)
15
- raise "Solution #{sln_name}.sln does not exist" unless File.exist? "#{sln_name}.sln"
16
-
17
- sln_path = "#{sln_name}.sln"
18
- sln_content = File.read(sln_path)
19
- Dir.glob("**/*.csproj").each do |project_path|
20
- project_name = File.basename(project_path, ".csproj")
21
- if sln_content.include?("\"#{project_name}\"")
22
- # puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
23
- else
24
- "dotnet sln #{sln_path} add #{project_path}".run
25
- end
26
- end
27
- end
28
-
29
- #
30
- # generate docs/DotNet.md
31
- #
32
- def self.generate_docs
33
- content = "# DotNet\n\n"
34
- content += "## Projects\n\n"
35
- # scan for .csproj files in src directory
36
- src_projects = Dir.glob("src/**/*.csproj")
37
- src_projects.each do |project_path|
38
- File.basename(project_path, ".csproj")
39
- # "dotnet tool update --global dotnet-aspnet-codegenerator".run
40
- # "dotnet aspnet-codegenerator controller --name #{project_name}Controller --output ~/Projects/makit/src/makit/Controllers --controllerName #{project_name}Controller --useAsyncActions --relativeFolderPath Controllers".run
41
- end
42
- content += "## Packages\n\n"
43
- # scan for packages.config files in src directory
44
- src_packages = Dir.glob("src/**/packages.config")
45
- src_packages.each do |packages_path|
46
- File.basename(packages_path, ".packages.config")
47
- end
48
- content += "## References\n\n"
49
- # scan for project.json files in src directory
50
- src_references = Dir.glob("src/**/project.json")
51
- src_references.each do |references_path|
52
- File.basename(references_path, ".project.json")
53
- end
54
-
55
- # write content to docs/DotNet.md file
56
- if File.exist?("docs/DotNet.md")
57
- existing_content = File.read("docs/DotNet.md")
58
- File.write("docs/DotNet.md", content) if existing_content != content
59
- else
60
- File.write("docs/DotNet.md", content)
61
- end
62
- end
63
- end
64
- end
65
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ class DotNet
5
+ class CLI
6
+ def self.is_installed?
7
+ File.exist?(Makit::Environment.which("dotnet"))
8
+ end
9
+
10
+ def self.new_solution(name)
11
+ if File.exist? "#{name}.sln"
12
+ # puts "Solution #{name}.sln already exists".colorize(:yellow)
13
+ else
14
+ "dotnet new sln --name #{name}".run
15
+ end
16
+ end
17
+
18
+ def self.sln_add_projects(sln_name)
19
+ raise "Solution #{sln_name}.sln does not exist" unless File.exist? "#{sln_name}.sln"
20
+
21
+ sln_path = "#{sln_name}.sln"
22
+ sln_content = File.read(sln_path)
23
+ Dir.glob("**/*.csproj").each do |project_path|
24
+ project_name = File.basename(project_path, ".csproj")
25
+ if sln_content.include?("\"#{project_name}\"")
26
+ # puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
27
+ else
28
+ "dotnet sln #{sln_path} add #{project_path}".run
29
+ end
30
+ end
31
+ end
32
+
33
+ #
34
+ # generate docs/DotNet.md
35
+ #
36
+ def self.generate_docs
37
+ content = "# DotNet\n\n"
38
+ content += "## Projects\n\n"
39
+ # scan for .csproj files in src directory
40
+ src_projects = Dir.glob("src/**/*.csproj")
41
+ src_projects.each do |project_path|
42
+ File.basename(project_path, ".csproj")
43
+ # "dotnet tool update --global dotnet-aspnet-codegenerator".run
44
+ # "dotnet aspnet-codegenerator controller --name #{project_name}Controller --output ~/Projects/makit/src/makit/Controllers --controllerName #{project_name}Controller --useAsyncActions --relativeFolderPath Controllers".run
45
+ end
46
+ content += "## Packages\n\n"
47
+ # scan for packages.config files in src directory
48
+ src_packages = Dir.glob("src/**/packages.config")
49
+ src_packages.each do |packages_path|
50
+ File.basename(packages_path, ".packages.config")
51
+ end
52
+ content += "## References\n\n"
53
+ # scan for project.json files in src directory
54
+ src_references = Dir.glob("src/**/project.json")
55
+ src_references.each do |references_path|
56
+ File.basename(references_path, ".project.json")
57
+ end
58
+
59
+ # write content to docs/DotNet.md file
60
+ if File.exist?("docs/DotNet.md")
61
+ existing_content = File.read("docs/DotNet.md")
62
+ File.write("docs/DotNet.md", content) if existing_content != content
63
+ else
64
+ File.write("docs/DotNet.md", content)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -3,10 +3,74 @@
3
3
  module Makit
4
4
  class DotNet
5
5
  class Project
6
- def self.is_installed?
7
- File.exist?(Makit::Environment.which("dotnet"))
6
+ attr_accessor :filename
7
+
8
+ def initialize(filename)
9
+ @filename = filename
10
+ end
11
+
12
+ def set_version(version)
13
+ # set the <Version> tag to the version
14
+ project_content = File.read(filename)
15
+ if project_content.include?("<Version>")
16
+ project_content.gsub!(%r{<Version>.*</Version>},
17
+ "<Version>#{version}</Version>")
18
+ else
19
+ # add the <Version> tag to the next line after the <PropertyGroup> tag
20
+ project_content.gsub!("<PropertyGroup>",
21
+ "<PropertyGroup>\n <Version>#{version}</Version>")
22
+ end
23
+ File.write(filename, project_content)
24
+ end
25
+
26
+ def get_version
27
+ # get the <Version> tag
28
+ project_content = File.read(filename)
29
+ raise "Version not found in #{filename}".colorize(:red) unless project_content.include?("<Version>")
30
+
31
+ project_content.match(%r{<Version>(.*)</Version>})[1]
32
+ end
33
+
34
+ # <TargetFramework>net8.0</TargetFramework>
35
+ # <TargetFrameworks>net8.0;net8.0-browser</TargetFrameworks>
36
+ def set_target_frameworks(target_frameworks)
37
+ project_content = File.read(filename)
38
+ target_frameworks = target_frameworks.join(";") if target_frameworks.is_a?(Array)
39
+ if target_frameworks.include?(";")
40
+ # use <TargetFrameworks> tag
41
+ if project_content.include?("<TargetFrameworks>")
42
+ project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
43
+ "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
44
+ else
45
+ project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
46
+ "<TargetFrameworks>#{target_frameworks}</TargetFrameworks>")
47
+ end
48
+ elsif project_content.include?("<TargetFramework>")
49
+ # use <TargetFramework> tag
50
+ project_content.gsub!(%r{<TargetFramework>.*</TargetFramework>},
51
+ "<TargetFramework>#{target_frameworks}</TargetFramework>")
52
+ else
53
+ project_content.gsub!(%r{<TargetFrameworks>.*</TargetFrameworks>},
54
+ "<TargetFramework>#{target_frameworks}</TargetFramework>")
55
+ end
56
+ File.write(filename, project_content)
57
+ end
58
+
59
+ def set_nuget_metadata(package_id, authors, description, license_expression)
60
+ project_content = File.read(filename)
61
+ if project_content.include?("<PropertyGroup Label=\"NuGet Metadata\">")
62
+ project_content.gsub!(%r{<PropertyGroup Label="NuGet Metadata">.*</PropertyGroup>},
63
+ " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n\n</PropertyGroup>")
64
+ else
65
+ # add the <PropertyGroup Label=\"NuGet Metadata\"> tag before the </Project> closing tag
66
+ project_content.gsub!(%r{</Project>},
67
+ " <PropertyGroup Label=\"NuGet Metadata\">\n <IsPackable>true</IsPackable>\n <PackageId>#{package_id}</PackageId>\n <Authors>#{authors}</Authors>\n <Description>#{description}</Description>\n <PackageLicenseExpression>#{license_expression}</PackageLicenseExpression>\n </PropertyGroup>\n\n</Project>")
68
+ end
69
+
70
+ File.write(filename, project_content)
8
71
  end
9
72
 
73
+ # consider move some of the methods to the CLI class
10
74
  def self.installed?
11
75
  is_installed?
12
76
  end
@@ -22,7 +86,7 @@ module Makit
22
86
  def self.new_project(template, name, output, args = "")
23
87
  if Dir.exist? output
24
88
  Makit::Logging.default_logger.info("#{output}/#{name}.csproj")
25
- #puts " .csproj ".colorize(:grey) + name.to_s.colorize(:green)
89
+ # puts " .csproj ".colorize(:grey) + name.to_s.colorize(:green)
26
90
  else
27
91
  "dotnet new #{template} --name #{name} --output #{output} #{args}".run
28
92
  end
@@ -89,7 +153,7 @@ module Makit
89
153
 
90
154
  project_content = File.read(project_path)
91
155
  if project_content.include?(File.basename(reference_path))
92
- #puts " reference ".colorize(:grey) + reference_path.to_s.colorize(:green)
156
+ # puts " reference ".colorize(:grey) + reference_path.to_s.colorize(:green)
93
157
  else
94
158
  "dotnet add #{project_path} reference #{reference_path}".run
95
159
  end
@@ -104,7 +168,7 @@ module Makit
104
168
  def self.build(project_path, configuration = "Release", output = "artifacts")
105
169
  project_dir = File.dirname(project_path)
106
170
  newest_file = Makit::Directory.get_newest_file(project_dir)
107
- command_request = Makit::RUNNER.parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
171
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
108
172
  newest_file_date = if newest_file.nil?
109
173
  Time.now
110
174
  else
@@ -116,7 +180,7 @@ module Makit
116
180
  def self.publish(project_path, configuration = "Release", output = "artifacts")
117
181
  project_dir = File.dirname(project_path)
118
182
  newest_file = Makit::Directory.get_newest_file(project_dir)
119
- command_request = Makit::RUNNER.parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
183
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet publish #{project_path} --configuration #{configuration} --output #{output}")
120
184
  newest_file_date = if newest_file.nil?
121
185
  Time.now
122
186
  else
@@ -128,7 +192,7 @@ module Makit
128
192
  def self.test(project_path, configuration = "Release", output = "artifacts")
129
193
  project_dir = File.dirname(project_path)
130
194
  newest_file = Makit::Directory.get_newest_file(project_dir)
131
- command_request = Makit::RUNNER.parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
195
+ command_request = Makit::Commands::Runner.default.parse_command_request("dotnet test #{project_path} --configuration #{configuration} --output #{output}")
132
196
  newest_file_date = if newest_file.nil?
133
197
  Time.now
134
198
  else
@@ -172,7 +172,7 @@ module Makit
172
172
  def execute_single_example(example)
173
173
  # Display separator and example path
174
174
  puts "=" * 80
175
- #puts example[:name]
175
+ # puts example[:name]
176
176
  puts example[:rakefile]
177
177
 
178
178
  log " Testing example: #{example[:name]}" if @verbose
@@ -184,7 +184,7 @@ module Makit
184
184
  Dir.chdir(example[:path]) do
185
185
  # Use the default runner with middleware for consistent behavior
186
186
  runner = Makit::DEFAULT_COMMANDS_RUNNER
187
- custom_logger = Makit::Logging::Logger.new(
187
+ Makit::Logging::Logger.new(
188
188
  Makit::Logging::Sinks::Console.new,
189
189
  Makit::Logging::Sinks::FileSink.new(log_file: "artifacts/command_examples.log")
190
190
  )
@@ -251,9 +251,12 @@ module Makit
251
251
  def validate_single_configuration(config, index)
252
252
  raise ArgumentError, "configuration #{index} must be a hash" unless config.is_a?(Hash)
253
253
 
254
- required_keys = [:file, :format]
254
+ required_keys = %i[file format]
255
255
  missing_keys = required_keys - config.keys
256
- raise ArgumentError, "configuration #{index} missing required keys: #{missing_keys.join(", ")}" unless missing_keys.empty?
256
+ unless missing_keys.empty?
257
+ raise ArgumentError,
258
+ "configuration #{index} missing required keys: #{missing_keys.join(", ")}"
259
+ end
257
260
 
258
261
  # Validate file
259
262
  file = config[:file]
@@ -277,9 +280,9 @@ module Makit
277
280
  end
278
281
 
279
282
  # Validate rotation if specified
280
- if config[:rotation] && !valid_rotation_config?(config[:rotation])
281
- raise ArgumentError, "configuration #{index} rotation must be a valid rotation configuration"
282
- end
283
+ return unless config[:rotation] && !valid_rotation_config?(config[:rotation])
284
+
285
+ raise ArgumentError, "configuration #{index} rotation must be a valid rotation configuration"
283
286
  end
284
287
 
285
288
  # Check if log level is valid
@@ -297,7 +300,7 @@ module Makit
297
300
  def valid_rotation_config?(rotation)
298
301
  return false unless rotation.is_a?(Hash)
299
302
 
300
- valid_keys = [:max_size, :max_files, :compress, :pattern]
303
+ valid_keys = %i[max_size max_files compress pattern]
301
304
  rotation.keys.all? { |key| valid_keys.include?(key) }
302
305
  end
303
306
  end