inoculate 0.0.0 → 0.2.0

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: 5c70e4eab6fb2335d6f85faf1ed3d9a7ffbbcd4adb3e5aba1bc634963b1d655f
4
- data.tar.gz: 1194422c0091c941bc9ed5738098ce91a4ea6f07f6d2b1b0fa024d23ee27bf60
3
+ metadata.gz: e63449f9ee05019e70acf85faafd0f2adf6554704f560de31b66b12c01e54aeb
4
+ data.tar.gz: e6975710a5802d37bd4b84de1345dbd10a10a5cf8538096cd8ffea8459997af9
5
5
  SHA512:
6
- metadata.gz: b757fd3dddb407d98f71696dc3f64d115e18e3d8123049a57a6ed1e0c3e3b82da50d93890a53944af1572cf28b9c3902de2be89d7a8c1547cca68acdef36c57b
7
- data.tar.gz: 3da07d78b270f86f6ea28c807e72b4dec29d45e6c28db301dc2c2f2cc9e75107e56ec359e5f4133f312d412e74a1772ade84edf0ba6b83c2465f485ff04833fd
6
+ metadata.gz: 95e7e8d09278118af12987096c2919419a66b6ea298d6556a3e7df113403e0fa4edd363a1d19172eef8d4739ffdf10b4e8180b19151cdd19361d3c2ccd861200
7
+ data.tar.gz: 9dd927feda03995336037f58b86e9c97be8e2bf83f4ac8a101ee67b10e0d40106bdf0f62a138ef046135ef24f759074c289ef61153c8044d02db08b63e4b20be
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
- ## v0.0.0 — 2022-10-05
1
+ ## v0.2.0 \[2022-10-11]
2
2
 
3
- * Initial gem setup
3
+ * Build modules at initialization time so that usage is always thread-safe.
4
+
5
+ ## v0.1.0 \[2022-10-10]
6
+
7
+ * Add transient dependency registration.
8
+ * Add initialization process for gem.
9
+
10
+ ## v0.0.0 \[2022-10-05]
11
+
12
+ * Initial gem setup.
data/README.md CHANGED
@@ -3,45 +3,180 @@
3
3
  Inoculate is a small, thread-safe dependency injection library configured entirely with Ruby.
4
4
  It provides several life-cycles and provides dependency access through private accessors.
5
5
 
6
- ## Installation
6
+ [![Gem Version](https://badge.fury.io/rb/inoculate.svg)](https://badge.fury.io/rb/inoculate)
7
+
8
+ ---
9
+
10
+ ## What's in the box?
11
+ ✅ Simple usage documentation written to get started fast. [Check it out!](#quick-start)
12
+
13
+ 📚 YARD generated API documentation for the library. [Check it out!](https://tinychameleon.github.io/inoculate/)
14
+
15
+ 🤖 RBS types for your type checking wants. [Check it out!](./sig/inoculate.rbs)
16
+
17
+ 💎 Tests against many Ruby versions. [Check it out!](#supported-ruby-versions)
18
+
19
+ 🔒 MFA protection on all gem owners. [Check it out!](https://rubygems.org/gems/inoculate)
20
+
21
+ ---
22
+
23
+ 1. [Quick Start](#quick-start)
24
+ 2. [Usage](#usage)
25
+ 1. [Dependency Life Cycles](#dependency-life-cycles)
26
+ 1. [Transient](#transient)
27
+ 2. [Renaming the Declaration API](#renaming-the-declaration-api)
28
+ 3. [Hide Your Dependency on Inoculate](#hide-your-dependency-on-inoculate)
29
+ 3. [Installation](#installation)
30
+ 1. [Supported Ruby Versions](#supported-ruby-versions)
31
+
32
+ ## Quick Start
33
+ Create an initialization file for your dependencies and start registering them.
34
+
35
+ ```ruby
36
+ require "inoculate"
7
37
 
8
- Add this line to your application's Gemfile:
38
+ Inoculate.initialize do |config|
39
+ config.transient(:counter) { Counter.new }
40
+ end
41
+ ```
42
+
43
+ To take advantage of dependency injection in tests, initialize based on the run-time environment.
44
+
45
+ ```ruby
46
+ # config/environments/test.rb
47
+ require "inoculate"
48
+
49
+ Inoculate.initialize do |config|
50
+ config.transient(:counter) { instance_double(Counter) }
51
+ end
52
+ ```
53
+
54
+ Finally, declare your dependencies (which are injected as included modules).
9
55
 
10
56
  ```ruby
11
- gem 'inoculate'
57
+ require "inoculate"
58
+
59
+ class HistogramGraph
60
+ include Inoculate::Porter
61
+ inoculate_with :counter
62
+
63
+ def to_s
64
+ counter.to_s
65
+ end
66
+ end
12
67
  ```
13
68
 
14
- And then execute:
69
+ ## Usage
15
70
 
16
- $ bundle install
71
+ ### Dependency Life Cycles
72
+ #### Transient
73
+ Transient dependencies are constructed for each call of the dependency method.
17
74
 
18
- Or install it yourself as:
75
+ ```ruby
76
+ class Counter
77
+ attr_reader :count
78
+
79
+ def initialize
80
+ @count = 0
81
+ end
82
+
83
+ def inc
84
+ @count += 1
85
+ end
86
+ end
87
+
88
+ Inoculate.initialize do |config|
89
+ config.transient(:counter) { Counter.new }
90
+ end
91
+
92
+ class Example
93
+ include Inoculate::Porter
94
+ inoculate_with :counter
95
+
96
+ def to_s
97
+ counter.inc
98
+ "Count is: #{counter.count}"
99
+ end
100
+ end
101
+
102
+ puts Example.new
103
+ ```
19
104
 
20
- $ gem install inoculate
105
+ This results in:
21
106
 
22
- ## Supported Ruby Versions
107
+ ```
108
+ Count is: 0
109
+ => nil
110
+ ```
23
111
 
112
+ ### Renaming the Declaration API
113
+ The `inoculate_with` API is named to avoid immediate collisions with other modules
114
+ and code you may have. You can use it as-is, or rename it to something you see fit
115
+ for your project.
116
+
117
+ ```ruby
118
+ require "inoculate"
119
+
120
+ class HistogramGraph
121
+ include Inoculate::Porter[:inject]
122
+ inject :counter
123
+ end
124
+ ```
125
+
126
+ ### Hide Your Dependency on Inoculate
127
+ Writing `Inocuate::Porter` everywhere in your code is probably going to get old fast,
128
+ feel free to hide it behind a base class or common included module.
129
+
130
+ ```ruby
131
+ # Make it available to all Rails controllers.
132
+ class ApplicationController < ActionController::Base
133
+ include Inoculate::Porter[:dependencies]
134
+ end
135
+ ```
136
+
137
+ ## Installation
138
+ Inoculate is a pure ruby library and does not rely on any compiled dependencies.
139
+
140
+ Install it by adding it to your gemfile and then running `bundle install`
141
+
142
+ ```ruby
143
+ gem "inoculate"
144
+ ```
145
+
146
+ Or manually install it with `gem`
147
+
148
+ ```shell
149
+ $ gem install inoculate
150
+ ```
151
+
152
+ ### Supported Ruby Versions
24
153
  Inoculate is tested against the following Ruby versions:
25
154
 
26
- - 2.7.6
27
- - 3.0.4
28
- - 3.1.2
155
+ - 2.7
156
+ - 3.0
157
+ - 3.1
29
158
  - 3.2-rc
30
159
 
31
- ## Usage
160
+ ## Development
161
+ After checking out the repo:
32
162
 
33
- TODO: Write usage instructions here
163
+ 1. run `bin/setup` to install dependencies.
164
+ 2. run `rake spec` to run the tests.
165
+ 3. run `rake spec:all` to run the tests across supported Ruby versions using Docker.
166
+ 4. run `rake standard` to see lint errors.
34
167
 
35
- ## Development
168
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
36
169
 
37
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
170
+ ### Local Installation
171
+ Run `bundle exec rake install` or `bundle exec rake install:local`.
38
172
 
39
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
173
+ ### Releasing
174
+ 1. Update the version number in `lib/inoculate/version.rb`.
175
+ 2. Run `bundle exec rake yard` to generate the latest documentation.
176
+ 3. Run `bundle exec rake release` to create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
40
177
 
41
178
  ## Contributing
42
-
43
179
  Bug reports and pull requests are welcome on GitHub at https://github.com/tinychameleon/inoculate.
44
180
 
45
181
  ## License
46
-
47
182
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/inoculate.gemspec CHANGED
@@ -21,15 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.metadata["source_code_uri"] = "https://github.com/tinychameleon/inoculate"
22
22
  spec.metadata["bug_tracker_uri"] = "https://github.com/tinychameleon/inoculate/issues"
23
23
  spec.metadata["changelog_uri"] = "https://github.com/tinychameleon/inoculate/blob/main/CHANGELOG.md"
24
- #spec.metadata["documentation_uri"] = "https://tinychameleon.github.io/inoculate"
24
+ spec.metadata["documentation_uri"] = "https://tinychameleon.github.io/inoculate"
25
25
 
26
- # Specify which files should be added to the gem when it is released.
27
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
- `git ls-files -z`.split("\x0").reject do |f|
30
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
31
- end
32
- end
26
+ spec.files = Dir["lib/**/*.rb", "sig/**/*.rbs", "inoculate.gemspec", "CHANGELOG.md", "README.md", "LICENSE.txt"]
33
27
  spec.bindir = "exe"
34
28
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
35
29
  spec.require_paths = ["lib"]
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Inoculate
4
+ # Configure dependencies through a restricted API during initialization.
5
+ #
6
+ # @since 0.1.0
7
+ class Configurer
8
+ def initialize(manufacturer)
9
+ @manufacturer = manufacturer
10
+ end
11
+
12
+ # Register a transient dependency.
13
+ # @see Manufacturer#transient
14
+ #
15
+ # @since 0.1.0
16
+ def transient(name, builder = nil, &block)
17
+ manufacturer.transient(name, builder, &block)
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :manufacturer
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Inoculate
4
+ # A namespace for error types.
5
+ #
6
+ # @since 0.1.0
7
+ module Errors
8
+ # Base type for all Inoculate errors.
9
+ #
10
+ # @since 0.1.0
11
+ class Error < StandardError; end
12
+
13
+ # Raised when the user attempts to register a dependency with a name that can't be converted to a symbol.
14
+ #
15
+ # @since 0.1.0
16
+ class InvalidName < Error; end
17
+
18
+ # Raised when the user attempts to register a name again.
19
+ #
20
+ # @since 0.1.0
21
+ class AlreadyRegistered < Error; end
22
+
23
+ # Raised when the user attempts to depend on an unknown dependency.
24
+ #
25
+ # @since 0.1.0
26
+ class UnknownName < Error; end
27
+
28
+ # Raised when the user attempts to register a dependency with a builder that can't be called.
29
+ #
30
+ # @since 0.1.0
31
+ class RequiresCallable < Error; end
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Inoculate is a small, thread-safe dependency injection library configured entirely with Ruby.
4
+ # It provides several life-cycles and provides dependency access through private accessors.
5
+ #
6
+ # @since 0.1.0
7
+ module Inoculate
8
+ # The main configuration entrypoint for Inoculate. Use this to set up named dependencies.
9
+ #
10
+ # @example A simple dependency configuration
11
+ # Inoculate.initialize do |config|
12
+ # config.transient(:http) { Faraday }
13
+ # end
14
+ #
15
+ # @example An environment-based dynamic dependency configuration
16
+ # Inoculate.initialize do |config|
17
+ # http_service = ENV["test"] ? -> { class_double(Faraday) } : -> { Faraday }
18
+ # config.transient(:http, http_service)
19
+ # end
20
+ #
21
+ # @yieldparam config [Configurer] a configuration object to register dependencies
22
+ #
23
+ # @since 0.1.0
24
+ def self.initialize
25
+ yield Configurer.new(manufacturer)
26
+ end
27
+
28
+ # @!visibility private
29
+ def self.manufacturer
30
+ @manufacturer ||= Manufacturer.new
31
+ end
32
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+
5
+ module Inoculate
6
+ # Registers and builds dependency injection modules.
7
+ # @todo singleton life cycle
8
+ # @todo instance life cycle
9
+ # @todo thread singleton life cycle
10
+ #
11
+ # @since 0.1.0
12
+ class Manufacturer
13
+ # The set of registered blueprints for dependency injection modules.
14
+ # @return [Hash<Symbol, Hash>]
15
+ #
16
+ # @since 0.1.0
17
+ attr_reader :registered_blueprints
18
+
19
+ def initialize
20
+ @registered_blueprints = {}
21
+ end
22
+
23
+ # Register a transient dependency.
24
+ #
25
+ # A transient dependency gets created anew every time it is retrieved through the accessor.
26
+ #
27
+ # @example With a block
28
+ # manufacturer.transient(:sha1_hasher) { Digest::SHA1.new }
29
+ #
30
+ # @example With a Proc
31
+ # manufacturer.transient(:sha1_hasher, -> { Digest::SHA1.new })
32
+ #
33
+ # @example With anything Callable
34
+ # class HashingBuilder
35
+ # def call = Digest::SHA1.new
36
+ # end
37
+ # manufacturer.transient(:sha1_hasher, HashingBuilder.new)
38
+ #
39
+ # @param name [Symbol, #to_sym] the dependency name which will be used to access it
40
+ # @param builder [#call] the callable to build the dependency
41
+ # @param block [Proc, nil] an alternative builder callable
42
+ #
43
+ # @raise [Errors::RequiresCallable] if no builder or block is provided
44
+ # @raise [Errors::InvalidName] if the name is not a symbol, cannot be converted to a symbol,
45
+ # or is not a valid attribute name
46
+ # @raise [Errors::AlreadyRegistered] if the name has been registered previously
47
+ #
48
+ # @since 0.1.0
49
+ def transient(name, builder = nil, &block)
50
+ validate_builder_name name
51
+ raise Errors::AlreadyRegistered if @registered_blueprints.has_key? name
52
+ raise Errors::RequiresCallable unless builder.respond_to?(:call) || block
53
+
54
+ blueprint_name = name.to_sym
55
+ @registered_blueprints[blueprint_name] = {
56
+ lifecycle: :transient,
57
+ builder: builder || block,
58
+ accessor_module: build_module(blueprint_name, :transient, builder || block)
59
+ }
60
+ end
61
+
62
+ private
63
+
64
+ def build_module(name, lifecycle, builder)
65
+ module_name = "I#{Digest::SHA1.hexdigest(name.to_s)}"
66
+ Providers.module_eval do
67
+ const_set(module_name, Module.new do
68
+ private define_method(name) { builder.call }
69
+ end)
70
+ end
71
+ end
72
+
73
+ def validate_builder_name(name)
74
+ raise Errors::InvalidName, "name must be a symbol or convert to one" unless name.respond_to? :to_sym
75
+ begin
76
+ Module.new { attr_reader name }
77
+ rescue NameError
78
+ raise Errors::InvalidName, "name must be a valid attr_reader"
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Inoculate
4
+ # Delivers requested dependencies to user classes.
5
+ #
6
+ # The default method +inoculate_with+ is named to avoid collisions with other
7
+ # libraries. You can alias it to something that makes your codebase legible.
8
+ #
9
+ # @example Getting Dependencies
10
+ # class HealthChecker
11
+ # include Inoculate::Porter
12
+ # inoculate_with :http_service
13
+ #
14
+ # def healthy?
15
+ # http_service.get("/health").ok?
16
+ # end
17
+ # end
18
+ #
19
+ # @example With Aliasing Include
20
+ # class Base
21
+ # include Inoculate::Porter[:depend_on]
22
+ # end
23
+ #
24
+ # class Child < Base
25
+ # depend_on :http_service
26
+ # end
27
+ #
28
+ # @since 0.1.0
29
+ module Porter
30
+ # Create a dependency injection module with your chosen method name.
31
+ #
32
+ # @param method_name [Symbol] the dependency injection method name
33
+ # @return [Module] a dependency injection module for inclusion in classes.
34
+ #
35
+ # @since 0.1.0
36
+ def self.[](method_name)
37
+ m = Module.new do
38
+ define_method(method_name) do |*names|
39
+ names.each do |name|
40
+ mod = Inoculate.manufacturer.registered_blueprints.dig(name, :accessor_module)
41
+ raise Errors::UnknownName if mod.nil?
42
+
43
+ include(mod)
44
+ end
45
+ end
46
+ end
47
+
48
+ inclusion = Module.new
49
+ inclusion.singleton_class.define_method(:included) do |base|
50
+ base.extend m
51
+ end
52
+ inclusion
53
+ end
54
+
55
+ # Including this module makes the default +inoculate_with+ method available.
56
+ #
57
+ # @param base [Class] the class this module is included within
58
+ #
59
+ # @since 0.1.0
60
+ def self.included(base)
61
+ base.include self[:inoculate_with]
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Inoculate
4
+ # A namespace for generated dependency injection modules.
5
+ #
6
+ # @since 0.1.0
7
+ module Providers
8
+ end
9
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Inoculate
4
- VERSION = "0.0.0"
4
+ # The library version.
5
+ VERSION = "0.2.0"
5
6
  end
data/lib/inoculate.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "inoculate/version"
4
-
5
- module Inoculate
6
- class Error < StandardError; end
7
- # Your code goes here...
8
- end
4
+ require_relative "inoculate/errors"
5
+ require_relative "inoculate/providers"
6
+ require_relative "inoculate/manufacturer"
7
+ require_relative "inoculate/porter"
8
+ require_relative "inoculate/configurer"
9
+ require_relative "inoculate/initialization"
data/sig/inoculate.rbs CHANGED
@@ -1,4 +1,56 @@
1
1
  module Inoculate
2
2
  VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
3
+
4
+ interface _ToSymbol
5
+ def to_sym: () -> Symbol
6
+ end
7
+
8
+ type callable = ^() -> untyped
9
+ type lifecycle_name = :transient
10
+ type builder_name = Symbol
11
+ type blueprint = { lifecycle: lifecycle_name, builder: callable, accessor_module: Module? }
12
+
13
+ module Errors
14
+ class Error < StandardError
15
+ end
16
+
17
+ class InvalidName < Error
18
+ end
19
+
20
+ class AlreadyRegistered < Error
21
+ end
22
+
23
+ class UnknownName < Error
24
+ end
25
+
26
+ class RequiresCallable < Error
27
+ end
28
+ end
29
+
30
+ module Providers
31
+ end
32
+
33
+ class Manufacturer
34
+ attr_reader registered_blueprints: Hash[builder_name, blueprint]
35
+ def transient: (builder_name | _ToSymbol, callable?) ?{ () -> void } -> void
36
+ end
37
+
38
+ class Configurer
39
+ def initialize: (Manufacturer) -> void
40
+
41
+ def transient: (builder_name | _ToSymbol, callable?) -> void
42
+
43
+ private
44
+
45
+ attr_reader manufacturer: Manufacturer
46
+ end
47
+
48
+ module Porter
49
+ def self.[]: (Symbol) -> Module
50
+ end
51
+
52
+ def self.initialize: () { (Configurer) -> void } -> void
53
+
54
+ # "Private"
55
+ def self.manufacturer: () -> Manufacturer
4
56
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inoculate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephan Tarulli
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-06 00:00:00.000000000 Z
11
+ date: 2022-10-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Inoculate is a small, thread-safe dependency injection library configured entirely with Ruby.
@@ -19,22 +19,17 @@ executables: []
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
- - ".idea/.gitignore"
23
- - ".idea/inspectionProfiles/Project_Default.xml"
24
- - ".idea/misc.xml"
25
- - ".idea/modules.xml"
26
- - ".idea/vcs.xml"
27
- - ".rspec"
28
- - ".standard.yml"
29
22
  - CHANGELOG.md
30
- - Gemfile
31
- - Gemfile.lock
32
23
  - LICENSE.txt
33
24
  - README.md
34
- - Rakefile
35
25
  - inoculate.gemspec
36
- - inoculate.iml
37
26
  - lib/inoculate.rb
27
+ - lib/inoculate/configurer.rb
28
+ - lib/inoculate/errors.rb
29
+ - lib/inoculate/initialization.rb
30
+ - lib/inoculate/manufacturer.rb
31
+ - lib/inoculate/porter.rb
32
+ - lib/inoculate/providers.rb
38
33
  - lib/inoculate/version.rb
39
34
  - sig/inoculate.rbs
40
35
  homepage: https://github.com/tinychameleon/inoculate
@@ -45,6 +40,7 @@ metadata:
45
40
  source_code_uri: https://github.com/tinychameleon/inoculate
46
41
  bug_tracker_uri: https://github.com/tinychameleon/inoculate/issues
47
42
  changelog_uri: https://github.com/tinychameleon/inoculate/blob/main/CHANGELOG.md
43
+ documentation_uri: https://tinychameleon.github.io/inoculate
48
44
  post_install_message:
49
45
  rdoc_options: []
50
46
  require_paths:
data/.idea/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- # Default ignored files
2
- /shelf/
3
- /workspace.xml
4
- # Editor-based HTTP Client requests
5
- /httpRequests/
6
- # Datasource local storage ignored files
7
- /dataSources/
8
- /dataSources.local.xml
@@ -1,8 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Rubocop" enabled="true" level="WARNING" enabled_by_default="true">
5
- <option name="myUseStandardGemIfPossible" value="true" />
6
- </inspection_tool>
7
- </profile>
8
- </component>
data/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="rbenv: 3.1.2" project-jdk-type="RUBY_SDK">
4
- <output url="file://$PROJECT_DIR$/out" />
5
- </component>
6
- </project>
data/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/inoculate.iml" filepath="$PROJECT_DIR$/inoculate.iml" />
6
- </modules>
7
- </component>
8
- </project>
data/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.standard.yml DELETED
@@ -1,3 +0,0 @@
1
- # For available configuration options, see:
2
- # https://github.com/testdouble/standard
3
- ruby_version: 2.7
data/Gemfile DELETED
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # Specify your gem's dependencies in inoculate.gemspec
6
- gemspec
7
-
8
- gem "rake", "~> 13.0"
9
- gem "rspec", "~> 3.11"
10
- gem "standard", "~> 1.16"
11
- gem "yard", "~> 0.9"
data/Gemfile.lock DELETED
@@ -1,67 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- inoculate (0.0.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (2.4.2)
10
- diff-lcs (1.5.0)
11
- json (2.6.2)
12
- parallel (1.22.1)
13
- parser (3.1.2.1)
14
- ast (~> 2.4.1)
15
- rainbow (3.1.1)
16
- rake (13.0.6)
17
- regexp_parser (2.6.0)
18
- rexml (3.2.5)
19
- rspec (3.11.0)
20
- rspec-core (~> 3.11.0)
21
- rspec-expectations (~> 3.11.0)
22
- rspec-mocks (~> 3.11.0)
23
- rspec-core (3.11.0)
24
- rspec-support (~> 3.11.0)
25
- rspec-expectations (3.11.1)
26
- diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.11.0)
28
- rspec-mocks (3.11.1)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.11.0)
31
- rspec-support (3.11.1)
32
- rubocop (1.35.1)
33
- json (~> 2.3)
34
- parallel (~> 1.10)
35
- parser (>= 3.1.2.1)
36
- rainbow (>= 2.2.2, < 4.0)
37
- regexp_parser (>= 1.8, < 3.0)
38
- rexml (>= 3.2.5, < 4.0)
39
- rubocop-ast (>= 1.20.1, < 2.0)
40
- ruby-progressbar (~> 1.7)
41
- unicode-display_width (>= 1.4.0, < 3.0)
42
- rubocop-ast (1.21.0)
43
- parser (>= 3.1.1.0)
44
- rubocop-performance (1.14.3)
45
- rubocop (>= 1.7.0, < 2.0)
46
- rubocop-ast (>= 0.4.0)
47
- ruby-progressbar (1.11.0)
48
- standard (1.16.1)
49
- rubocop (= 1.35.1)
50
- rubocop-performance (= 1.14.3)
51
- unicode-display_width (2.3.0)
52
- webrick (1.7.0)
53
- yard (0.9.28)
54
- webrick (~> 1.7.0)
55
-
56
- PLATFORMS
57
- x86_64-darwin-19
58
-
59
- DEPENDENCIES
60
- inoculate!
61
- rake (~> 13.0)
62
- rspec (~> 3.11)
63
- standard (~> 1.16)
64
- yard (~> 0.9)
65
-
66
- BUNDLED WITH
67
- 2.3.7
data/Rakefile DELETED
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
- require "yard"
6
-
7
- RSpec::Core::RakeTask.new(:spec)
8
-
9
- YARD::Rake::YardocTask.new do |t|
10
- t.files = %w[lib/**/*.rb - CHANGELOG.md]
11
- t.options = %w[--private -o ./docs]
12
- end
13
-
14
- require "standard/rake"
15
-
16
- task default: %i[spec standard]
data/inoculate.iml DELETED
@@ -1,75 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="RUBY_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$">
6
- <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
7
- <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
8
- <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
9
- </content>
10
- <orderEntry type="inheritedJdk" />
11
- <orderEntry type="sourceFolder" forTests="false" />
12
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, rbenv: 3.1.2) [gem]" level="application" />
13
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.7, rbenv: 3.1.2) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, rbenv: 3.1.2) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, rbenv: 3.1.2) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, rbenv: 3.1.2) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.1, rbenv: 3.1.2) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, rbenv: 3.1.2) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, rbenv: 3.1.2) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.6.0, rbenv: 3.1.2) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, rbenv: 3.1.2) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, rbenv: 3.1.2) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, rbenv: 3.1.2) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.1, rbenv: 3.1.2) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, rbenv: 3.1.2) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.1, rbenv: 3.1.2) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.35.1, rbenv: 3.1.2) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.21.0, rbenv: 3.1.2) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="rubocop-performance (v1.14.3, rbenv: 3.1.2) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, rbenv: 3.1.2) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="standard (v1.16.1, rbenv: 3.1.2) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.3.0, rbenv: 3.1.2) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="webrick (v1.7.0, rbenv: 3.1.2) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="yard (v0.9.28, rbenv: 3.1.2) [gem]" level="application" />
35
- </component>
36
- <component name="RakeTasksCache">
37
- <option name="myRootTask">
38
- <RakeTaskImpl id="rake">
39
- <subtasks>
40
- <RakeTaskImpl description="Build inoculate-0.0.0.gem into the pkg directory" fullCommand="build" id="build" />
41
- <RakeTaskImpl id="build">
42
- <subtasks>
43
- <RakeTaskImpl description="Generate SHA512 checksum if inoculate-0.0.0.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
44
- </subtasks>
45
- </RakeTaskImpl>
46
- <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
47
- <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
48
- <RakeTaskImpl description="Build and install inoculate-0.0.0.gem into system gems" fullCommand="install" id="install" />
49
- <RakeTaskImpl id="install">
50
- <subtasks>
51
- <RakeTaskImpl description="Build and install inoculate-0.0.0.gem into system gems without network access" fullCommand="install:local" id="local" />
52
- </subtasks>
53
- </RakeTaskImpl>
54
- <RakeTaskImpl description="Create tag v0.0.0 and build and push inoculate-0.0.0.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
55
- <RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
56
- <RakeTaskImpl description="Lint with the Standard Ruby style guide" fullCommand="standard" id="standard" />
57
- <RakeTaskImpl id="standard">
58
- <subtasks>
59
- <RakeTaskImpl description="Lint and automatically fix with the Standard Ruby style guide" fullCommand="standard:fix" id="fix" />
60
- </subtasks>
61
- </RakeTaskImpl>
62
- <RakeTaskImpl description="" fullCommand="default" id="default" />
63
- <RakeTaskImpl description="" fullCommand="release" id="release" />
64
- <RakeTaskImpl id="release">
65
- <subtasks>
66
- <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
67
- <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
68
- <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
69
- </subtasks>
70
- </RakeTaskImpl>
71
- </subtasks>
72
- </RakeTaskImpl>
73
- </option>
74
- </component>
75
- </module>