carioca 2.0.2 → 2.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23b95a753d4b358bde71f7d1e9f59ba9456b40302ef9a028a5e791a00c2c7d07
4
- data.tar.gz: cb29906d32001f5eecf0b7f78e161cf86436b11cec67377a9efacd2ecf63a469
3
+ metadata.gz: 99fbf2409631fe5afb97b9807059612f5eaa0e237bf44685a8f9aa993db1b87b
4
+ data.tar.gz: 36636acf529dc8610985e3bd96310482a0e0f9003836c6a902411cf908735166
5
5
  SHA512:
6
- metadata.gz: b105358ef95e063ffdeea22f81eff91dc0a9044b6dcc941fb0449b0d5f6a9b8106d2cdead2d6fd81223b5863d3a2e8ec902d0ce339c24b6c350f84dbcbd4fb4c
7
- data.tar.gz: ccd2744676d47b0dd3e6e25acf29194441c2217018d7b1ca1266b55ad598a942b23ae219c26277b6b2986c67c1dcce1b1dc74ee041e4b32f1fab1ec4ed21c567
6
+ metadata.gz: c9dccd95e578ea578f226c273c132f6021a23b856a25606557044cbaa0aea3403e0522b236c87a581a69653fc0264c8c3c38eb643baf4e9538db5534ffe0a316
7
+ data.tar.gz: b64096695a61f14423ca8d90363b3fd1d09317aa3eac742e4e9aef4b4ff0381cfd0f443fca2d498092673fd122d639e8b93f182ba1854d38fe138e742e19dc5d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- carioca (2.0.2)
4
+ carioca (2.0.3)
5
5
  deep_merge (~> 1.2)
6
6
  i18n (~> 1.10)
7
7
  locale (~> 2.1)
@@ -17,3 +17,7 @@ en:
17
17
  config:
18
18
  load:
19
19
  error: "Config file ignored, error : %{message}"
20
+ success: "Configuration Service successfully initialized from : %{from}"
21
+ output:
22
+ load:
23
+ context: "Output service initialized in mode : %{confset}"
@@ -16,4 +16,8 @@ fr:
16
16
  success: "Registre initialisé avec succès"
17
17
  config:
18
18
  load:
19
- error: "Fichier de configuration ignoré, erreur : %{message}"
19
+ error: "Fichier de configuration ignoré, erreur : %{message}"
20
+ success: "Service de configuration initialisé avec succès depuis : %{from}"
21
+ output:
22
+ load:
23
+ context: "Service output initialisé en mode : %{confset}"
@@ -2,7 +2,7 @@ module Carioca
2
2
  class Configuration
3
3
  include Carioca::Constants
4
4
  include Carioca::Helpers
5
- attr_accessor :filename, :name, :builtins, :log_target, :default_locale, :locales_load_path
5
+ attr_accessor :filename, :name, :builtins, :log_target, :default_locale, :locales_load_path, :debugger_tracer
6
6
  attr_accessor :config_file, :config_root, :environment, :supported_environment, :output_mode, :log_level
7
7
  attr_writer :debug, :init_from_file, :output_colors, :output_emoji
8
8
  attr_reader :log_file, :locales_availables
@@ -30,6 +30,7 @@ module Carioca
30
30
  Dir[path + '/*.yml'].sort.each do |file|
31
31
  @locales_availables.push File::basename(file,'.yml').to_sym
32
32
  end
33
+ @debugger_tracer = DEFAULT_DEBUGGER_TRACER.dup
33
34
  end
34
35
 
35
36
  def debug?
@@ -1,7 +1,7 @@
1
1
  module Carioca
2
2
  module Constants
3
3
 
4
- VERSION = '2.0.2'
4
+ VERSION = '2.0.3'
5
5
  DEFAULT_REGISTRY_FILE = './config/carioca.registry'
6
6
  DEFAULT_CONFIG_FILE = './config/settings.yml'
7
7
  DEFAULT_ENVIRONMENT = :development
@@ -14,6 +14,9 @@ module Carioca
14
14
  DEFAULT_COLORS_STATUS = true
15
15
  DEFAULT_LOG_LEVEL = :info
16
16
 
17
+
18
+ DEFAULT_DEBUGGER_TRACER = :output
19
+
17
20
  # service definitions specs
18
21
  SERVICES_MANDATORY_SPECS = {type: Symbol, service: String}
19
22
  SERVICES_FULL_LIST_SPECS = SERVICES_MANDATORY_SPECS.merge({depends: Array, description: String, resource: String })
@@ -53,6 +56,11 @@ module Carioca
53
56
  colors: Carioca::Registry.config.output_colors?,
54
57
  level: Carioca::Registry.config.log_level
55
58
  )"
59
+ },
60
+ debugger:{
61
+ type: :internal,
62
+ description: "The Debugger Service of Carioca",
63
+ service: "Carioca::Services::Debugger"
56
64
  }
57
65
  }
58
66
 
@@ -2,6 +2,9 @@
2
2
  require 'rake'
3
3
  require 'rubygems'
4
4
  require 'carioca'
5
+ require "tty-prompt"
6
+ require "pastel"
7
+
5
8
 
6
9
  $VERBOSE = nil
7
10
  if Gem::Specification.respond_to?(:find_by_name)
@@ -0,0 +1,46 @@
1
+ namespace :carioca do
2
+ namespace :services do
3
+ namespace :config do
4
+ desc "Initialise Service configuration file ./config/settings.yml file"
5
+ task :init do
6
+ begin
7
+ prompt = TTY::Prompt.new
8
+ pastel = ::Pastel.new
9
+
10
+ if File::exist? "./config/settings.yml" then
11
+ puts pastel.yellow "WARNING : config file already exist, if you continue, you will destroy it !"
12
+ continue = prompt.yes?("continue ? ") do |q|
13
+ q.default false
14
+ end
15
+ print "Carioca : "
16
+ unless continue then
17
+ puts pastel.yellow "canceled"
18
+ exit 5
19
+ else
20
+ File::unlink "./config/settings.yml"
21
+ puts pastel.cyan "Reset File"
22
+ end
23
+ end
24
+
25
+ unless File::exist? "./config" then
26
+ puts pastel.red "Carioca is not initialized for Gem usage, perhaps need to run :"
27
+ puts pastel.red "$ rake carioca:gem:init_path"
28
+ exit 10
29
+ end
30
+ puts "Carioca : initializing default config file (./config/settings.yml): "
31
+ root = prompt.ask("Root config name ? (like your gem/App name)") { |q|
32
+ q.modify :down
33
+ q.required true }.to_sym
34
+ print "Carioca : Generating config file : "
35
+ structure = {root => {:production => {}, :staging => {}, :development => {}, :test => {}, :default => {}}}
36
+ File.open('./config/settings.yml', 'w') { |file| file.write(structure.to_yaml) }
37
+ puts pastel.green 'done'
38
+ rescue TTY::Reader::InputInterrupt
39
+ print "Carioca : "
40
+ puts pastel.yellow 'interrupted'
41
+ exit 5
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,15 @@
1
+ namespace :carioca do
2
+ namespace :gem do
3
+ desc "prepare Gem vitals path for Carioca"
4
+ task :init_path do
5
+ pastel = Pastel.new
6
+ if File::exist? "./config/locales"
7
+ puts pastel.yellow "Carioca path already initialized"
8
+ else
9
+ print 'Carioca : Initialising vitals gem path : '
10
+ FileUtils.mkdir_p "./config/locales"
11
+ puts pastel.green "done"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,15 +1,18 @@
1
- require "tty-prompt"
2
- require "pastel"
3
-
4
1
  namespace :carioca do
5
2
  namespace :registry do
6
3
  desc "Adding service to Carioca Registry file"
7
4
  task :add_service do
5
+ prompt = TTY::Prompt.new
6
+ pastel = ::Pastel.new
8
7
  begin
8
+ unless File::exist? "./config" then
9
+
10
+ puts pastel.yellow "Carioca is not initialized for Gem usage, perhaps need to run :"
11
+ puts pastel.yellow "$ rake carioca:gem:init_path"
12
+ exit unless prompt.yes?("Do you want to continue, with a standalone registry (not recommanded). ? ")
13
+ end
9
14
  puts "Carioca : registering service :"
10
15
  config = Carioca::Configuration::new
11
- prompt = TTY::Prompt.new
12
- pastel = Pastel.new
13
16
  filename = prompt.ask("Registry File path ?", default: config.filename)
14
17
  registry_file = Carioca::RegistryFile::new filename: filename
15
18
  name = prompt.ask("Service name ?") { |q| q.required true }.to_sym
@@ -36,22 +39,26 @@ namespace :carioca do
36
39
  end
37
40
  is_correct = prompt.yes?("Is it correct ? ")
38
41
  rescue TTY::Reader::InputInterrupt
39
- puts 'Carioca : interrupted'
42
+ print "Carioca : "
43
+ puts pastel.yellow 'interrupted'
40
44
  exit 5
41
45
  end
46
+ print "Carioca : Registry saving : "
42
47
  if is_correct then
43
48
  begin
44
49
  registry_file.add service: name, definition: definition
45
50
  registry_file.save!
46
51
  rescue => e
47
- puts "Carioca: Can't save : #{e}"
52
+ print pastel.red "failed"
53
+ puts " error : #{e}"
48
54
  exit 10
49
55
  end
50
56
 
51
- puts "Carioca : Registry saved"
57
+ puts pastel.green "done"
52
58
  else
53
- puts 'Carioca : Nothing saved'
59
+ puts pastel.yellow 'canceled'
54
60
  end
55
61
  end
56
62
  end
57
- end
63
+
64
+ end
@@ -25,7 +25,7 @@ module Carioca
25
25
 
26
26
  raise "Service not found: #{name}" unless @services.include? name
27
27
  if @active_services.include? name then
28
- debug message: i18n.t('service.getting', name: name) if @active_services.include? :logger and ![:logger, :i18n].include? name and @@config.debug?
28
+ debug message: i18n.t('service.getting', name: name) if @active_services.include? :logger and ![:logger, :i18n, :output].include? name and @@config.debug?
29
29
  else
30
30
  service = @services[name]
31
31
  service[:depends].each do|dep|
@@ -85,7 +85,7 @@ class Hash
85
85
  registry = Carioca::Registry.get
86
86
  @logger = registry.get_service name: :logger
87
87
  @i18n = registry.get_service name: :i18n
88
-
88
+ @debug = Carioca::Registry.config.debug?
89
89
  @stage = stage
90
90
  @root = root
91
91
  @config_file = Carioca::Services::Config::ConfigFile::new filename: config_filename
@@ -101,7 +101,7 @@ class Hash
101
101
  private
102
102
  def initconf
103
103
  newsets = {}
104
- @logger.debug("Carioca->Config") { @i18n.t('config.load.error', message: @config_file.error) } if @config_file.error?
104
+ @logger.debug("Carioca->Config") { @i18n.t('config.load.error', message: @config_file.error) } if @config_file.error? and @debug
105
105
  @content = @config_file.data
106
106
 
107
107
  unless @stage then
@@ -112,6 +112,7 @@ class Hash
112
112
  self.deep_merge! data
113
113
 
114
114
  end
115
+ @logger.debug("Carioca->Config") { @i18n.t('config.load.success', from: @config_file.filename) } if @debug
115
116
 
116
117
 
117
118
  end
@@ -0,0 +1,58 @@
1
+ module Carioca
2
+ module Services
3
+ class Debugger
4
+
5
+ def Debugger.get(service:, trace: Carioca::Registry.config.debugger_tracer)
6
+ return ProxyDebug::new service: service, trace: trace
7
+ end
8
+
9
+
10
+ end
11
+
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
+
53
+
54
+
55
+ end
56
+
57
+ end
58
+ end
@@ -70,13 +70,13 @@ module Carioca
70
70
  MODE = [:mono, :dual]
71
71
 
72
72
  LEVELS.each do |method|
73
- define_method(method) do |message, session = ''|
74
- self.display(level: method, message: message, session: session)
73
+ define_method(method) do |message, session = '', source = 'Carioca->Output'|
74
+ self.display(level: method, message: message, session: session, source: source)
75
75
  end
76
76
  end
77
77
  @@alias.keys.each do |method|
78
- define_method(method) do |message, session = ''|
79
- self.display( level: method, message: message, session: session)
78
+ define_method(method) do |message, session = '',source = 'Carioca->Output'|
79
+ self.display( level: method, message: message, session: session, source: source)
80
80
  end
81
81
  end
82
82
 
@@ -104,14 +104,16 @@ module Carioca
104
104
 
105
105
  # constructor
106
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?
107
111
  self.level = level
108
112
  @mode = mode
109
- @emoji = emoji
113
+ @emoji = (check_unicode_term)? emoji : false
110
114
  @color = colors
111
- if @mode == :dual then
112
- registry = Carioca::Registry.get
113
- @logger = registry.get_service name: :logger
114
- end
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
115
117
  raise "Unknown output mode : #{@mode}" unless MODE.include? @mode
116
118
  end
117
119
 
@@ -136,12 +138,23 @@ module Carioca
136
138
  @active_levels.shift(LEVELS.index(level))
137
139
  end
138
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
+
139
152
 
140
153
  # abstract method for log wrapper
141
154
  # @param [Hash] params
142
155
  # @option params [Symbol] :level, a valid level in LEVELS or ALIAS
143
156
  # @option params [String] :message text
144
- def display(level: , message: , session:)
157
+ def display(level: , message: , session:, source:)
145
158
  save = message.dup
146
159
  target_level = (@@alias.keys.include? level)? @@alias[level] : level
147
160
  if @active_levels.include? target_level then
@@ -160,7 +173,8 @@ module Carioca
160
173
  unless LEVELS.include? level
161
174
  save = "#{@@emoji[level][:text]} #{save}" if @@emoji[level].include? :text
162
175
  end
163
- @logger.send target_level, save
176
+ block = Proc::new {save}
177
+ @logger.send target_level, source, &block
164
178
  end
165
179
  puts message
166
180
  end
data/samples/test.rb CHANGED
@@ -4,7 +4,7 @@ require 'carioca'
4
4
 
5
5
  Carioca::Registry.configure do |spec|
6
6
  spec.filename = './config/carioca.registry'
7
- spec.debug = false
7
+ spec.debug = true
8
8
  spec.init_from_file = true
9
9
  # spec.log_file = '/tmp/test.rge'
10
10
  spec.config_file = './config/settings.yml'
@@ -13,8 +13,10 @@ Carioca::Registry.configure do |spec|
13
13
  spec.default_locale = :fr
14
14
  spec.log_level = :debug
15
15
  spec.output_mode = :mono
16
-
16
+ spec.output_emoji = true
17
+ spec.output_colors = true
17
18
  spec.locales_load_path << Dir[File.expand_path('./config/locales') + "/*.yml"]
19
+ spec.debugger_tracer = :output
18
20
  end
19
21
 
20
22
 
@@ -29,6 +31,12 @@ class MyService
29
31
  def hello
30
32
  logger.info(self.class.to_s) {'Hello World'}
31
33
  end
34
+
35
+ def method_test(titi, tutu: )
36
+ yield if block_given?
37
+ return "result"
38
+ end
39
+
32
40
  end
33
41
 
34
42
 
@@ -62,6 +70,7 @@ class MonAppli < Carioca::Container
62
70
  logger.info(self.to_s) { uuid.generate }
63
71
 
64
72
  inject service: :output
73
+ inject service: :debugger
65
74
 
66
75
  def test2
67
76
  cycle = [:unknown,:fatal,:error,:ko,:warn,:info,:item,:arrow,:scheduling,:trigger,:sending, :calling,:receive,:ok,:success,:debug,:flat]
@@ -83,6 +92,13 @@ class MonAppli < Carioca::Container
83
92
 
84
93
  end
85
94
 
95
+ def test3
96
+ proxy = debugger.get service: :myservice
97
+ proxy.method_test "param", tutu: "keyword" do
98
+ puts 'titi'
99
+ end
100
+ end
101
+
86
102
  end
87
103
 
88
104
 
@@ -91,7 +107,11 @@ end
91
107
 
92
108
  appli = MonAppli::new
93
109
  appli.test
94
- appli.test2
110
+ #appli.test2
111
+ appli.test3
112
+
113
+
114
+
95
115
 
96
116
 
97
117
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Romain GEORGES
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-05 00:00:00.000000000 Z
11
+ date: 2022-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tty-prompt
@@ -137,10 +137,13 @@ files:
137
137
  - lib/carioca/helpers.rb
138
138
  - lib/carioca/mixin.rb
139
139
  - lib/carioca/rake/manage.rb
140
+ - lib/carioca/rake/tasks/config.tasks
141
+ - lib/carioca/rake/tasks/gem.tasks
140
142
  - lib/carioca/rake/tasks/registry.tasks
141
143
  - lib/carioca/registry.rb
142
144
  - lib/carioca/registry_file.rb
143
145
  - lib/carioca/services/config.rb
146
+ - lib/carioca/services/debug.rb
144
147
  - lib/carioca/services/i18n.rb
145
148
  - lib/carioca/services/init.rb
146
149
  - lib/carioca/services/output.rb