stimpack 1.0.0.alpha5 → 1.0.0.alpha6
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/lib/stimpack.rb +5 -16
- data/lib/stimpack/integrations.rb +2 -3
- data/lib/stimpack/integrations/factory_bot.rb +3 -3
- data/lib/stimpack/integrations/rails.rb +30 -0
- data/lib/stimpack/integrations/rspec.rb +2 -2
- data/lib/stimpack/pack.rb +51 -0
- data/lib/stimpack/pack/configuration.rb +25 -0
- data/lib/stimpack/packs.rb +19 -20
- data/lib/stimpack/railtie.rb +2 -6
- data/lib/stimpack/stim.rb +16 -7
- data/lib/stimpack/version.rb +1 -1
- metadata +8 -6
- data/lib/stimpack/settings.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7e4f58a5817580fd238b6a209d51565f992d7c39ade6003338d168c2a52235b
|
4
|
+
data.tar.gz: 372c732e00ab4fb1c301e8c44ff483954c8fd9864166712e9a42dff124d9bfb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03fbcedb9c236fe384c124a7ca8f923a1717862d648f134a5954960136b33e2297b2c803e7335af22fe0cc8212e8420cdac1131618c5abfdb353975550e96c3c
|
7
|
+
data.tar.gz: 107de7c60b5dc14f02196bc04df5ea933122038a0fae17fac9a144ecfc9b0e22a3ede60cd28699061475771bcc056bf3c26b9df7620b47b7a2d54022e9c28f8d
|
data/lib/stimpack.rb
CHANGED
@@ -5,36 +5,25 @@ module Stimpack
|
|
5
5
|
extend ActiveSupport::Autoload
|
6
6
|
|
7
7
|
autoload :Integrations
|
8
|
+
autoload :Pack
|
8
9
|
autoload :Packs
|
9
10
|
autoload :Railtie
|
10
|
-
autoload :Settings
|
11
11
|
autoload :Stim
|
12
12
|
|
13
13
|
class Error < StandardError; end
|
14
14
|
|
15
15
|
class << self
|
16
|
-
def
|
17
|
-
@started = @started ? return : true
|
18
|
-
|
16
|
+
def load(app)
|
19
17
|
Packs.resolve
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
def finalize!
|
25
|
-
@finalized = @finalized ? return : true
|
19
|
+
Integrations::Rails.install(app)
|
20
|
+
Integrations::FactoryBot.install(app)
|
21
|
+
Integrations::RSpec.install(app)
|
26
22
|
end
|
27
23
|
|
28
24
|
def [](name)
|
29
25
|
Packs[name.to_s]
|
30
26
|
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def install_integrations
|
35
|
-
Integrations::FactoryBot.install
|
36
|
-
Integrations::RSpec.install
|
37
|
-
end
|
38
27
|
end
|
39
28
|
end
|
40
29
|
|
@@ -2,9 +2,8 @@ require "active_support"
|
|
2
2
|
|
3
3
|
module Stimpack
|
4
4
|
module Integrations
|
5
|
-
extend ActiveSupport::Autoload
|
6
|
-
|
7
|
-
autoload :RSpec, "stimpack/integrations/rspec"
|
8
5
|
autoload :FactoryBot, "stimpack/integrations/factory_bot"
|
6
|
+
autoload :Rails, "stimpack/integrations/rails"
|
7
|
+
autoload :RSpec, "stimpack/integrations/rspec"
|
9
8
|
end
|
10
9
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Stimpack
|
2
2
|
module Integrations
|
3
3
|
class FactoryBot
|
4
|
-
def self.install
|
5
|
-
return unless
|
4
|
+
def self.install(app)
|
5
|
+
return unless app.config.respond_to?(:factory_bot)
|
6
6
|
|
7
7
|
Packs.each do |pack|
|
8
|
-
|
8
|
+
app.config.factory_bot.definition_file_paths << pack.relative_path.join("spec/factories").to_s
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stimpack
|
4
|
+
module Integrations
|
5
|
+
class Rails
|
6
|
+
PATHS = %w(
|
7
|
+
app
|
8
|
+
app/controllers
|
9
|
+
app/channels
|
10
|
+
app/helpers
|
11
|
+
app/models
|
12
|
+
app/mailers
|
13
|
+
app/views
|
14
|
+
lib
|
15
|
+
lib/tasks
|
16
|
+
config
|
17
|
+
config/locales
|
18
|
+
config/initializers
|
19
|
+
).freeze
|
20
|
+
|
21
|
+
def self.install(app)
|
22
|
+
Packs.each do |pack|
|
23
|
+
PATHS.each do |path|
|
24
|
+
app.paths[path] << pack.path.join(path)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Stimpack
|
2
2
|
module Integrations
|
3
3
|
class RSpec
|
4
|
-
def self.install
|
4
|
+
def self.install(app)
|
5
5
|
return unless defined?(::RSpec)
|
6
6
|
|
7
7
|
Packs.each do |pack|
|
8
|
-
::RSpec.configuration.pattern.concat(",#{pack.
|
8
|
+
::RSpec.configuration.pattern.concat(",#{pack.relative_path.join("spec/**/*_spec.rb")}")
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stimpack
|
4
|
+
class Pack
|
5
|
+
autoload :Configuration, "stimpack/pack/configuration"
|
6
|
+
|
7
|
+
attr_reader :name
|
8
|
+
attr_reader :path
|
9
|
+
attr_reader :engine
|
10
|
+
|
11
|
+
def self.root
|
12
|
+
@root ||= Rails.root.join("packs")
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(path)
|
16
|
+
@path = path
|
17
|
+
@name = path.relative_path_from(self.class.root)
|
18
|
+
|
19
|
+
if config.engine?
|
20
|
+
@engine = create_engine
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def relative_path
|
25
|
+
@relative_path ||= path.relative_path_from(Rails.root)
|
26
|
+
end
|
27
|
+
|
28
|
+
def config
|
29
|
+
@config ||= Configuration.new(self)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def create_engine
|
35
|
+
namespace = create_namespace(name)
|
36
|
+
stim = Stim.new(self, namespace)
|
37
|
+
namespace.const_set("Engine", Class.new(Rails::Engine)).include(stim)
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_namespace(name)
|
41
|
+
namespace = ActiveSupport::Inflector.camelize(name)
|
42
|
+
namespace.split("::").reduce(Object) do |base, mod|
|
43
|
+
if base.const_defined?(mod)
|
44
|
+
base.const_get(mod)
|
45
|
+
else
|
46
|
+
base.const_set(mod, Module.new)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stimpack
|
4
|
+
class Pack
|
5
|
+
class Configuration
|
6
|
+
FILE = "package.yml"
|
7
|
+
KEY = "metadata"
|
8
|
+
|
9
|
+
def initialize(pack)
|
10
|
+
@pack = pack
|
11
|
+
end
|
12
|
+
|
13
|
+
def engine
|
14
|
+
data.fetch("engine", false)
|
15
|
+
end
|
16
|
+
alias_method :engine?, :engine
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def data
|
21
|
+
@data ||= YAML.load_file(@pack.path.join(FILE)).fetch(KEY, {}).freeze
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/stimpack/packs.rb
CHANGED
@@ -1,32 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "active_support"
|
2
4
|
require "pathname"
|
3
5
|
require "rails"
|
4
6
|
|
5
7
|
module Stimpack
|
6
8
|
module Packs
|
7
|
-
|
8
|
-
PACK_CLASS = "Pack".freeze
|
9
|
+
PACK_CLASS = "Pack"
|
9
10
|
|
10
11
|
class << self
|
11
12
|
def resolve
|
12
|
-
|
13
|
-
|
14
|
-
create(path.relative_path_from(PATH).to_s, path.expand_path)
|
15
|
-
end
|
16
|
-
end
|
13
|
+
# Gather all the directories with package config files.
|
14
|
+
paths = filter(Pack.root.glob("**/#{Pack::Configuration::FILE}").map(&:dirname).sort)
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
# Create thes packs.
|
17
|
+
paths.each do |path|
|
18
|
+
pack = Pack.new(path)
|
19
|
+
@packs[pack.name] = pack
|
20
|
+
end
|
23
21
|
end
|
24
22
|
|
25
23
|
def find(path)
|
26
24
|
path = "#{path}/"
|
27
25
|
|
28
26
|
@packs.values.find do |pack|
|
29
|
-
path.start_with?("#{pack.
|
27
|
+
path.start_with?("#{pack.path}/")
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -40,13 +38,14 @@ module Stimpack
|
|
40
38
|
|
41
39
|
private
|
42
40
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
41
|
+
def filter(paths)
|
42
|
+
# Reject all paths that are nested since they might be just packwerk
|
43
|
+
# packages instead of packs.
|
44
|
+
paths.reject do |path|
|
45
|
+
path = "#{path}/"
|
46
|
+
paths.any? do |other_path|
|
47
|
+
other_path = "#{other_path}/"
|
48
|
+
path != other_path && path.start_with?(other_path)
|
50
49
|
end
|
51
50
|
end
|
52
51
|
end
|
data/lib/stimpack/railtie.rb
CHANGED
@@ -2,12 +2,8 @@ require "rails"
|
|
2
2
|
|
3
3
|
module Stimpack
|
4
4
|
class Railtie < Rails::Railtie
|
5
|
-
config.before_configuration do
|
6
|
-
Stimpack.
|
7
|
-
end
|
8
|
-
|
9
|
-
config.after_initialize do
|
10
|
-
Stimpack.finalize!
|
5
|
+
config.before_configuration do |app|
|
6
|
+
Stimpack.load(app)
|
11
7
|
end
|
12
8
|
end
|
13
9
|
end
|
data/lib/stimpack/stim.rb
CHANGED
@@ -1,19 +1,28 @@
|
|
1
1
|
module Stimpack
|
2
2
|
class Stim < Module
|
3
|
-
def initialize(
|
4
|
-
@
|
3
|
+
def initialize(pack, namespace)
|
4
|
+
@pack = pack
|
5
5
|
@namespace = namespace
|
6
6
|
super()
|
7
7
|
end
|
8
8
|
|
9
9
|
def included(engine)
|
10
|
-
engine.
|
11
|
-
engine.settings = @settings
|
12
|
-
engine.called_from = @settings.path
|
10
|
+
engine.called_from = @pack.path
|
13
11
|
engine.extend(ClassMethods)
|
12
|
+
engine.isolate_namespace(@namespace)
|
14
13
|
|
15
|
-
|
16
|
-
|
14
|
+
# Set all of these paths to nil because we want the Rails integration to take
|
15
|
+
# care of them. The purpose of this Engine is really just for the namespace
|
16
|
+
# isolation.
|
17
|
+
(Stimpack::Integrations::Rails::PATHS +
|
18
|
+
# In addition to the paths we've delegated to the main app, we don't allow
|
19
|
+
# Engine Packs to have various capabilities.
|
20
|
+
%w(
|
21
|
+
config/environments
|
22
|
+
db/migrate
|
23
|
+
)
|
24
|
+
).uniq.each do |path|
|
25
|
+
engine.paths[path] = nil
|
17
26
|
end
|
18
27
|
end
|
19
28
|
|
data/lib/stimpack/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.alpha6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngan Pham
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -65,10 +65,12 @@ files:
|
|
65
65
|
- lib/stimpack.rb
|
66
66
|
- lib/stimpack/integrations.rb
|
67
67
|
- lib/stimpack/integrations/factory_bot.rb
|
68
|
+
- lib/stimpack/integrations/rails.rb
|
68
69
|
- lib/stimpack/integrations/rspec.rb
|
70
|
+
- lib/stimpack/pack.rb
|
71
|
+
- lib/stimpack/pack/configuration.rb
|
69
72
|
- lib/stimpack/packs.rb
|
70
73
|
- lib/stimpack/railtie.rb
|
71
|
-
- lib/stimpack/settings.rb
|
72
74
|
- lib/stimpack/stim.rb
|
73
75
|
- lib/stimpack/version.rb
|
74
76
|
homepage: https://github.com/Gusto/stimpack
|
@@ -77,7 +79,7 @@ metadata:
|
|
77
79
|
homepage_uri: https://github.com/Gusto/stimpack
|
78
80
|
source_code_uri: https://github.com/Gusto/stimpack
|
79
81
|
changelog_uri: https://github.com/Gusto/stimpack/blob/master/CHANGELOG.md
|
80
|
-
post_install_message:
|
82
|
+
post_install_message:
|
81
83
|
rdoc_options: []
|
82
84
|
require_paths:
|
83
85
|
- lib
|
@@ -93,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
95
|
version: 1.3.1
|
94
96
|
requirements: []
|
95
97
|
rubygems_version: 3.1.2
|
96
|
-
signing_key:
|
98
|
+
signing_key:
|
97
99
|
specification_version: 4
|
98
100
|
summary: A Rails helper to package your code.
|
99
101
|
test_files: []
|
data/lib/stimpack/settings.rb
DELETED
@@ -1,33 +0,0 @@
|
|
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
|