ruby_workspace_manager 0.4.0 → 0.5.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 +4 -4
- data/lib/rwm/gemfile.rb +42 -2
- data/lib/rwm/rails.rb +18 -0
- data/lib/rwm/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dab8a0ae74fbf4b09e06f997a9b88d3d80e535b16c290eca3d7429fc67c1e3cd
|
|
4
|
+
data.tar.gz: dec2cd0382c7613fa43f62294a7ed32254355046ce33e903d023bde7cc6a2cc9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 228e51efcfe4f4ec0a230eb1fd2d7c56f67464d961d6427c7df81f2da3648573920bb84b24b73d9874e461ab34ba35d1f3c2de6e8bdc442139509887ee5b50f9
|
|
7
|
+
data.tar.gz: 391aa7d70d6c236a99a79c02832ffc3dc22b5d897c1c6b83b3ab8d22efae9be9214c673015a69a8273ff743df85053c0b721e8fd5b607bf3424a485ebd0716bb
|
data/lib/rwm/gemfile.rb
CHANGED
|
@@ -13,8 +13,15 @@
|
|
|
13
13
|
|
|
14
14
|
require "bundler"
|
|
15
15
|
require "open3"
|
|
16
|
+
require "set"
|
|
16
17
|
|
|
17
18
|
module Rwm
|
|
19
|
+
@resolved_libs = Set.new
|
|
20
|
+
|
|
21
|
+
def self.resolved_libs
|
|
22
|
+
@resolved_libs
|
|
23
|
+
end
|
|
24
|
+
|
|
18
25
|
module GemfileDsl
|
|
19
26
|
def rwm_workspace_root
|
|
20
27
|
@rwm_workspace_root ||= begin
|
|
@@ -26,8 +33,41 @@ module Rwm
|
|
|
26
33
|
end
|
|
27
34
|
|
|
28
35
|
def rwm_lib(name, **opts)
|
|
29
|
-
|
|
30
|
-
|
|
36
|
+
name = name.to_s
|
|
37
|
+
@rwm_resolved ||= Set.new
|
|
38
|
+
return if @rwm_resolved.include?(name)
|
|
39
|
+
|
|
40
|
+
@rwm_resolved.add(name)
|
|
41
|
+
Rwm.resolved_libs.add(name)
|
|
42
|
+
|
|
43
|
+
path = File.join(rwm_workspace_root, "libs", name)
|
|
44
|
+
gem(name, **opts, path: path)
|
|
45
|
+
|
|
46
|
+
# Resolve transitive workspace deps from the target lib's Gemfile
|
|
47
|
+
target_gemfile = File.join(path, "Gemfile")
|
|
48
|
+
return unless File.exist?(target_gemfile)
|
|
49
|
+
|
|
50
|
+
scan_transitive_deps(target_gemfile).each { |dep_name| rwm_lib(dep_name) }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def scan_transitive_deps(gemfile_path)
|
|
56
|
+
sandbox = Bundler::Dsl.new
|
|
57
|
+
sandbox.eval_gemfile(gemfile_path)
|
|
58
|
+
|
|
59
|
+
libs_prefix = File.join(rwm_workspace_root, "libs") + "/"
|
|
60
|
+
gemfile_dir = File.dirname(gemfile_path)
|
|
61
|
+
|
|
62
|
+
sandbox.dependencies.each_with_object([]) do |dep, result|
|
|
63
|
+
source = dep.source
|
|
64
|
+
next unless source.is_a?(Bundler::Source::Path)
|
|
65
|
+
|
|
66
|
+
dep_path = File.expand_path(source.path.to_s, gemfile_dir)
|
|
67
|
+
next unless dep_path.start_with?(libs_prefix)
|
|
68
|
+
|
|
69
|
+
result << File.basename(dep_path)
|
|
70
|
+
end
|
|
31
71
|
end
|
|
32
72
|
|
|
33
73
|
end
|
data/lib/rwm/rails.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Rails integration for RWM workspaces.
|
|
4
|
+
#
|
|
5
|
+
# Usage in config/application.rb:
|
|
6
|
+
#
|
|
7
|
+
# require_relative "boot"
|
|
8
|
+
# require "rwm/rails"
|
|
9
|
+
# Rwm.require_libs
|
|
10
|
+
# require "rails"
|
|
11
|
+
|
|
12
|
+
require "rwm/gemfile"
|
|
13
|
+
|
|
14
|
+
module Rwm
|
|
15
|
+
def self.require_libs
|
|
16
|
+
self.resolved_libs.each { |name| require name }
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/rwm/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_workspace_manager
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Siddharth Bhatt
|
|
@@ -43,6 +43,7 @@ files:
|
|
|
43
43
|
- lib/rwm/git_hooks.rb
|
|
44
44
|
- lib/rwm/overcommit.rb
|
|
45
45
|
- lib/rwm/package.rb
|
|
46
|
+
- lib/rwm/rails.rb
|
|
46
47
|
- lib/rwm/rake.rb
|
|
47
48
|
- lib/rwm/task_cache.rb
|
|
48
49
|
- lib/rwm/task_runner.rb
|