assistant 0.0.0 → 0.0.2

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
- SHA1:
3
- metadata.gz: 104258e7a46b3c12306c8db3d575cf88d92bf516
4
- data.tar.gz: 8ade4d28f353d4ef8adb618bf66988685fb235e7
2
+ SHA256:
3
+ metadata.gz: 57d148f4abcc7a6b10a3641ca2e75b0b4dfe0141a6536f062f1c8665f6bf5e2f
4
+ data.tar.gz: eed5fdf9f3e02724a342b109d8ef14e50b8b3fd359074ab5bb2475d1a08d88b0
5
5
  SHA512:
6
- metadata.gz: 6d9acd26c2182896710b7bca2a46bd7b209d19dfb03c54a7f17731e41f10d259c5e6d5d2aaaa560ab011ec62337ff3f9f7bb96bcc2d11a02517f7a58fae5757a
7
- data.tar.gz: 30531d5ba6a8252256d2dae4090ca4827b911ff6cc3ad630b387f10cc2f3e02130e5b38ce4790a683dd2043e2044d07a8c4a27d2b2bbde8c63b3a6801fd252c3
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
data/.fasterer.yml ADDED
@@ -0,0 +1,19 @@
1
+ speedups:
2
+ rescue_vs_respond_to: true
3
+ module_eval: true
4
+ shuffle_first_vs_sample: true
5
+ for_loop_vs_each: true
6
+ each_with_index_vs_while: false
7
+ map_flatten_vs_flat_map: true
8
+ reverse_each_vs_reverse_each: true
9
+ select_first_vs_detect: true
10
+ select_last_vs_reverse_detect: true
11
+ sort_vs_sort_by: true
12
+ fetch_with_argument_vs_block: true
13
+ keys_each_vs_each_key: true
14
+ hash_merge_bang_vs_hash_brackets: true
15
+ block_vs_symbol_to_proc: true
16
+ proc_call_vs_yield: true
17
+ gsub_vs_tr: true
18
+ getter_vs_attr_reader: true
19
+ setter_vs_attr_writer: true
@@ -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 ADDED
@@ -0,0 +1,203 @@
1
+ # This is the configuration used to check the rubocop source code.
2
+
3
+ inherit_from: .rubocop_todo.yml
4
+ require:
5
+ - rubocop/cop/internal_affairs
6
+ - rubocop-performance
7
+ - rubocop-rspec
8
+ - rubocop-rake
9
+
10
+ AllCops:
11
+ NewCops: enable
12
+ Exclude:
13
+ - 'vendor/**/*'
14
+ - 'spec/fixtures/**/*'
15
+ - 'tmp/**/*'
16
+ - '.git/**/*'
17
+ - 'bin/*'
18
+ TargetRubyVersion: 2.7
19
+ SuggestExtensions: false
20
+
21
+ Gemspec/DevelopmentDependencies:
22
+ EnforcedStyle: gemspec
23
+
24
+ Naming/PredicateName:
25
+ # Method define macros for dynamically generated method.
26
+ MethodDefinitionMacros:
27
+ - define_method
28
+ - define_singleton_method
29
+ - def_node_matcher
30
+ - def_node_search
31
+
32
+ Style/AccessorGrouping:
33
+ Exclude:
34
+ - lib/rubocop/formatter/base_formatter.rb
35
+ - lib/rubocop/cop/offense.rb
36
+
37
+ Style/FormatStringToken:
38
+ # Because we parse a lot of source codes from strings. Percent arrays
39
+ # look like unannotated format string tokens to this cop.
40
+ Exclude:
41
+ - spec/**/*
42
+
43
+ Style/IpAddresses:
44
+ # The test for this cop includes strings that would cause offenses
45
+ Exclude:
46
+ - spec/rubocop/cop/style/ip_addresses_spec.rb
47
+
48
+ Layout/EndOfLine:
49
+ EnforcedStyle: lf
50
+
51
+ Layout/ClassStructure:
52
+ Enabled: true
53
+
54
+ Layout/RedundantLineBreak:
55
+ Enabled: true
56
+
57
+ Layout/TrailingWhitespace:
58
+ AllowInHeredoc: false
59
+
60
+ Lint/AmbiguousBlockAssociation:
61
+ Exclude:
62
+ - 'spec/**/*.rb'
63
+
64
+ Layout/HashAlignment:
65
+ EnforcedHashRocketStyle:
66
+ - key
67
+ - table
68
+ EnforcedColonStyle:
69
+ - key
70
+ - table
71
+
72
+ Layout/LineLength:
73
+ Max: 120
74
+ AllowedPatterns:
75
+ - !ruby/regexp /\A +(it|describe|context|shared_examples|include_examples|it_behaves_like) ["']/
76
+
77
+ Lint/InterpolationCheck:
78
+ Exclude:
79
+ - 'spec/**/*.rb'
80
+
81
+ Lint/UselessAccessModifier:
82
+ MethodCreatingMethods:
83
+ - 'def_matcher'
84
+ - 'def_node_matcher'
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
+
91
+ Metrics/BlockLength:
92
+ Exclude:
93
+ - 'Rakefile'
94
+ - '**/*.rake'
95
+ - 'spec/**/*.rb'
96
+ - '**/*.gemspec'
97
+
98
+ Metrics/ClassLength:
99
+ Exclude:
100
+ - lib/rubocop/config_obsoletion.rb
101
+ - lib/rubocop/options.rb
102
+
103
+ Metrics/ModuleLength:
104
+ Exclude:
105
+ - 'spec/**/*.rb'
106
+
107
+ Naming/InclusiveLanguage:
108
+ Enabled: true
109
+ CheckStrings: true
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
123
+ offence:
124
+ Suggestions:
125
+ - offense
126
+ 'does not registers':
127
+ Suggestions:
128
+ - does not register
129
+ Exclude:
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
144
+
145
+ RSpec/FilePath:
146
+ Exclude:
147
+ - spec/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new_spec.rb
148
+ - spec/rubocop/formatter/junit_formatter_spec.rb
149
+
150
+ RSpec/PredicateMatcher:
151
+ EnforcedStyle: explicit
152
+
153
+ RSpec/MessageSpies:
154
+ EnforcedStyle: receive
155
+
156
+ RSpec/NestedGroups:
157
+ Max: 7
158
+
159
+ RSpec/MultipleMemoizedHelpers:
160
+ Enabled: false
161
+
162
+ Performance/CollectionLiteralInLoop:
163
+ Exclude:
164
+ - 'Rakefile'
165
+ - 'spec/**/*.rb'
166
+
167
+ Performance/EndWith:
168
+ SafeMultiline: false
169
+
170
+ Performance/StartWith:
171
+ SafeMultiline: false
172
+
173
+ RSpec/StubbedMock:
174
+ Enabled: false
175
+
176
+ InternalAffairs/ExampleDescription:
177
+ Include:
178
+ - 'spec/rubocop/cop/**/*.rb'
179
+
180
+ InternalAffairs/ExampleHeredocDelimiter:
181
+ Include:
182
+ - 'spec/rubocop/cop/**/*.rb'
183
+
184
+ InternalAffairs/UndefinedConfig:
185
+ Include:
186
+ - 'lib/rubocop/cop/**/*.rb'
187
+ Exclude:
188
+ - 'lib/rubocop/cop/correctors/**/*.rb'
189
+ - 'lib/rubocop/cop/mixin/**/*.rb'
190
+
191
+ InternalAffairs/StyleDetectedApiUse:
192
+ Exclude:
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 ADDED
@@ -0,0 +1 @@
1
+ 2.7.6
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in assistant.gemspec
6
8
  gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,115 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ assistant (0.0.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
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)
14
+ ast (2.4.2)
15
+ brakeman (5.4.0)
16
+ byebug (11.1.3)
17
+ colorize (0.8.1)
18
+ concurrent-ruby (1.2.2)
19
+ diff-lcs (1.5.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)
25
+ colorize (~> 0.7)
26
+ ruby_parser (>= 3.19.1)
27
+ i18n (1.13.0)
28
+ concurrent-ruby (~> 1.0)
29
+ json (2.6.3)
30
+ minitest (5.18.0)
31
+ parallel (1.23.0)
32
+ parser (3.2.2.1)
33
+ ast (~> 2.4.1)
34
+ rainbow (3.1.1)
35
+ rake (13.0.6)
36
+ regexp_parser (2.8.0)
37
+ rexml (3.2.5)
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)
47
+ diff-lcs (>= 1.2.0, < 2.0)
48
+ rspec-support (~> 3.12.0)
49
+ rspec-mocks (3.12.1)
50
+ diff-lcs (>= 1.2.0, < 2.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)
57
+ parallel (~> 1.10)
58
+ parser (>= 3.2.0.0)
59
+ rainbow (>= 2.2.2, < 4.0)
60
+ regexp_parser (>= 1.8, < 3.0)
61
+ rexml (>= 3.2.5, < 4.0)
62
+ rubocop-ast (>= 1.28.0, < 2.0)
63
+ ruby-progressbar (~> 1.7)
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)
71
+ rubocop-faker (1.1.0)
72
+ faker (>= 2.12.0)
73
+ rubocop (>= 0.82.0)
74
+ rubocop-performance (1.17.1)
75
+ rubocop (>= 1.7.0, < 2.0)
76
+ rubocop-ast (>= 0.4.0)
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)
85
+ sexp_processor (~> 4.16)
86
+ sexp_processor (4.17.0)
87
+ tzinfo (2.0.6)
88
+ concurrent-ruby (~> 1.0)
89
+ unicode-display_width (2.4.2)
90
+
91
+ PLATFORMS
92
+ arm64-darwin-22
93
+ x86_64-darwin-21
94
+ x86_64-linux
95
+
96
+ DEPENDENCIES
97
+ assistant!
98
+ brakeman (~> 5.2, >= 5.2.3)
99
+ bundler (~> 2.3, >= 2.3.19)
100
+ byebug (~> 11.1, >= 11.1.3)
101
+ colorize (~> 0.8.1)
102
+ factory_bot (~> 6.2, >= 6.2.1)
103
+ fasterer (~> 0.10.1)
104
+ rake (~> 13.0, >= 13.0.6)
105
+ rspec (~> 3.12)
106
+ rspec-collection_matchers (~> 1.2)
107
+ rspec_junit_formatter (~> 0.6.0)
108
+ rubocop (~> 1.51)
109
+ rubocop-faker (~> 1.1)
110
+ rubocop-performance (~> 1.17, >= 1.17.1)
111
+ rubocop-rake (~> 0.6.0)
112
+ rubocop-rspec (~> 2.22)
113
+
114
+ BUNDLED WITH
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
@@ -1,42 +1,51 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "assistant/version"
5
+
6
+ require 'assistant/version'
5
7
 
6
8
  Gem::Specification.new do |spec|
7
- spec.name = "assistant"
8
- spec.version = Assistant::VERSION
9
- spec.authors = ["Ramon Rodrigues"]
10
- spec.email = ["cerberus.ramon@gmail.com"]
11
-
12
- spec.summary = 'Simple, composable services'
13
- spec.description = 'Simple, composable services'
14
- spec.homepage = ""
15
- spec.license = "MIT"
16
-
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- if spec.respond_to?(:metadata)
20
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
21
-
22
- spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
24
- spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
25
- else
26
- raise "RubyGems 2.0 or newer is required to protect against " \
27
- "public gem pushes."
28
- end
9
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
10
+
11
+ spec.name = 'assistant'
12
+ spec.version = Assistant::VERSION
13
+ spec.authors = ['Ramon Rodrigues']
14
+ spec.email = ['cerberus.ramon@gmail.com']
15
+
16
+ spec.summary = 'Simple, soft fail enabled, composable services'
17
+ spec.description = 'Simple, composable services'
18
+ spec.homepage = 'https://github.com/ramongr/assistant'
19
+ spec.license = 'MIT'
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'
29
27
 
30
28
  # Specify which files should be added to the gem when it is released.
31
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
30
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
33
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
34
32
  end
35
- spec.bindir = "exe"
36
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
- spec.require_paths = ["lib"]
38
33
 
39
- spec.add_development_dependency "bundler", "~> 1.17"
40
- spec.add_development_dependency "rake", "~> 10.0"
41
- spec.add_development_dependency "rspec", "~> 3.0"
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'
39
+ spec.add_development_dependency 'colorize', '~> 0.8.1'
40
+ spec.add_development_dependency 'factory_bot', '~> 6.2', '>= 6.2.1'
41
+ spec.add_development_dependency 'fasterer', '~> 0.10.1'
42
+ spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
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
+ spec.add_development_dependency 'rubocop-faker', '~> 1.1'
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'
42
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 ADDED
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'colorize'
4
+
5
+ VERSION_FILE = 'lib/assistant/version.rb'.freeze
6
+
7
+ def process_command(argument)
8
+ original_version = version_arr.join('.')
9
+ case argument
10
+ when '-h', '--help'
11
+ return puts help_message
12
+ when '--patch-version', '--patch'
13
+ bumped_version = [version_arr[0], version_arr[1], version_arr[2] + 1].join('.')
14
+ when '--minor-version', '--minor'
15
+ bumped_version = [version_arr[0], version_arr[1] + 1, 0].join('.')
16
+ when '--major-version', '--version'
17
+ bumped_version = [version_arr[0] + 1, 0, 0].join('.')
18
+ else
19
+ return puts "Invalid command #{argument}, use --help to see all available commands".colorize(:red)
20
+ end
21
+
22
+ bumped_version_file = version_file.to_s.gsub("VERSION = '#{original_version}'", "VERSION = '#{bumped_version}'")
23
+ write_file(bumped_version_file)
24
+ end
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
+
35
+ def write_file(text)
36
+ File.write(VERSION_FILE, text)
37
+ end
38
+
39
+ def version_arr
40
+ version_string.split('.').map(&:to_i)
41
+ end
42
+
43
+ def version_string
44
+ version_file[/(\d+.\d+.\d+)/]
45
+ end
46
+
47
+ def version_file
48
+ File.read(VERSION_FILE)
49
+ end
50
+
51
+ ARGV.each do |argument|
52
+ process_command(argument)
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
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Assistant
4
+ # Base class for the Assistant gem
5
+ class Service
6
+ include ::Assistant::LogList
7
+
8
+ class << self
9
+ def run(*args)
10
+ new(*args).run
11
+ end
12
+ end
13
+
14
+ def initialize(*args)
15
+ @inputs = args
16
+ @logs = []
17
+ end
18
+
19
+ def run
20
+ validate
21
+ { result: execute, status: status, warnings: warnings } if errors.empty?
22
+ end
23
+
24
+ def status
25
+ warnings.empty? ? :ok : :with_warnings
26
+ end
27
+
28
+ protected
29
+
30
+ def execute; end
31
+
32
+ def validate; end
33
+ end
34
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Assistant
2
- VERSION = "0.0.0"
4
+ VERSION = '0.0.2'
3
5
  end
data/lib/assistant.rb CHANGED
@@ -1,6 +1,10 @@
1
- require "assistant/version"
1
+ # frozen_string_literal: true
2
2
 
3
+ require 'assistant/log_item'
4
+ require 'assistant/log_list'
5
+ require 'assistant/service'
6
+ require 'assistant/version'
7
+
8
+ # Main Assistant lib entry point
3
9
  module Assistant
4
- class Error < StandardError; end
5
- # Your code goes here...
6
10
  end
metadata CHANGED
@@ -1,57 +1,261 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assistant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
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-01-13 00:00:00.000000000 Z
11
+ date: 2023-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: brakeman
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.2.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '5.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.2.3
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: bundler
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
37
  - - "~>"
18
38
  - !ruby/object:Gem::Version
19
- version: '1.17'
39
+ version: '2.3'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.3.19
20
43
  type: :development
21
44
  prerelease: false
22
45
  version_requirements: !ruby/object:Gem::Requirement
23
46
  requirements:
24
47
  - - "~>"
25
48
  - !ruby/object:Gem::Version
26
- version: '1.17'
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
73
+ - !ruby/object:Gem::Dependency
74
+ name: colorize
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 0.8.1
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: 0.8.1
87
+ - !ruby/object:Gem::Dependency
88
+ name: factory_bot
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '6.2'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 6.2.1
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '6.2'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 6.2.1
107
+ - !ruby/object:Gem::Dependency
108
+ name: fasterer
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: 0.10.1
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: 0.10.1
27
121
  - !ruby/object:Gem::Dependency
28
122
  name: rake
29
123
  requirement: !ruby/object:Gem::Requirement
30
124
  requirements:
31
125
  - - "~>"
32
126
  - !ruby/object:Gem::Version
33
- version: '10.0'
127
+ version: '13.0'
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 13.0.6
34
131
  type: :development
35
132
  prerelease: false
36
133
  version_requirements: !ruby/object:Gem::Requirement
37
134
  requirements:
38
135
  - - "~>"
39
136
  - !ruby/object:Gem::Version
40
- version: '10.0'
137
+ version: '13.0'
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 13.0.6
41
141
  - !ruby/object:Gem::Dependency
42
142
  name: rspec
43
143
  requirement: !ruby/object:Gem::Requirement
44
144
  requirements:
45
145
  - - "~>"
46
146
  - !ruby/object:Gem::Version
47
- version: '3.0'
147
+ version: '3.12'
48
148
  type: :development
49
149
  prerelease: false
50
150
  version_requirements: !ruby/object:Gem::Requirement
51
151
  requirements:
52
152
  - - "~>"
53
153
  - !ruby/object:Gem::Version
54
- version: '3.0'
154
+ version: '3.12'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rspec-collection_matchers
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '1.2'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
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
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: 0.6.0
183
+ - !ruby/object:Gem::Dependency
184
+ name: rubocop
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
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'
197
+ - !ruby/object:Gem::Dependency
198
+ name: rubocop-faker
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '1.1'
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: '1.1'
211
+ - !ruby/object:Gem::Dependency
212
+ name: rubocop-performance
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - "~>"
216
+ - !ruby/object:Gem::Version
217
+ version: '1.17'
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: 1.17.1
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '1.17'
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
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
245
+ - !ruby/object:Gem::Dependency
246
+ name: rubocop-rspec
247
+ requirement: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '2.22'
252
+ type: :development
253
+ prerelease: false
254
+ version_requirements: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: '2.22'
55
259
  description: Simple, composable services
56
260
  email:
57
261
  - cerberus.ramon@gmail.com
@@ -59,28 +263,39 @@ executables: []
59
263
  extensions: []
60
264
  extra_rdoc_files: []
61
265
  files:
266
+ - ".circleci/config.yml"
267
+ - ".fasterer.yml"
268
+ - ".github/dependabot.yml"
62
269
  - ".gitignore"
63
270
  - ".rspec"
64
- - ".travis.yml"
271
+ - ".rubocop.yml"
272
+ - ".rubocop_todo.yml"
273
+ - ".ruby-version"
65
274
  - CODE_OF_CONDUCT.md
66
275
  - Gemfile
276
+ - Gemfile.lock
67
277
  - LICENSE.txt
68
278
  - README.md
69
279
  - Rakefile
70
280
  - assistant.gemspec
71
281
  - bin/console
72
282
  - bin/setup
283
+ - bin/version
73
284
  - lib/assistant.rb
285
+ - lib/assistant/log_item.rb
286
+ - lib/assistant/log_list.rb
287
+ - lib/assistant/service.rb
74
288
  - lib/assistant/version.rb
75
- homepage: ''
289
+ homepage: https://github.com/ramongr/assistant
76
290
  licenses:
77
291
  - MIT
78
292
  metadata:
79
293
  allowed_push_host: https://rubygems.org
80
- homepage_uri: ''
81
- source_code_uri: 'TODO: Put your gem''s public repo URL here.'
82
- changelog_uri: 'TODO: Put your gem''s CHANGELOG.md URL here.'
83
- post_install_message:
294
+ changelog_uri: https://github.com/ramongr/assistant/blob/main/CODE_OF_CONDUCT.md
295
+ homepage_uri: https://github.com/ramongr/assistant
296
+ rubygems_mfa_required: 'true'
297
+ source_code_uri: https://github.com/ramongr/assistant
298
+ post_install_message:
84
299
  rdoc_options: []
85
300
  require_paths:
86
301
  - lib
@@ -88,16 +303,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
303
  requirements:
89
304
  - - ">="
90
305
  - !ruby/object:Gem::Version
91
- version: '0'
306
+ version: 2.7.6
92
307
  required_rubygems_version: !ruby/object:Gem::Requirement
93
308
  requirements:
94
309
  - - ">="
95
310
  - !ruby/object:Gem::Version
96
311
  version: '0'
97
312
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.6.14.4
100
- signing_key:
313
+ rubygems_version: 3.1.6
314
+ signing_key:
101
315
  specification_version: 4
102
- summary: Simple, composable services
316
+ summary: Simple, soft fail enabled, composable services
103
317
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.4.10
7
- before_install: gem install bundler -v 1.17.3