diff --git a/lib/rage/openapi/openapi.rb b/lib/rage/openapi/openapi.rb index 2e889ccb..a9484ec5 100644 --- a/lib/rage/openapi/openapi.rb +++ b/lib/rage/openapi/openapi.rb @@ -156,9 +156,15 @@ def self.__type_to_spec(type, default: false) # @private def self.__log_warn(log) + __warnings << log puts "[OpenAPI] WARNING: #{log}" end + # @private + def self.__warnings + @__warnings ||= [] + end + module Nodes end diff --git a/lib/rage/tasks.rb b/lib/rage/tasks.rb index 95e94293..a3adf783 100644 --- a/lib/rage/tasks.rb +++ b/lib/rage/tasks.rb @@ -7,6 +7,7 @@ class Rage::Tasks class << self def init load_db_tasks if defined?(StandaloneMigrations) + load_rage_tasks load_app_tasks end @@ -34,5 +35,9 @@ def configuration_file def load_app_tasks Dir[Rage.root.join("lib/tasks/**/*.rake")].each { |file| load file } end + + def load_rage_tasks + Dir[File.expand_path("tasks/**/*.rake", __dir__)].each { |file| load file } + end end end diff --git a/lib/rage/tasks/openapi.rake b/lib/rage/tasks/openapi.rake new file mode 100644 index 00000000..aef97707 --- /dev/null +++ b/lib/rage/tasks/openapi.rake @@ -0,0 +1,12 @@ +namespace :openapi do + task :validate do + Rage::OpenAPI.build + + if Rage::OpenAPI.__warnings.any? + puts "OpenAPI validation failed. Warnings: #{Rage::OpenAPI.__warnings}" + exit 1 + else + puts "OpenAPI validation passed without warnings." + end + end +end