From 769dee3702cd8eee4e2aa91711bfb7c887915720 Mon Sep 17 00:00:00 2001 From: meatball <69751659+meatball133@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:36:45 +0100 Subject: [PATCH] Changes based on feedback and add more tasks to rakefile --- Rakefile | 15 +++++++++++++++ bin/generate | 8 ++++---- generatorv2/lib/generator.rb | 7 +++---- generatorv2/lib/utils.rb | 6 ++++++ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Rakefile b/Rakefile index fe00a092b5..013376fdac 100644 --- a/Rakefile +++ b/Rakefile @@ -16,6 +16,21 @@ task :rubocop do system('rubocop --display-cop-names') end +desc "Run generator for specefic exercise" +task :generate, [:exercise] do |_t, argumments| + system("./bin/generate --exercise #{argumments[:exercise]}") +end + +desc "Run generator for all exercises" +task :generate_all do + system("./bin/generate --all") +end + +desc "Verify templates for all exercises" +task :verify do + system("./bin/generate --verify") +end + namespace :test do flags = ARGV.drop_while { |e| e != '--' }.drop(1).join(' ') diff --git a/bin/generate b/bin/generate index 9048fe1fe3..23b655e0fd 100755 --- a/bin/generate +++ b/bin/generate @@ -10,9 +10,9 @@ def exercises end class VerificationError < StandardError - def initialize( - message = "VerificationError: The result generated for %s, doesn't match the current file" - ) + MESSAGE = 'The result generated for %s, does not match the current file' + + def initialize(message = MESSAGE) super end end @@ -47,7 +47,7 @@ parser.on('--verify', 'Verify all exercises') do fail VerificationError unless current_code == generated_code end rescue VerificationError => e - $stderr.puts e.message % {exercise:} + stderr.puts e.message % {exercise:} end end diff --git a/generatorv2/lib/generator.rb b/generatorv2/lib/generator.rb index ead487ebec..042bcbda6e 100644 --- a/generatorv2/lib/generator.rb +++ b/generatorv2/lib/generator.rb @@ -8,6 +8,7 @@ class Generator include Utils + include NullDevice def initialize(exercise = nil) @first = true @@ -20,15 +21,13 @@ def generate(result_path = "./exercises/practice/#{@exercise}/#{@exercise}_test. additional_json(json) json["cases"] = remove_tests(uuid, json) status = proc { status } - camel_case = proc { |str| camel_case(str) } - underscore = proc { |str| underscore(str) } template = ERB.new File.read("./exercises/practice/#{@exercise}/.meta/test_template.erb") result = template.result(binding) File.write(result_path, result) - cli = RuboCop::CLI.new - cli.run(['-x', "-c", ".rubocop.yml", "-o", "/dev/null", result_path]) + RuboCop::CLI.new. + run(['-x', '-c', '.rubocop.yml', '-o', NullDevice.path, result_path]) end def underscore(str) diff --git a/generatorv2/lib/utils.rb b/generatorv2/lib/utils.rb index d30d11eaf6..04a9f87e4e 100644 --- a/generatorv2/lib/utils.rb +++ b/generatorv2/lib/utils.rb @@ -1,3 +1,9 @@ +module NullDevice + def self.path + Gem.win_platform? ? 'NUL' : '/dev/null' + end +end + module Utils def toml(path = "./exercises/practice/#{@exercise}/.meta/tests.toml") raise "Toml not found: #{path}" unless File.exist?(path)