stimpack 0.0.1.alpha1 → 1.0.0.alpha5
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 +4 -4
- data/README.md +1 -2
- data/lib/stimpack.rb +37 -2
- data/lib/stimpack/integrations.rb +10 -0
- data/lib/stimpack/integrations/factory_bot.rb +13 -0
- data/lib/stimpack/integrations/rspec.rb +13 -0
- data/lib/stimpack/packs.rb +57 -0
- data/lib/stimpack/railtie.rb +13 -0
- data/lib/stimpack/settings.rb +33 -0
- data/lib/stimpack/stim.rb +26 -0
- data/lib/stimpack/version.rb +1 -1
- metadata +55 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21ba1439fa4a748325f454945071ef783c608ca679abcf6756300976afed414a
|
4
|
+
data.tar.gz: 4ca99c4daac00bb7c4c44e9c8f9a32e59019201dd3d84ca3717cdcaccb253103
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88dfe424e0df8beea1894aec9c1d67a7e5b4134464ab9162650fbf592e1d07afb3aa8fb81b355f900bb36614be6ae3048b1ac44675736b35dc18eda02cad01a9
|
7
|
+
data.tar.gz: d4d72de149d1f9ec3321e71e9c6980b9841535e1b737dd9979b3c68667306e5b531a88aa3f7ceffe4f8484ef1f43f32954448aa3f5c5f1528f55eef11548dcfe
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ TODO: Delete this and the text above, and describe your gem
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem
|
12
|
+
gem "stimpack"
|
13
13
|
```
|
14
14
|
|
15
15
|
And then execute:
|
@@ -33,4 +33,3 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
33
33
|
## Contributing
|
34
34
|
|
35
35
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ngan/stimpack.
|
36
|
-
|
data/lib/stimpack.rb
CHANGED
@@ -1,6 +1,41 @@
|
|
1
|
-
require "
|
1
|
+
require "active_support"
|
2
|
+
require "rails"
|
2
3
|
|
3
4
|
module Stimpack
|
5
|
+
extend ActiveSupport::Autoload
|
6
|
+
|
7
|
+
autoload :Integrations
|
8
|
+
autoload :Packs
|
9
|
+
autoload :Railtie
|
10
|
+
autoload :Settings
|
11
|
+
autoload :Stim
|
12
|
+
|
4
13
|
class Error < StandardError; end
|
5
|
-
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def start!
|
17
|
+
@started = @started ? return : true
|
18
|
+
|
19
|
+
Packs.resolve
|
20
|
+
|
21
|
+
install_integrations
|
22
|
+
end
|
23
|
+
|
24
|
+
def finalize!
|
25
|
+
@finalized = @finalized ? return : true
|
26
|
+
end
|
27
|
+
|
28
|
+
def [](name)
|
29
|
+
Packs[name.to_s]
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def install_integrations
|
35
|
+
Integrations::FactoryBot.install
|
36
|
+
Integrations::RSpec.install
|
37
|
+
end
|
38
|
+
end
|
6
39
|
end
|
40
|
+
|
41
|
+
require "stimpack/railtie"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Stimpack
|
2
|
+
module Integrations
|
3
|
+
class FactoryBot
|
4
|
+
def self.install
|
5
|
+
return unless Rails.configuration.respond_to?(:factory_bot)
|
6
|
+
|
7
|
+
Packs.each do |pack|
|
8
|
+
Rails.configuration.factory_bot.definition_file_paths << pack.settings.relative_path.join("spec/factories").to_s
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Stimpack
|
2
|
+
module Integrations
|
3
|
+
class RSpec
|
4
|
+
def self.install
|
5
|
+
return unless defined?(::RSpec)
|
6
|
+
|
7
|
+
Packs.each do |pack|
|
8
|
+
::RSpec.configuration.pattern.concat(",#{pack.settings.relative_path.join("spec/**/*_spec.rb")}")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require "active_support"
|
2
|
+
require "pathname"
|
3
|
+
require "rails"
|
4
|
+
|
5
|
+
module Stimpack
|
6
|
+
module Packs
|
7
|
+
PATH = Pathname.new("packs").freeze
|
8
|
+
PACK_CLASS = "Pack".freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def resolve
|
12
|
+
PATH.glob("**/#{Settings::PACK_CONFIG}").each do |path|
|
13
|
+
path = path.dirname
|
14
|
+
create(path.relative_path_from(PATH).to_s, path.expand_path)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(name, path)
|
19
|
+
settings = Settings.new(name, path)
|
20
|
+
namespace = create_namespace(settings.engine? ? Object : self, name)
|
21
|
+
stim = Stim.new(settings, namespace)
|
22
|
+
@packs[name] = namespace.const_set(PACK_CLASS, Class.new(Rails::Engine)).include(stim)
|
23
|
+
end
|
24
|
+
|
25
|
+
def find(path)
|
26
|
+
path = "#{path}/"
|
27
|
+
|
28
|
+
@packs.values.find do |pack|
|
29
|
+
path.start_with?("#{pack.root}/")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def [](name)
|
34
|
+
@packs[name]
|
35
|
+
end
|
36
|
+
|
37
|
+
def each(*args, &block)
|
38
|
+
@packs.each_value(*args, &block)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def create_namespace(base, name)
|
44
|
+
namespace = ActiveSupport::Inflector.camelize(name)
|
45
|
+
namespace.split("::").reduce(base) do |current_base, mod|
|
46
|
+
if current_base.const_defined?(mod)
|
47
|
+
current_base.const_get(mod)
|
48
|
+
else
|
49
|
+
current_base.const_set(mod, Module.new)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
@packs = {}
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stimpack
|
4
|
+
class Settings
|
5
|
+
PACK_CONFIG = "package.yml"
|
6
|
+
|
7
|
+
attr_reader :name
|
8
|
+
attr_reader :path
|
9
|
+
|
10
|
+
def initialize(name, path)
|
11
|
+
@name = name
|
12
|
+
@path = path
|
13
|
+
end
|
14
|
+
|
15
|
+
def relative_path
|
16
|
+
@path.relative_path_from(Rails.root)
|
17
|
+
end
|
18
|
+
|
19
|
+
def engine
|
20
|
+
config.fetch("engine", false)
|
21
|
+
end
|
22
|
+
alias_method :engine?, :engine
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def config
|
27
|
+
@config ||= begin
|
28
|
+
package_config = YAML.load_file(path.join(PACK_CONFIG))
|
29
|
+
package_config.fetch("metadata", {}).freeze
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Stimpack
|
2
|
+
class Stim < Module
|
3
|
+
def initialize(settings, namespace)
|
4
|
+
@settings = settings
|
5
|
+
@namespace = namespace
|
6
|
+
super()
|
7
|
+
end
|
8
|
+
|
9
|
+
def included(engine)
|
10
|
+
engine.attr_accessor(:settings)
|
11
|
+
engine.settings = @settings
|
12
|
+
engine.called_from = @settings.path
|
13
|
+
engine.extend(ClassMethods)
|
14
|
+
|
15
|
+
if @settings.engine?
|
16
|
+
engine.isolate_namespace(@namespace)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module ClassMethods
|
21
|
+
def find_root(_from)
|
22
|
+
called_from
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/stimpack/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 1.0.0.alpha5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngan Pham
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2021-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Package your code.
|
14
56
|
email:
|
15
57
|
- gusto-opensource-buildkite@gusto.com
|
16
58
|
executables: []
|
@@ -21,6 +63,13 @@ files:
|
|
21
63
|
- bin/console
|
22
64
|
- bin/setup
|
23
65
|
- lib/stimpack.rb
|
66
|
+
- lib/stimpack/integrations.rb
|
67
|
+
- lib/stimpack/integrations/factory_bot.rb
|
68
|
+
- lib/stimpack/integrations/rspec.rb
|
69
|
+
- lib/stimpack/packs.rb
|
70
|
+
- lib/stimpack/railtie.rb
|
71
|
+
- lib/stimpack/settings.rb
|
72
|
+
- lib/stimpack/stim.rb
|
24
73
|
- lib/stimpack/version.rb
|
25
74
|
homepage: https://github.com/Gusto/stimpack
|
26
75
|
licenses: []
|
@@ -36,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
36
85
|
requirements:
|
37
86
|
- - ">="
|
38
87
|
- !ruby/object:Gem::Version
|
39
|
-
version: 2.
|
88
|
+
version: '2.7'
|
40
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
90
|
requirements:
|
42
91
|
- - ">"
|
@@ -46,5 +95,5 @@ requirements: []
|
|
46
95
|
rubygems_version: 3.1.2
|
47
96
|
signing_key:
|
48
97
|
specification_version: 4
|
49
|
-
summary:
|
98
|
+
summary: A Rails helper to package your code.
|
50
99
|
test_files: []
|