assistant 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '09debc25925efe528550417aa223884831986d10b2cc03cf4ee90d482c8966d8'
4
- data.tar.gz: 7a85f7175157ed02e36b553b6319ea60b8c8561059acaa4e95d6b6b3f64b368b
3
+ metadata.gz: 57d148f4abcc7a6b10a3641ca2e75b0b4dfe0141a6536f062f1c8665f6bf5e2f
4
+ data.tar.gz: eed5fdf9f3e02724a342b109d8ef14e50b8b3fd359074ab5bb2475d1a08d88b0
5
5
  SHA512:
6
- metadata.gz: 7cc5a1dc3e39ccc9db173421f21b8d39dae763b02c5f14fe21e9827cefefca58ffb86f5f6553a581d0226e46a22069de81ab7a74fd192106a38a669558867a8b
7
- data.tar.gz: cf7eee57978f89ade9005c6b021b691a2a35d26de50ec1e601e57b9069db6449eb398c4f8064f757237844e4e0162df20a03b1985f63e5986155d71326aa725a
6
+ metadata.gz: a067fca9874e1eae78d65c49fe3b583e186a8a19e0c08c31128683a7e351758f4c839edf0a70cb0bb2feb01521b55bc4d74782e4bfaf51272d7736daad44b517
7
+ data.tar.gz: 721b623f02e50b972bc9eb58ee25640e3d5092195c57d4e5f0f0c79bcb093eee82d49d1d0ebc84c5493af1a04755df6996c212edc055b35c21b6e68c99ff73d6
@@ -0,0 +1,45 @@
1
+ ---
2
+ version: 2.1 # Use 2.1 to enable using orbs and other features.
3
+
4
+ commands:
5
+ install_ruby_deps:
6
+ steps:
7
+ - checkout
8
+ - ruby/install-deps:
9
+ key: gems-v1
10
+
11
+ orbs:
12
+ ruby: circleci/ruby@2.0.0
13
+ executors:
14
+ ruby-executor:
15
+ working_directory: ~/assistant
16
+ docker:
17
+ - image: cimg/ruby:2.7.6
18
+ jobs:
19
+ build-ruby:
20
+ executor: ruby-executor
21
+ steps:
22
+ - install_ruby_deps
23
+ ruby-unit-test:
24
+ executor: ruby-executor
25
+ steps:
26
+ - install_ruby_deps
27
+ - run:
28
+ name: Run Unit Tests
29
+ command: bundle exec rspec
30
+ rubocop-check:
31
+ executor: ruby-executor
32
+ steps:
33
+ - install_ruby_deps
34
+ - ruby/rubocop-check
35
+
36
+ workflows:
37
+ build_check_and_test:
38
+ jobs:
39
+ - build-ruby
40
+ - ruby-unit-test:
41
+ requires:
42
+ - build-ruby
43
+ - rubocop-check:
44
+ requires:
45
+ - build-ruby
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "bundler" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+ .byebug_history
13
+ assistant-*.gem
data/.rubocop.yml CHANGED
@@ -1,9 +1,11 @@
1
1
  # This is the configuration used to check the rubocop source code.
2
+
3
+ inherit_from: .rubocop_todo.yml
2
4
  require:
3
5
  - rubocop/cop/internal_affairs
4
6
  - rubocop-performance
5
7
  - rubocop-rspec
6
- - rubocop-faker
8
+ - rubocop-rake
7
9
 
8
10
  AllCops:
9
11
  NewCops: enable
@@ -13,9 +15,12 @@ AllCops:
13
15
  - 'tmp/**/*'
14
16
  - '.git/**/*'
15
17
  - 'bin/*'
16
- TargetRubyVersion: 2.5
18
+ TargetRubyVersion: 2.7
17
19
  SuggestExtensions: false
18
20
 
21
+ Gemspec/DevelopmentDependencies:
22
+ EnforcedStyle: gemspec
23
+
19
24
  Naming/PredicateName:
20
25
  # Method define macros for dynamically generated method.
21
26
  MethodDefinitionMacros:
@@ -38,7 +43,7 @@ Style/FormatStringToken:
38
43
  Style/IpAddresses:
39
44
  # The test for this cop includes strings that would cause offenses
40
45
  Exclude:
41
- - spec/rubocop/cop/style/ip_addresses_spec.rb
46
+ - spec/rubocop/cop/style/ip_addresses_spec.rb
42
47
 
43
48
  Layout/EndOfLine:
44
49
  EnforcedStyle: lf
@@ -66,7 +71,7 @@ Layout/HashAlignment:
66
71
 
67
72
  Layout/LineLength:
68
73
  Max: 120
69
- IgnoredPatterns:
74
+ AllowedPatterns:
70
75
  - !ruby/regexp /\A +(it|describe|context|shared_examples|include_examples|it_behaves_like) ["']/
71
76
 
72
77
  Lint/InterpolationCheck:
@@ -78,6 +83,11 @@ Lint/UselessAccessModifier:
78
83
  - 'def_matcher'
79
84
  - 'def_node_matcher'
80
85
 
86
+ Lint/EmptyFile:
87
+ Exclude:
88
+ # This file is intentionally empty to catch rubocop cops failing on empty files.
89
+ - spec/rubocop/intentionally_empty_file.rb
90
+
81
91
  Metrics/BlockLength:
82
92
  Exclude:
83
93
  - 'Rakefile'
@@ -88,18 +98,49 @@ Metrics/BlockLength:
88
98
  Metrics/ClassLength:
89
99
  Exclude:
90
100
  - lib/rubocop/config_obsoletion.rb
101
+ - lib/rubocop/options.rb
91
102
 
92
103
  Metrics/ModuleLength:
93
104
  Exclude:
94
105
  - 'spec/**/*.rb'
95
106
 
96
107
  Naming/InclusiveLanguage:
108
+ Enabled: true
109
+ CheckStrings: true
97
110
  FlaggedTerms:
111
+ ' a offense':
112
+ Suggestions:
113
+ - an offense
114
+ auto-correct:
115
+ Suggestions:
116
+ - autocorrect
117
+ auto_correct:
118
+ Suggestions:
119
+ - autocorrect
120
+ behaviour:
121
+ Suggestions:
122
+ - behavior
98
123
  offence:
99
124
  Suggestions:
100
125
  - offense
126
+ 'does not registers':
127
+ Suggestions:
128
+ - does not register
101
129
  Exclude:
102
130
  - lib/rubocop/cop/naming/inclusive_language.rb
131
+ - lib/rubocop/cop/mixin/auto_corrector.rb
132
+ - spec/rubocop/cop/naming/inclusive_language_spec.rb
133
+
134
+ RSpec:
135
+ Language:
136
+ Expectations:
137
+ - expect_autocorrect_options_for_autocorrect
138
+ - expect_autocorrect_options_for_autocorrect_all
139
+ - expect_autocorrect_options_for_fix_layout
140
+ - expect_correction
141
+ - expect_feature_loader
142
+ - expect_no_offenses
143
+ - expect_offense
103
144
 
104
145
  RSpec/FilePath:
105
146
  Exclude:
@@ -136,6 +177,10 @@ InternalAffairs/ExampleDescription:
136
177
  Include:
137
178
  - 'spec/rubocop/cop/**/*.rb'
138
179
 
180
+ InternalAffairs/ExampleHeredocDelimiter:
181
+ Include:
182
+ - 'spec/rubocop/cop/**/*.rb'
183
+
139
184
  InternalAffairs/UndefinedConfig:
140
185
  Include:
141
186
  - 'lib/rubocop/cop/**/*.rb'
@@ -146,3 +191,13 @@ InternalAffairs/UndefinedConfig:
146
191
  InternalAffairs/StyleDetectedApiUse:
147
192
  Exclude:
148
193
  - 'lib/rubocop/cop/mixin/percent_array.rb'
194
+
195
+ InternalAffairs/NumblockHandler:
196
+ Exclude:
197
+ - 'lib/rubocop/cop/internal_affairs/*.rb'
198
+
199
+ Gemspec/DependencyVersion:
200
+ Enabled: true
201
+
202
+ Style/RequireOrder:
203
+ Enabled: true
data/.rubocop_todo.yml ADDED
File without changes
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.8
1
+ 2.7.6
data/Gemfile.lock CHANGED
@@ -1,83 +1,115 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assistant (0.0.0)
4
+ assistant (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ activesupport (7.0.4.3)
10
+ concurrent-ruby (~> 1.0, >= 1.0.2)
11
+ i18n (>= 1.6, < 2)
12
+ minitest (>= 5.1)
13
+ tzinfo (~> 2.0)
9
14
  ast (2.4.2)
10
- brakeman (5.2.0)
15
+ brakeman (5.4.0)
16
+ byebug (11.1.3)
11
17
  colorize (0.8.1)
12
- concurrent-ruby (1.1.9)
18
+ concurrent-ruby (1.2.2)
13
19
  diff-lcs (1.5.0)
14
- faker (2.19.0)
15
- i18n (>= 1.6, < 2)
16
- fasterer (0.9.0)
20
+ factory_bot (6.2.1)
21
+ activesupport (>= 5.0.0)
22
+ faker (2.22.0)
23
+ i18n (>= 1.8.11, < 2)
24
+ fasterer (0.10.1)
17
25
  colorize (~> 0.7)
18
- ruby_parser (>= 3.14.1)
19
- i18n (1.8.11)
26
+ ruby_parser (>= 3.19.1)
27
+ i18n (1.13.0)
20
28
  concurrent-ruby (~> 1.0)
21
- parallel (1.21.0)
22
- parser (3.1.0.0)
29
+ json (2.6.3)
30
+ minitest (5.18.0)
31
+ parallel (1.23.0)
32
+ parser (3.2.2.1)
23
33
  ast (~> 2.4.1)
24
34
  rainbow (3.1.1)
25
35
  rake (13.0.6)
26
- regexp_parser (2.2.0)
36
+ regexp_parser (2.8.0)
27
37
  rexml (3.2.5)
28
- rspec (3.10.0)
29
- rspec-core (~> 3.10.0)
30
- rspec-expectations (~> 3.10.0)
31
- rspec-mocks (~> 3.10.0)
32
- rspec-core (3.10.1)
33
- rspec-support (~> 3.10.0)
34
- rspec-expectations (3.10.2)
38
+ rspec (3.12.0)
39
+ rspec-core (~> 3.12.0)
40
+ rspec-expectations (~> 3.12.0)
41
+ rspec-mocks (~> 3.12.0)
42
+ rspec-collection_matchers (1.2.0)
43
+ rspec-expectations (>= 2.99.0.beta1)
44
+ rspec-core (3.12.0)
45
+ rspec-support (~> 3.12.0)
46
+ rspec-expectations (3.12.1)
35
47
  diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.10.0)
37
- rspec-mocks (3.10.2)
48
+ rspec-support (~> 3.12.0)
49
+ rspec-mocks (3.12.1)
38
50
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.10.0)
40
- rspec-support (3.10.3)
41
- rubocop (1.25.0)
51
+ rspec-support (~> 3.12.0)
52
+ rspec-support (3.12.0)
53
+ rspec_junit_formatter (0.6.0)
54
+ rspec-core (>= 2, < 4, != 2.12.0)
55
+ rubocop (1.51.0)
56
+ json (~> 2.3)
42
57
  parallel (~> 1.10)
43
- parser (>= 3.1.0.0)
58
+ parser (>= 3.2.0.0)
44
59
  rainbow (>= 2.2.2, < 4.0)
45
60
  regexp_parser (>= 1.8, < 3.0)
46
- rexml
47
- rubocop-ast (>= 1.15.1, < 2.0)
61
+ rexml (>= 3.2.5, < 4.0)
62
+ rubocop-ast (>= 1.28.0, < 2.0)
48
63
  ruby-progressbar (~> 1.7)
49
- unicode-display_width (>= 1.4.0, < 3.0)
50
- rubocop-ast (1.15.1)
51
- parser (>= 3.0.1.1)
64
+ unicode-display_width (>= 2.4.0, < 3.0)
65
+ rubocop-ast (1.28.1)
66
+ parser (>= 3.2.1.0)
67
+ rubocop-capybara (2.18.0)
68
+ rubocop (~> 1.41)
69
+ rubocop-factory_bot (2.22.0)
70
+ rubocop (~> 1.33)
52
71
  rubocop-faker (1.1.0)
53
72
  faker (>= 2.12.0)
54
73
  rubocop (>= 0.82.0)
55
- rubocop-performance (1.13.2)
74
+ rubocop-performance (1.17.1)
56
75
  rubocop (>= 1.7.0, < 2.0)
57
76
  rubocop-ast (>= 0.4.0)
58
- rubocop-rspec (2.7.0)
59
- rubocop (~> 1.19)
60
- ruby-progressbar (1.11.0)
61
- ruby_parser (3.18.1)
77
+ rubocop-rake (0.6.0)
78
+ rubocop (~> 1.0)
79
+ rubocop-rspec (2.22.0)
80
+ rubocop (~> 1.33)
81
+ rubocop-capybara (~> 2.17)
82
+ rubocop-factory_bot (~> 2.22)
83
+ ruby-progressbar (1.13.0)
84
+ ruby_parser (3.20.0)
62
85
  sexp_processor (~> 4.16)
63
- sexp_processor (4.16.0)
64
- unicode-display_width (2.1.0)
86
+ sexp_processor (4.17.0)
87
+ tzinfo (2.0.6)
88
+ concurrent-ruby (~> 1.0)
89
+ unicode-display_width (2.4.2)
65
90
 
66
91
  PLATFORMS
67
- x86_64-darwin-20
92
+ arm64-darwin-22
93
+ x86_64-darwin-21
94
+ x86_64-linux
68
95
 
69
96
  DEPENDENCIES
70
97
  assistant!
71
- brakeman (~> 5.2)
72
- bundler (~> 2.3, >= 2.3.5)
98
+ brakeman (~> 5.2, >= 5.2.3)
99
+ bundler (~> 2.3, >= 2.3.19)
100
+ byebug (~> 11.1, >= 11.1.3)
73
101
  colorize (~> 0.8.1)
74
- fasterer (~> 0.9.0)
102
+ factory_bot (~> 6.2, >= 6.2.1)
103
+ fasterer (~> 0.10.1)
75
104
  rake (~> 13.0, >= 13.0.6)
76
- rspec (~> 3.10)
77
- rubocop (~> 1.24, >= 1.24.1)
105
+ rspec (~> 3.12)
106
+ rspec-collection_matchers (~> 1.2)
107
+ rspec_junit_formatter (~> 0.6.0)
108
+ rubocop (~> 1.51)
78
109
  rubocop-faker (~> 1.1)
79
- rubocop-performance (~> 1.13, >= 1.13.2)
80
- rubocop-rspec (~> 2.7)
110
+ rubocop-performance (~> 1.17, >= 1.17.1)
111
+ rubocop-rake (~> 0.6.0)
112
+ rubocop-rspec (~> 2.22)
81
113
 
82
114
  BUNDLED WITH
83
- 2.3.5
115
+ 2.3.19
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/assistant.gemspec CHANGED
@@ -6,45 +6,46 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
  require 'assistant/version'
7
7
 
8
8
  Gem::Specification.new do |spec|
9
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
10
+
9
11
  spec.name = 'assistant'
10
12
  spec.version = Assistant::VERSION
11
13
  spec.authors = ['Ramon Rodrigues']
12
14
  spec.email = ['cerberus.ramon@gmail.com']
13
15
 
14
- spec.summary = 'Simple, composable services'
16
+ spec.summary = 'Simple, soft fail enabled, composable services'
15
17
  spec.description = 'Simple, composable services'
16
18
  spec.homepage = 'https://github.com/ramongr/assistant'
17
19
  spec.license = 'MIT'
18
- spec.required_ruby_version = '>= 2.5.8'
19
-
20
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
21
- # to allow pushing to a single host or delete this section to allow pushing to any host.
22
- if spec.respond_to?(:metadata)
23
- spec.metadata['allowed_push_host'] = 'https://rubygems.org'
24
- spec.metadata['changelog_uri'] = 'https://github.com/ramongr/assistant/blob/main/CODE_OF_CONDUCT.md'
25
- spec.metadata['homepage_uri'] = spec.homepage
26
- spec.metadata['source_code_uri'] = 'https://github.com/ramongr/assistant'
27
- else
28
- raise 'RubyGems 2.0 or newer is required to protect against ' \
29
- 'public gem pushes.'
30
- end
20
+ spec.required_ruby_version = '>= 2.7.6'
21
+
22
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
23
+ spec.metadata['changelog_uri'] = 'https://github.com/ramongr/assistant/blob/main/CODE_OF_CONDUCT.md'
24
+ spec.metadata['homepage_uri'] = 'https://github.com/ramongr/assistant'
25
+ spec.metadata['rubygems_mfa_required'] = 'true'
26
+ spec.metadata['source_code_uri'] = 'https://github.com/ramongr/assistant'
31
27
 
32
28
  # Specify which files should be added to the gem when it is released.
33
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
34
30
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
35
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
36
32
  end
37
- spec.bindir = 'exe'
38
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
39
- spec.require_paths = ['lib']
40
- spec.add_development_dependency 'brakeman', '~> 5.2'
33
+
34
+ spec.require_paths = 'lib'
35
+
36
+ spec.add_development_dependency 'brakeman', '~> 5.2', '>= 5.2.3'
37
+ spec.add_development_dependency 'bundler', '~> 2.3', '>= 2.3.19'
38
+ spec.add_development_dependency 'byebug', '~> 11.1', '>= 11.1.3'
41
39
  spec.add_development_dependency 'colorize', '~> 0.8.1'
42
- spec.add_development_dependency 'bundler', '~> 2.3', '>= 2.3.5'
43
- spec.add_development_dependency 'fasterer', '~> 0.9.0'
40
+ spec.add_development_dependency 'factory_bot', '~> 6.2', '>= 6.2.1'
41
+ spec.add_development_dependency 'fasterer', '~> 0.10.1'
44
42
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
45
- spec.add_development_dependency 'rspec', '~> 3.10'
46
- spec.add_development_dependency 'rubocop', '~> 1.24', '>= 1.24.1'
43
+ spec.add_development_dependency 'rspec', '~> 3.12'
44
+ spec.add_development_dependency 'rspec-collection_matchers', '~> 1.2'
45
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.6.0'
46
+ spec.add_development_dependency 'rubocop', '~> 1.51'
47
47
  spec.add_development_dependency 'rubocop-faker', '~> 1.1'
48
- spec.add_development_dependency 'rubocop-performance', '~> 1.13', '>= 1.13.2'
49
- spec.add_development_dependency 'rubocop-rspec', '~> 2.7'
48
+ spec.add_development_dependency 'rubocop-performance', '~> 1.17', '>= 1.17.1'
49
+ spec.add_development_dependency 'rubocop-rake', '~> 0.6.0'
50
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.22'
50
51
  end
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "assistant"
3
+ require 'bundler/setup'
4
+ require 'assistant'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "assistant"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/bin/version CHANGED
@@ -8,16 +8,12 @@ def process_command(argument)
8
8
  original_version = version_arr.join('.')
9
9
  case argument
10
10
  when '-h', '--help'
11
- puts ' VERSION BUMP OPTIONS '
12
- puts '--bump-patch-version --patch Bumps the patch version'
13
- puts '--bump-minor-version --minor Bumps the minor version and sets the patch version to 0'
14
- puts '--bump-major-version --version Bumps the major version sets all other values to 0'
15
- return
16
- when '--bump-patch-version', '--patch'
11
+ return puts help_message
12
+ when '--patch-version', '--patch'
17
13
  bumped_version = [version_arr[0], version_arr[1], version_arr[2] + 1].join('.')
18
- when '--bump-minor-version', '--minor'
14
+ when '--minor-version', '--minor'
19
15
  bumped_version = [version_arr[0], version_arr[1] + 1, 0].join('.')
20
- when '--bump-major-version', '--version'
16
+ when '--major-version', '--version'
21
17
  bumped_version = [version_arr[0] + 1, 0, 0].join('.')
22
18
  else
23
19
  return puts "Invalid command #{argument}, use --help to see all available commands".colorize(:red)
@@ -27,6 +23,15 @@ def process_command(argument)
27
23
  write_file(bumped_version_file)
28
24
  end
29
25
 
26
+ private
27
+
28
+ def help_message
29
+ puts "\t\t\t\t\tVERSION BUMP OPTIONS\t\t\t\t\t"
30
+ puts "--patch-version --patch\t\tBumps the patch version\t\t\t\t\t"
31
+ puts "--minor-version --minor\t\tBumps the minor version and sets the patch version to 0 "
32
+ puts "--major-version --version\t\tBumps the major version sets all other values to 0\t"
33
+ end
34
+
30
35
  def write_file(text)
31
36
  File.write(VERSION_FILE, text)
32
37
  end
@@ -45,4 +50,4 @@ end
45
50
 
46
51
  ARGV.each do |argument|
47
52
  process_command(argument)
48
- end
53
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Assistant
4
+ # Log base class
5
+ class LogItem
6
+ VALID_LEVELS = %i[info warning error].freeze
7
+
8
+ attr_reader :level, :source, :detail, :message, :trace
9
+
10
+ def initialize(level:, source:, detail:, message:, trace: nil)
11
+ @level = level.to_sym
12
+ @source = source.to_sym
13
+ @detail = detail.to_sym
14
+ @message = message.to_s
15
+ @trace = trace
16
+ end
17
+
18
+ def valid?
19
+ [valid_level?, valid_source?, valid_detail?, valid_message?].all?
20
+ end
21
+
22
+ def item
23
+ { level: level, source: source, detail: detail, message: message, trace: trace }
24
+ end
25
+
26
+ VALID_LEVELS.each do |valid_level|
27
+ # info? warning? error?
28
+ define_method("#{valid_level}?") do
29
+ level == valid_level
30
+ end
31
+ end
32
+
33
+ def valid_level?
34
+ VALID_LEVELS.include?(level)
35
+ end
36
+
37
+ def valid_source?
38
+ source.size.positive? && detail != source
39
+ end
40
+
41
+ def valid_detail?
42
+ detail.size.positive? && source != detail
43
+ end
44
+
45
+ def valid_message?
46
+ message.size.positive?
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Assistant
4
+ # Service level list of logs
5
+ module LogList
6
+ def add_log(level:, source:, detail:, message:, trace: nil)
7
+ @logs << Assistant::LogItem.new(level: level, source: source, detail: detail, message: message, trace: trace)
8
+ end
9
+
10
+ def merge_logs(other_logs)
11
+ @logs.concat(other_logs)
12
+ end
13
+
14
+ ::Assistant::LogItem::VALID_LEVELS.each do |level|
15
+ define_method("#{level}s") do
16
+ @logs.select { |log| log.send("#{level}?") }
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,16 +3,32 @@
3
3
  module Assistant
4
4
  # Base class for the Assistant gem
5
5
  class Service
6
+ include ::Assistant::LogList
7
+
8
+ class << self
9
+ def run(*args)
10
+ new(*args).run
11
+ end
12
+ end
13
+
6
14
  def initialize(*args)
7
15
  @inputs = args
16
+ @logs = []
8
17
  end
9
18
 
10
19
  def run
11
- execute
20
+ validate
21
+ { result: execute, status: status, warnings: warnings } if errors.empty?
22
+ end
23
+
24
+ def status
25
+ warnings.empty? ? :ok : :with_warnings
12
26
  end
13
27
 
14
28
  protected
15
29
 
16
30
  def execute; end
31
+
32
+ def validate; end
17
33
  end
18
34
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Assistant
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
data/lib/assistant.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'assistant/version'
3
+ require 'assistant/log_item'
4
+ require 'assistant/log_list'
4
5
  require 'assistant/service'
6
+ require 'assistant/version'
5
7
 
8
+ # Main Assistant lib entry point
6
9
  module Assistant
7
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assistant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ramon Rodrigues
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-05 00:00:00.000000000 Z
11
+ date: 2023-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brakeman
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.2.3
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,49 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.2.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.3'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.3.19
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.3'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.3.19
53
+ - !ruby/object:Gem::Dependency
54
+ name: byebug
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '11.1'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 11.1.3
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '11.1'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 11.1.3
27
73
  - !ruby/object:Gem::Dependency
28
74
  name: colorize
29
75
  requirement: !ruby/object:Gem::Requirement
@@ -39,39 +85,39 @@ dependencies:
39
85
  - !ruby/object:Gem::Version
40
86
  version: 0.8.1
41
87
  - !ruby/object:Gem::Dependency
42
- name: bundler
88
+ name: factory_bot
43
89
  requirement: !ruby/object:Gem::Requirement
44
90
  requirements:
45
91
  - - "~>"
46
92
  - !ruby/object:Gem::Version
47
- version: '2.3'
93
+ version: '6.2'
48
94
  - - ">="
49
95
  - !ruby/object:Gem::Version
50
- version: 2.3.5
96
+ version: 6.2.1
51
97
  type: :development
52
98
  prerelease: false
53
99
  version_requirements: !ruby/object:Gem::Requirement
54
100
  requirements:
55
101
  - - "~>"
56
102
  - !ruby/object:Gem::Version
57
- version: '2.3'
103
+ version: '6.2'
58
104
  - - ">="
59
105
  - !ruby/object:Gem::Version
60
- version: 2.3.5
106
+ version: 6.2.1
61
107
  - !ruby/object:Gem::Dependency
62
108
  name: fasterer
63
109
  requirement: !ruby/object:Gem::Requirement
64
110
  requirements:
65
111
  - - "~>"
66
112
  - !ruby/object:Gem::Version
67
- version: 0.9.0
113
+ version: 0.10.1
68
114
  type: :development
69
115
  prerelease: false
70
116
  version_requirements: !ruby/object:Gem::Requirement
71
117
  requirements:
72
118
  - - "~>"
73
119
  - !ruby/object:Gem::Version
74
- version: 0.9.0
120
+ version: 0.10.1
75
121
  - !ruby/object:Gem::Dependency
76
122
  name: rake
77
123
  requirement: !ruby/object:Gem::Requirement
@@ -98,34 +144,56 @@ dependencies:
98
144
  requirements:
99
145
  - - "~>"
100
146
  - !ruby/object:Gem::Version
101
- version: '3.10'
147
+ version: '3.12'
102
148
  type: :development
103
149
  prerelease: false
104
150
  version_requirements: !ruby/object:Gem::Requirement
105
151
  requirements:
106
152
  - - "~>"
107
153
  - !ruby/object:Gem::Version
108
- version: '3.10'
154
+ version: '3.12'
109
155
  - !ruby/object:Gem::Dependency
110
- name: rubocop
156
+ name: rspec-collection_matchers
111
157
  requirement: !ruby/object:Gem::Requirement
112
158
  requirements:
113
159
  - - "~>"
114
160
  - !ruby/object:Gem::Version
115
- version: '1.24'
116
- - - ">="
161
+ version: '1.2'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
117
167
  - !ruby/object:Gem::Version
118
- version: 1.24.1
168
+ version: '1.2'
169
+ - !ruby/object:Gem::Dependency
170
+ name: rspec_junit_formatter
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: 0.6.0
119
176
  type: :development
120
177
  prerelease: false
121
178
  version_requirements: !ruby/object:Gem::Requirement
122
179
  requirements:
123
180
  - - "~>"
124
181
  - !ruby/object:Gem::Version
125
- version: '1.24'
126
- - - ">="
182
+ version: 0.6.0
183
+ - !ruby/object:Gem::Dependency
184
+ name: rubocop
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
127
188
  - !ruby/object:Gem::Version
128
- version: 1.24.1
189
+ version: '1.51'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: '1.51'
129
197
  - !ruby/object:Gem::Dependency
130
198
  name: rubocop-faker
131
199
  requirement: !ruby/object:Gem::Requirement
@@ -146,34 +214,48 @@ dependencies:
146
214
  requirements:
147
215
  - - "~>"
148
216
  - !ruby/object:Gem::Version
149
- version: '1.13'
217
+ version: '1.17'
150
218
  - - ">="
151
219
  - !ruby/object:Gem::Version
152
- version: 1.13.2
220
+ version: 1.17.1
153
221
  type: :development
154
222
  prerelease: false
155
223
  version_requirements: !ruby/object:Gem::Requirement
156
224
  requirements:
157
225
  - - "~>"
158
226
  - !ruby/object:Gem::Version
159
- version: '1.13'
227
+ version: '1.17'
160
228
  - - ">="
161
229
  - !ruby/object:Gem::Version
162
- version: 1.13.2
230
+ version: 1.17.1
231
+ - !ruby/object:Gem::Dependency
232
+ name: rubocop-rake
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: 0.6.0
238
+ type: :development
239
+ prerelease: false
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: 0.6.0
163
245
  - !ruby/object:Gem::Dependency
164
246
  name: rubocop-rspec
165
247
  requirement: !ruby/object:Gem::Requirement
166
248
  requirements:
167
249
  - - "~>"
168
250
  - !ruby/object:Gem::Version
169
- version: '2.7'
251
+ version: '2.22'
170
252
  type: :development
171
253
  prerelease: false
172
254
  version_requirements: !ruby/object:Gem::Requirement
173
255
  requirements:
174
256
  - - "~>"
175
257
  - !ruby/object:Gem::Version
176
- version: '2.7'
258
+ version: '2.22'
177
259
  description: Simple, composable services
178
260
  email:
179
261
  - cerberus.ramon@gmail.com
@@ -181,10 +263,13 @@ executables: []
181
263
  extensions: []
182
264
  extra_rdoc_files: []
183
265
  files:
266
+ - ".circleci/config.yml"
184
267
  - ".fasterer.yml"
268
+ - ".github/dependabot.yml"
185
269
  - ".gitignore"
186
270
  - ".rspec"
187
271
  - ".rubocop.yml"
272
+ - ".rubocop_todo.yml"
188
273
  - ".ruby-version"
189
274
  - CODE_OF_CONDUCT.md
190
275
  - Gemfile
@@ -197,6 +282,8 @@ files:
197
282
  - bin/setup
198
283
  - bin/version
199
284
  - lib/assistant.rb
285
+ - lib/assistant/log_item.rb
286
+ - lib/assistant/log_list.rb
200
287
  - lib/assistant/service.rb
201
288
  - lib/assistant/version.rb
202
289
  homepage: https://github.com/ramongr/assistant
@@ -206,8 +293,9 @@ metadata:
206
293
  allowed_push_host: https://rubygems.org
207
294
  changelog_uri: https://github.com/ramongr/assistant/blob/main/CODE_OF_CONDUCT.md
208
295
  homepage_uri: https://github.com/ramongr/assistant
296
+ rubygems_mfa_required: 'true'
209
297
  source_code_uri: https://github.com/ramongr/assistant
210
- post_install_message:
298
+ post_install_message:
211
299
  rdoc_options: []
212
300
  require_paths:
213
301
  - lib
@@ -215,15 +303,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
303
  requirements:
216
304
  - - ">="
217
305
  - !ruby/object:Gem::Version
218
- version: 2.5.8
306
+ version: 2.7.6
219
307
  required_rubygems_version: !ruby/object:Gem::Requirement
220
308
  requirements:
221
309
  - - ">="
222
310
  - !ruby/object:Gem::Version
223
311
  version: '0'
224
312
  requirements: []
225
- rubygems_version: 3.2.3
226
- signing_key:
313
+ rubygems_version: 3.1.6
314
+ signing_key:
227
315
  specification_version: 4
228
- summary: Simple, composable services
316
+ summary: Simple, soft fail enabled, composable services
229
317
  test_files: []