assistant 0.0.0 → 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
- 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