carioca 1.4 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +18 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +58 -0
- data/README.md +123 -190
- data/Rakefile +5 -66
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/carioca.gemspec +37 -23
- data/config/locales/en.yml +23 -0
- data/config/locales/fr.yml +23 -0
- data/lib/carioca/configuration.rb +61 -0
- data/lib/carioca/constants.rb +68 -0
- data/lib/carioca/container.rb +16 -0
- data/lib/carioca/dependencies.rb +20 -0
- data/lib/carioca/helpers.rb +44 -31
- data/lib/carioca/mixin.rb +32 -0
- data/lib/carioca/{tasks/rake.rb → rake/manage.rb} +5 -4
- data/lib/carioca/rake/tasks/config.tasks +46 -0
- data/lib/carioca/rake/tasks/gem.tasks +15 -0
- data/lib/carioca/rake/tasks/registry.tasks +64 -0
- data/lib/carioca/registry.rb +94 -0
- data/lib/carioca/registry_file.rb +62 -0
- data/lib/carioca/services/config.rb +141 -0
- data/lib/carioca/services/debug.rb +48 -61
- data/lib/carioca/services/i18n.rb +20 -0
- data/lib/carioca/services/init.rb +2 -0
- data/lib/carioca/services/output.rb +189 -0
- data/lib/carioca/validator.rb +49 -0
- data/lib/carioca.rb +2 -319
- data/samples/Rakefile +2 -0
- data/samples/config/carioca.registry +22 -0
- data/samples/config/locales/en.yml +2 -0
- data/samples/config/locales/es.yml +2 -0
- data/samples/config/locales/fr.yml +2 -0
- data/samples/config/settings.yml +24 -0
- data/samples/test.rb +118 -0
- metadata +77 -143
- data/AUTHORS +0 -8
- data/COPYRIGHT +0 -24
- data/ChangeLog +0 -10
- data/INSTALL +0 -7
- data/doc/manual.rdoc +0 -225
- data/lib/carioca/exceptions.rb +0 -9
- data/lib/carioca/private.rb +0 -168
- data/lib/carioca/services/configuration.rb +0 -203
- data/lib/carioca/services/logger.rb +0 -58
- data/lib/carioca/services.rb +0 -143
- data/lib/carioca/tasks/registry_init.rake +0 -12
- data/spec/carioca_spec.rb +0 -468
- data/spec/config/.config +0 -14
- data/spec/config/services.registry +0 -55
- data/spec/init_spec.rb +0 -2
- data/spec/samples/dummy.rb +0 -11
- data/spec/samples/otherdummy.rb +0 -11
- data/spec/samples/requireddummy.rb +0 -11
- data/spec/spec_helper.rb +0 -18
- data/ultragreen_roodi_coding_convention.yml +0 -25
@@ -0,0 +1,141 @@
|
|
1
|
+
class Hash
|
2
|
+
# monkey patching
|
3
|
+
def deep_symbolize
|
4
|
+
target = dup
|
5
|
+
target.inject({}) do |memo, (key, value)|
|
6
|
+
value = value.deep_symbolize if value.is_a?(Hash)
|
7
|
+
memo[key.to_sym] = value
|
8
|
+
memo
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_missing(name, *args, &block)
|
13
|
+
if name.to_s =~ /(.+)=$/
|
14
|
+
self[$1.to_sym] = args.first
|
15
|
+
else
|
16
|
+
self[name.to_sym]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
module Carioca
|
25
|
+
module Services
|
26
|
+
module Config
|
27
|
+
|
28
|
+
class ConfigFile
|
29
|
+
include Carioca::Constants
|
30
|
+
attr_accessor :filename, :data
|
31
|
+
attr_reader :error
|
32
|
+
|
33
|
+
def initialize(filename:)
|
34
|
+
@filename = filename
|
35
|
+
@data = {}
|
36
|
+
@error = ""
|
37
|
+
open
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
def error?
|
42
|
+
return !@error.empty?
|
43
|
+
end
|
44
|
+
|
45
|
+
def create!(force: false)
|
46
|
+
write_ok = true
|
47
|
+
write_ok = force if File::exist? @filename
|
48
|
+
File.open(@filename, 'w') { |file| file.write(@data.to_yaml) } if write_ok
|
49
|
+
end
|
50
|
+
|
51
|
+
def open
|
52
|
+
if File::exist?(@filename) then
|
53
|
+
begin
|
54
|
+
@data = YAML.load_file(@filename)
|
55
|
+
rescue Exception => e
|
56
|
+
@error = e.message
|
57
|
+
@data = {}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
prepare!
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
def prepare!
|
65
|
+
config = Carioca::Registry.config
|
66
|
+
@data = {} unless @data.class == Hash
|
67
|
+
@data.delete_if {|key,value| config.config_root != key }
|
68
|
+
@data[config.config_root] = {} unless @data.include? config.config_root
|
69
|
+
config.supported_environment.each do |evt|
|
70
|
+
@data[config.config_root][evt] = {} unless @data[config.config_root].include? evt
|
71
|
+
end
|
72
|
+
@data[config.config_root][:default] = {} unless @data[config.config_root].include? :default
|
73
|
+
create!
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
class Settings < Hash
|
78
|
+
|
79
|
+
attr_accessor :config_file
|
80
|
+
attr_accessor :stage
|
81
|
+
|
82
|
+
include Carioca::Helpers
|
83
|
+
|
84
|
+
def initialize(config_filename: , stage:, root:)
|
85
|
+
registry = Carioca::Registry.get
|
86
|
+
@logger = registry.get_service name: :logger
|
87
|
+
@i18n = registry.get_service name: :i18n
|
88
|
+
@debug = Carioca::Registry.config.debug?
|
89
|
+
@stage = stage
|
90
|
+
@root = root
|
91
|
+
@config_file = Carioca::Services::Config::ConfigFile::new filename: config_filename
|
92
|
+
initconf
|
93
|
+
end
|
94
|
+
|
95
|
+
def refresh
|
96
|
+
initconf
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
private
|
102
|
+
def initconf
|
103
|
+
newsets = {}
|
104
|
+
@logger.debug("Carioca->Config") { @i18n.t('config.load.error', message: @config_file.error) } if @config_file.error? and @debug
|
105
|
+
@content = @config_file.data
|
106
|
+
|
107
|
+
unless @stage then
|
108
|
+
newsets = @content
|
109
|
+
else
|
110
|
+
self.merge! @content[@root][:default]
|
111
|
+
data = @content[@root][@stage]
|
112
|
+
self.deep_merge! data
|
113
|
+
|
114
|
+
end
|
115
|
+
@logger.debug("Carioca->Config") { @i18n.t('config.load.success', from: @config_file.filename) } if @debug
|
116
|
+
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
class Factory
|
126
|
+
extend Forwardable
|
127
|
+
|
128
|
+
attr_accessor :settings
|
129
|
+
def_delegators :@settings, :refresh
|
130
|
+
|
131
|
+
|
132
|
+
def initialize(**keywords)
|
133
|
+
@settings = Carioca::Services::Config::Settings.new(**keywords)
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
@@ -1,71 +1,58 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# $BUILTIN
|
3
|
-
# $NAME debug
|
4
|
-
# $SERVICE Carioca::Services::ProxyDebug
|
5
|
-
# $RESOURCE debug
|
6
|
-
# $DESCRIPTION Proxy class debugger Service for Carioca
|
7
|
-
# Copyright Ultragreen (c) 2012
|
8
|
-
#---
|
9
|
-
# Author : Romain GEORGES
|
10
|
-
# type : class definition Ruby
|
11
|
-
# obj : Generic Debugs tools library
|
12
|
-
#---
|
13
|
-
|
14
|
-
|
15
|
-
require 'rubygems'
|
16
|
-
require 'methodic'
|
17
|
-
|
18
|
-
|
19
1
|
module Carioca
|
20
|
-
|
2
|
+
module Services
|
3
|
+
class Debugger
|
21
4
|
|
5
|
+
def Debugger.get(service:, trace: Carioca::Registry.config.debugger_tracer)
|
6
|
+
return ProxyDebug::new service: service, trace: trace
|
7
|
+
end
|
22
8
|
|
23
|
-
# Service Debug of Carioca
|
24
|
-
# Proxy Class Debug for devs
|
25
|
-
class ProxyDebug
|
26
9
|
|
27
|
-
# ProxyDebug service constructor (has a class proxy => so a service proxy)
|
28
|
-
# @param [Hash] _options the params
|
29
|
-
# @option _options [String] :service the name of the service you want to proxyfying
|
30
|
-
# @option _options [Hash] :params the params of the proxyfied service
|
31
|
-
def initialize(_options)
|
32
|
-
options = Methodic.get_options(_options)
|
33
|
-
options.specify_classes_of :service => String
|
34
|
-
options.specify_presence_of([:service])
|
35
|
-
options.validate!
|
36
|
-
if options[:params] then
|
37
|
-
@obj = Registry.init.start_service :name => options[:service], :params => options[:params]
|
38
|
-
else
|
39
|
-
@obj = Registry.init.start_service :name => options[:service]
|
40
10
|
end
|
41
|
-
@log = Registry.init.get_service :name => 'logger'
|
42
|
-
@mapped_service = options[:service]
|
43
|
-
end
|
44
11
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
12
|
+
class ProxyDebug
|
13
|
+
def initialize(service:, trace:)
|
14
|
+
registry = Carioca::Registry.get
|
15
|
+
@service = registry.get_service name: service
|
16
|
+
@tracers = [:output, :logger]
|
17
|
+
raise "Debugger :trace is not valid : #{trace}, must be in : #{@tracers.to_s}" unless @tracers.include? trace
|
18
|
+
@tracer = registry.get_service name: trace
|
19
|
+
@tracer_type = trace
|
20
|
+
end
|
21
|
+
|
22
|
+
def method_missing(methodname, *args, **keywords,&block)
|
23
|
+
|
24
|
+
trace message: "BEGIN CALL for service #{@service} "
|
25
|
+
trace message: "Method called: #{methodname} "
|
26
|
+
trace message: "args : #{args.join " "}"
|
27
|
+
trace message: "keywords : #{keywords.to_s}"
|
28
|
+
if block_given? then
|
29
|
+
trace message: "block given"
|
30
|
+
a = @service.send(methodname, *args, **keywords,&block)
|
31
|
+
else
|
32
|
+
a = @service.send(methodname, *args, **keywords)
|
33
|
+
end
|
34
|
+
trace message: "=> method returned: #{a} "
|
35
|
+
trace message: 'END CALL'
|
36
|
+
|
37
|
+
return a
|
38
|
+
end
|
39
|
+
|
40
|
+
def trace(message: )
|
41
|
+
if @tracer_type == :output then
|
42
|
+
save = @tracer.mode
|
43
|
+
@tracer.mode = :mono
|
44
|
+
@tracer.debug message
|
45
|
+
@tracer.mode = save
|
46
|
+
else
|
47
|
+
@tracer.debug("Carioca->ProxyDebug") { message }
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
|
60
53
|
|
61
54
|
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
55
|
+
end
|
65
56
|
|
66
|
-
|
67
|
-
if $0 == __FILE__ then
|
68
|
-
puts "#{File::basename(__FILE__)}:"
|
69
|
-
puts 'this is a RUBY library file'
|
70
|
-
puts "Copyright (c) Ultragreen"
|
57
|
+
end
|
71
58
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Carioca
|
2
|
+
module Services
|
3
|
+
class I18n
|
4
|
+
|
5
|
+
def I18n.get(default_locale: , load_path:, locales_availables: )
|
6
|
+
::I18n::Backend::Simple.include(::I18n::Backend::Fallbacks)
|
7
|
+
::I18n.load_path << load_path
|
8
|
+
::I18n.default_locale = default_locale
|
9
|
+
::I18n.fallbacks = locales_availables
|
10
|
+
return ::I18n
|
11
|
+
end
|
12
|
+
|
13
|
+
def I18n.get_system_locale
|
14
|
+
return ::Locale.candidates.to_s.split('_').first.to_sym
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
module Carioca
|
2
|
+
module Services
|
3
|
+
module Output
|
4
|
+
|
5
|
+
module FormatsMapping
|
6
|
+
COLORS = {
|
7
|
+
:unknown => :red,
|
8
|
+
:fatal => :red,
|
9
|
+
:error => :red,
|
10
|
+
:ko => :yellow,
|
11
|
+
:warn => :yellow,
|
12
|
+
:item => :white,
|
13
|
+
:arrow => :white,
|
14
|
+
:sending => :white,
|
15
|
+
:calling => :white,
|
16
|
+
:scheduling => :white,
|
17
|
+
:trigger => :white,
|
18
|
+
:receive => :white,
|
19
|
+
:info => :cyan,
|
20
|
+
:ok => :green,
|
21
|
+
:success => :green,
|
22
|
+
:debug => :magenta,
|
23
|
+
:flat => :white
|
24
|
+
}
|
25
|
+
|
26
|
+
EMOJI = {
|
27
|
+
:unknown => {:value => "\u{1F4A5}", :alt => '[!!]', :text => "(UNKNOWN)"},
|
28
|
+
:fatal => {:value => "\u{26D4}", :alt => '[!!]', :text => "(FATAL)"},
|
29
|
+
:error => {:value => "\u{1F6AB}", :alt => '[!]', :text => "(ERROR)"},
|
30
|
+
:ko => {:value => "\u{1F44E}", :alt => '[-]', :text => "(KO)"},
|
31
|
+
:warn => {:value => "\u{26A0}", :alt => '[/!\]', :text => "(WARNING)"},
|
32
|
+
:info => {:value => "\u{2139}", :alt => '[i]', :text => "(INFO)"},
|
33
|
+
:item => {:value => " \u{1F539}", :alt => '', :text => " *"},
|
34
|
+
:arrow => {:value => " \u{27A1}", :alt => '', :text => " =>"},
|
35
|
+
:calling => {:value => "\u{1F4DE}" , :alt => '[C]', :text => "(CALLING)"},
|
36
|
+
:scheduling => {:value => "\u{23F2}" , :alt => '[S]', :text => "{SCHEDULING})"},
|
37
|
+
:trigger => {:value => "\u{23F0}", :alt => '[T]', :text => "(TRIGGER)"},
|
38
|
+
:sending => {:value => "\u{1F4E4}", :alt => '[>]', :text => "(SENDING)"},
|
39
|
+
:receive => {:value => "\u{1F4E5}" , :alt => '[<]', :text => "(RECEIVE)"},
|
40
|
+
:ok => {:value => "\u{1F44D}" , :alt => '[+]', :text => "(OK)"},
|
41
|
+
:success => {:value => "\u{1F4AA}" , :alt => '[+]', :text => "(SUCCESS)"},
|
42
|
+
:debug => {:value => "\u{1F41B}" , :alt => '[D]', :text => "(DEBUG)"},
|
43
|
+
:flat => {:value => "", :alt => ""}
|
44
|
+
}
|
45
|
+
LEVELS = [:debug, :info, :warn, :error, :fatal, :unknown ]
|
46
|
+
ALIAS = {
|
47
|
+
:flat => :info,
|
48
|
+
:item => :info,
|
49
|
+
:ok => :info,
|
50
|
+
:ko => :error,
|
51
|
+
:trigger => :info,
|
52
|
+
:scheduling => :info,
|
53
|
+
:arrow => :info,
|
54
|
+
:sending => :info,
|
55
|
+
:calling => :info,
|
56
|
+
:receive => :info,
|
57
|
+
:success => :info
|
58
|
+
|
59
|
+
}
|
60
|
+
end
|
61
|
+
class Provider
|
62
|
+
include FormatsMapping
|
63
|
+
|
64
|
+
attr_accessor :mode, :emoji, :color
|
65
|
+
|
66
|
+
@@alias = ALIAS.dup
|
67
|
+
@@colors = COLORS.dup
|
68
|
+
@@emoji = EMOJI.dup
|
69
|
+
|
70
|
+
MODE = [:mono, :dual]
|
71
|
+
|
72
|
+
LEVELS.each do |method|
|
73
|
+
define_method(method) do |message, session = '', source = 'Carioca->Output'|
|
74
|
+
self.display(level: method, message: message, session: session, source: source)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
@@alias.keys.each do |method|
|
78
|
+
define_method(method) do |message, session = '',source = 'Carioca->Output'|
|
79
|
+
self.display( level: method, message: message, session: session, source: source)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def map_color(color: , analias: )
|
84
|
+
raise "Color must be a Symbol" unless color.class == Symbol
|
85
|
+
raise "Missing alias : #{analias}" unless LEVELS.include? analias
|
86
|
+
@@alias[analias] = color
|
87
|
+
end
|
88
|
+
|
89
|
+
def map_emoji(emoji: , analias: )
|
90
|
+
raise "Emoji must be a String" unless color.class == String
|
91
|
+
raise "Missing alias : #{analias}" unless LEVELS.include? analias
|
92
|
+
@@alias[analias] = emoji
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
def add_alias(newalias:, level:)
|
97
|
+
raise "Alias must be a Symbol" unless newalias.class == Symbol
|
98
|
+
raise "Bad Level : #{level}" unless LEVELS.include? level
|
99
|
+
self.class.define_method(newalias) do |message, session = ''|
|
100
|
+
self.display({ level: newalias, message: message, session: session})
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
# constructor
|
106
|
+
def initialize(level: :debug, mode: :mono , emoji: true, colors: true)
|
107
|
+
registry = Carioca::Registry.get
|
108
|
+
@logger = registry.get_service name: :logger
|
109
|
+
@i18n = registry.get_service name: :i18n
|
110
|
+
@debug = Carioca::Registry.config.debug?
|
111
|
+
self.level = level
|
112
|
+
@mode = mode
|
113
|
+
@emoji = (check_unicode_term)? emoji : false
|
114
|
+
@color = colors
|
115
|
+
set = []; set.push mode; set.push :emoji if @emoji ; set.push :colors if @color
|
116
|
+
@logger.debug("Carioca->Output") { @i18n.t('output.load.context', confset: set.to_s ) } if @debug
|
117
|
+
raise "Unknown output mode : #{@mode}" unless MODE.include? @mode
|
118
|
+
end
|
119
|
+
|
120
|
+
# build a session number
|
121
|
+
# @return [String] Session number
|
122
|
+
def get_session
|
123
|
+
return "#{Time.now.to_i.to_s}#{rand(999)}"
|
124
|
+
end
|
125
|
+
|
126
|
+
# getter for the current level
|
127
|
+
# @return [Symbol] level
|
128
|
+
def level
|
129
|
+
return @active_levels.first
|
130
|
+
end
|
131
|
+
|
132
|
+
# virtual setter for level, set the current level
|
133
|
+
# @raise a badLevel in case of bad level
|
134
|
+
# @param [Symbol] level
|
135
|
+
def level=(level)
|
136
|
+
raise "Bad Level : #{level}" unless LEVELS.include? level
|
137
|
+
@active_levels = LEVELS.dup
|
138
|
+
@active_levels.shift(LEVELS.index(level))
|
139
|
+
end
|
140
|
+
|
141
|
+
# check if unicode must be used with term ENV
|
142
|
+
# @return [Boolean]
|
143
|
+
def check_unicode_term
|
144
|
+
return false unless ENV.include? "TERM"
|
145
|
+
if ENV.values_at("LC_ALL","LC_CTYPE","LANG").compact.first.include?("UTF-8") and ENV.values_at('TERM').first.include? "xterm" then
|
146
|
+
return true
|
147
|
+
else
|
148
|
+
return false
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
# abstract method for log wrapper
|
154
|
+
# @param [Hash] params
|
155
|
+
# @option params [Symbol] :level, a valid level in LEVELS or ALIAS
|
156
|
+
# @option params [String] :message text
|
157
|
+
def display(level: , message: , session:, source:)
|
158
|
+
save = message.dup
|
159
|
+
target_level = (@@alias.keys.include? level)? @@alias[level] : level
|
160
|
+
if @active_levels.include? target_level then
|
161
|
+
if @color then
|
162
|
+
pastel = ::Pastel.new
|
163
|
+
message = pastel.send @@colors[level], message
|
164
|
+
end
|
165
|
+
if @@emoji.include? level
|
166
|
+
pattern = (@emoji)? @@emoji[level][:value] : @@emoji[level][:alt]
|
167
|
+
pattern = "#{pattern} #{@@emoji[level][:text]}" if @@emoji[level].include? :text and !@emoji
|
168
|
+
message = pattern + " " + message unless pattern.empty?
|
169
|
+
end
|
170
|
+
if @mode == :dual
|
171
|
+
|
172
|
+
pattern = @@emoji[level][:alt]
|
173
|
+
unless LEVELS.include? level
|
174
|
+
save = "#{@@emoji[level][:text]} #{save}" if @@emoji[level].include? :text
|
175
|
+
end
|
176
|
+
block = Proc::new {save}
|
177
|
+
@logger.send target_level, source, &block
|
178
|
+
end
|
179
|
+
puts message
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Carioca
|
2
|
+
module Services
|
3
|
+
class Validator
|
4
|
+
|
5
|
+
attr_reader :definition
|
6
|
+
|
7
|
+
include Carioca::Constants
|
8
|
+
|
9
|
+
def initialize(definition: , service: )
|
10
|
+
@definition = definition
|
11
|
+
@service = service
|
12
|
+
end
|
13
|
+
|
14
|
+
def validate!
|
15
|
+
validate_mandatories
|
16
|
+
validate_full_and_type
|
17
|
+
validate_not_builtins
|
18
|
+
fill_content
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def validate_not_builtins
|
23
|
+
|
24
|
+
raise "Builtins reserved name #{@service.to_s}" if BUILTINS.keys.include? @service
|
25
|
+
end
|
26
|
+
|
27
|
+
def validate_mandatories
|
28
|
+
SERVICES_MANDATORY_SPECS.keys.each do |spec|
|
29
|
+
raise "Key : :#{spec} is mandatory in a service definition" unless @definition.include? spec
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def validate_full_and_type
|
34
|
+
@definition.each do |spec,value|
|
35
|
+
raise "Key : :#{spec} is not allowed in a service definition" unless SERVICES_FULL_LIST_SPECS.include? spec
|
36
|
+
raise "key : #{spec} must be a : #{SERVICES_FULL_LIST_SPECS[spec].to_s}" unless value.class == SERVICES_FULL_LIST_SPECS[spec]
|
37
|
+
if SERVICES_SPECS_DETAIL.include? spec then
|
38
|
+
raise "key : #{spec} must be in : #{SERVICES_SPECS_DETAIL[spec].to_s}" unless SERVICES_SPECS_DETAIL[spec].include? value
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def fill_content
|
44
|
+
@definition[:description] = @service.to_s unless @definition.include? :description
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|