double_take 0.2.0 → 0.2.1
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/.github/workflows/ruby.yml +67 -0
- data/.rubocop.yml +43 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +34 -1
- data/README.md +15 -4
- data/Rakefile +3 -1
- data/bin/console +2 -0
- data/double_take.gemspec +13 -12
- data/lib/double_take/clean.rb +1 -1
- data/lib/double_take/hook.rb +3 -3
- data/lib/double_take/version.rb +1 -1
- metadata +46 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9455c1db7368b61d5fe30f402cfc3a7e6af7571092361cb22bcc1bc810dc769
|
4
|
+
data.tar.gz: dbd6c295e58704c2ca28a65b0bc3dd1f6a106952e971f4ca8f99bc522820a5fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc7d049ead496d5edf7d47f76d13ee7dd2bb2debae26b73c21e9e17ad5912309e3a354a0790e4658ddbae6ff7e2d76eeea2b6f8615bcb6abcfcd161bfeb691fc
|
7
|
+
data.tar.gz: ac0217a8223410ff6f64150bd6543cebd25dfbc783e92235a8722a7773a38f2f2899d5741f76227409c6a38dd31b98c23f701a26a280077224829cb4a34093bf
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: CI
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master, te-test ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
lint:
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: 2.6
|
29
|
+
|
30
|
+
- name: Install dependencies
|
31
|
+
run: bundle install
|
32
|
+
|
33
|
+
- name: Run linting
|
34
|
+
run: bundle exec rubocop
|
35
|
+
|
36
|
+
test:
|
37
|
+
runs-on: ubuntu-latest
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- uses: actions/checkout@v2
|
41
|
+
- name: Set up Ruby
|
42
|
+
uses: ruby/setup-ruby@v1
|
43
|
+
with:
|
44
|
+
ruby-version: 2.6
|
45
|
+
|
46
|
+
- name: Install dependencies
|
47
|
+
run: bundle install
|
48
|
+
|
49
|
+
# Unfortunately, we can't use the `appraisal` gem and need to manually
|
50
|
+
# install each bundler version we want to test with.
|
51
|
+
- name: Install bundler v1.17.x
|
52
|
+
run: gem install bundler -v "~> 1.17.0"
|
53
|
+
|
54
|
+
- name: Run tests with bundler v1.17.x
|
55
|
+
run: TEST_BUNDLER_VERSION=1.17 bundle exec rake
|
56
|
+
|
57
|
+
- name: Install bundler v2.0.x
|
58
|
+
run: gem install bundler -v "~> 2.0.0"
|
59
|
+
|
60
|
+
- name: Run tests with bundler v2.0.x
|
61
|
+
run: bundle update --bundler && TEST_BUNDLER_VERSION=2.0 bundle exec rake
|
62
|
+
|
63
|
+
- name: Install bundler v2.1.x
|
64
|
+
run: gem install bundler -v "~> 2.1.0"
|
65
|
+
|
66
|
+
- name: Run tests with bundler v2.1.x
|
67
|
+
run: bundle update --bundler && TEST_BUNDLER_VERSION=2.1 bundle exec rake
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
|
4
|
+
Gemspec/RequiredRubyVersion:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Layout/MultilineMethodCallIndentation:
|
8
|
+
EnforcedStyle: indented
|
9
|
+
|
10
|
+
Metrics/AbcSize:
|
11
|
+
Max: 25
|
12
|
+
|
13
|
+
Metrics/BlockLength:
|
14
|
+
Exclude:
|
15
|
+
- spec/**/*.rb
|
16
|
+
- double_take.gemspec
|
17
|
+
|
18
|
+
Metrics/MethodLength:
|
19
|
+
Max: 15
|
20
|
+
|
21
|
+
Style/CommandLiteral:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
Style/Documentation:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
Style/ExpandPathArguments:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
Style/GuardClause:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
Style/IfUnlessModifier:
|
34
|
+
Enabled: false
|
35
|
+
|
36
|
+
Style/NegatedIf:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
Style/StringLiterals:
|
40
|
+
EnforcedStyle: double_quotes
|
41
|
+
|
42
|
+
Style/TrailingCommaInHashLiteral:
|
43
|
+
EnforcedStyleForMultiline: consistent_comma
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# double_take
|
2
2
|
|
3
|
+
## 0.2.1
|
4
|
+
- Added rubocop and fixed violations
|
5
|
+
- Added running test suite against bundler version 1.17.x to 2.1.x in CI
|
6
|
+
- Fixed bundler method deprecation warning
|
7
|
+
|
3
8
|
## 0.2.0
|
4
9
|
- Remove registering command and hooks at file loadtime
|
5
10
|
- Create method for loading and registering command and hooks and add to `plugins.rb`
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source "https://rubygems.org"
|
2
4
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
5
|
+
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
4
6
|
|
5
7
|
# Specify your gem's dependencies in double_take.gemspec
|
6
8
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,30 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
double_take (0.2.
|
4
|
+
double_take (0.2.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
ast (2.4.1)
|
10
|
+
byebug (11.1.3)
|
11
|
+
climate_control (0.2.0)
|
12
|
+
coderay (1.1.3)
|
9
13
|
diff-lcs (1.4.4)
|
14
|
+
method_source (1.0.0)
|
15
|
+
parallel (1.19.2)
|
16
|
+
parser (2.7.1.4)
|
17
|
+
ast (~> 2.4.1)
|
18
|
+
pry (0.13.1)
|
19
|
+
coderay (~> 1.1)
|
20
|
+
method_source (~> 1.0)
|
21
|
+
pry-byebug (3.9.0)
|
22
|
+
byebug (~> 11.0)
|
23
|
+
pry (~> 0.13.0)
|
24
|
+
rainbow (3.0.0)
|
10
25
|
rake (12.3.3)
|
26
|
+
regexp_parser (1.7.1)
|
27
|
+
rexml (3.2.4)
|
11
28
|
rspec (3.9.0)
|
12
29
|
rspec-core (~> 3.9.0)
|
13
30
|
rspec-expectations (~> 3.9.0)
|
@@ -21,15 +38,31 @@ GEM
|
|
21
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
22
39
|
rspec-support (~> 3.9.0)
|
23
40
|
rspec-support (3.9.3)
|
41
|
+
rubocop (0.90.0)
|
42
|
+
parallel (~> 1.10)
|
43
|
+
parser (>= 2.7.1.1)
|
44
|
+
rainbow (>= 2.2.2, < 4.0)
|
45
|
+
regexp_parser (>= 1.7)
|
46
|
+
rexml
|
47
|
+
rubocop-ast (>= 0.3.0, < 1.0)
|
48
|
+
ruby-progressbar (~> 1.7)
|
49
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
50
|
+
rubocop-ast (0.3.0)
|
51
|
+
parser (>= 2.7.1.4)
|
52
|
+
ruby-progressbar (1.10.1)
|
53
|
+
unicode-display_width (1.7.0)
|
24
54
|
|
25
55
|
PLATFORMS
|
26
56
|
ruby
|
27
57
|
|
28
58
|
DEPENDENCIES
|
29
59
|
bundler (>= 1.17.0, < 2.2)
|
60
|
+
climate_control
|
30
61
|
double_take!
|
62
|
+
pry-byebug
|
31
63
|
rake (~> 12.3.3)
|
32
64
|
rspec (~> 3.0)
|
65
|
+
rubocop (~> 0.90)
|
33
66
|
|
34
67
|
BUNDLED WITH
|
35
68
|
1.17.3
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# DoubleTake
|
1
|
+
# DoubleTake :eyes: :eyes:
|
2
2
|
|
3
3
|
DoubleTake is a [bundler plugin](https://bundler.io/v2.0/guides/bundler_plugins.html) that doubly bundles gems from multiple lockfiles for projects that are using a [dual boot strategy](https://www.youtube.com/watch?v=I-2Xy3RS1ns&t=368s).
|
4
4
|
|
@@ -12,7 +12,7 @@ Add this line to your application's Gemfile:
|
|
12
12
|
plugin "double_take"
|
13
13
|
```
|
14
14
|
|
15
|
-
_NOTE_: We use the `plugin` method, not `gem`.
|
15
|
+
_NOTE_: We use the `plugin` method, not `gem`. Did you do a ...double take? (I promise there won't be any more jokes)
|
16
16
|
|
17
17
|
And then execute:
|
18
18
|
|
@@ -22,9 +22,9 @@ And then execute:
|
|
22
22
|
|
23
23
|
The plugin is installed with `bundle install`. It will also install all gems from both `Gemfile.lock` and `Gemfile_next.lock` on the initial `bundle` and every subsequent one as well.
|
24
24
|
|
25
|
-
_NOTE_: This plugin does not generate a `Gemfile_next.lock`, keep both lockfiles in sync over gem bumps, nor does it implement any strategy for bifurcating the `Gemfile` to load different gems. For those reasons, this plugin pairs really well with [`bootboot`](https://github.com/Shopify/bootboot). For more info on dual booting I recommend reading
|
25
|
+
_NOTE_: This plugin does not generate a `Gemfile_next.lock`, keep both lockfiles in sync over gem bumps, nor does it implement any strategy for bifurcating the `Gemfile` to load different gems. For those reasons, this plugin pairs really well with [`bootboot`](https://github.com/Shopify/bootboot). For more info on dual booting I recommend reading the `README` for `bootboot`.
|
26
26
|
|
27
|
-
As mentioned in the `bootboot` plugin the `Gemfile` needs to be bifurcated with the environment variable `DEPENDENCIES_NEXT`.
|
27
|
+
As mentioned in the `bootboot` plugin the `Gemfile` needs to be bifurcated with the environment variable `DEPENDENCIES_NEXT`. As of now, this library does not support custom environment variables for bifurcating.
|
28
28
|
|
29
29
|
|
30
30
|
### Clean
|
@@ -39,12 +39,23 @@ It accepts all options that bundler's clean command does:
|
|
39
39
|
$ bundle double_take clean --force
|
40
40
|
|
41
41
|
|
42
|
+
### Supported Versions
|
43
|
+
This plugin is intended to be used with `bundler` versions 1.17.x to 2.1.x. The test suite is run against 1.17.x, 2.0.x, and 2.1.x in CI.
|
44
|
+
|
45
|
+
|
42
46
|
## Development
|
43
47
|
|
44
48
|
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.
|
45
49
|
|
46
50
|
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 tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
47
51
|
|
52
|
+
|
53
|
+
### Testing Versions
|
54
|
+
To run the test suite against a specific version of bundler you can use the `TEST_BUNDLER_VERSION` environment variable. It supports full versions ie. `1.17.3` or abbreviated minor level versions ie. `2.0` and will choose the latest patch version. If a version is not specified the default bundler version will be used. This can all be verified with output that is printed before the spec suite runs.
|
55
|
+
|
56
|
+
Because of the backward incompatibilities between versions 1.x and 2.x you will have to run `bundle update --bundler` to properly test for 2.x versions. Please do not commit the changed `Gemfile.lock` if you are contributing code.
|
57
|
+
|
58
|
+
|
48
59
|
## Contributing
|
49
60
|
|
50
61
|
Bug reports and pull requests are welcome on GitHub at https://github.com/zoso10/double_take. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/double_take.gemspec
CHANGED
@@ -5,14 +5,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require "double_take/version"
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name
|
9
|
-
spec.version
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
8
|
+
spec.name = "double_take"
|
9
|
+
spec.version = DoubleTake::VERSION
|
10
|
+
spec.authors = ["Tyler Ewing"]
|
11
|
+
spec.email = ["tewing10@gmail.com"]
|
12
12
|
|
13
|
-
spec.summary
|
14
|
-
spec.homepage
|
15
|
-
spec.license
|
13
|
+
spec.summary = "A bundler plugin to install multiple sets of dependencies."
|
14
|
+
spec.homepage = "https://github.com/zoso10/double_take"
|
15
|
+
spec.license = "MIT"
|
16
16
|
|
17
17
|
if spec.respond_to?(:metadata)
|
18
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
@@ -22,16 +22,17 @@ Gem::Specification.new do |spec|
|
|
22
22
|
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
27
|
-
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
25
|
+
spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
|
28
26
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
29
27
|
end
|
30
|
-
spec.bindir
|
31
|
-
spec.executables
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
32
30
|
spec.require_paths = ["lib"]
|
33
31
|
|
34
32
|
spec.add_development_dependency "bundler", ">= 1.17.0", "< 2.2"
|
33
|
+
spec.add_development_dependency "climate_control"
|
34
|
+
spec.add_development_dependency "pry-byebug"
|
35
35
|
spec.add_development_dependency "rake", "~> 12.3.3"
|
36
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
|
+
spec.add_development_dependency "rubocop", "~> 0.90"
|
37
38
|
end
|
data/lib/double_take/clean.rb
CHANGED
data/lib/double_take/hook.rb
CHANGED
@@ -24,8 +24,8 @@ module DoubleTake
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def bundle_next(unlock = EMPTY_UNLOCK)
|
28
|
-
return if ENV["DEPENDENCIES_NEXT"] || !
|
27
|
+
def bundle_next(unlock = EMPTY_UNLOCK, next_lockfile = GEMFILE_NEXT_LOCK)
|
28
|
+
return if ENV["DEPENDENCIES_NEXT"] || !next_lockfile.file?
|
29
29
|
|
30
30
|
# this method memoizes an instance of the current definition
|
31
31
|
# so we need to fill that cache for other bundler internals to use
|
@@ -33,7 +33,7 @@ module DoubleTake
|
|
33
33
|
|
34
34
|
DoubleTake.with_dependency_next do
|
35
35
|
next_definition = Bundler::Definition
|
36
|
-
.build(GEMFILE,
|
36
|
+
.build(GEMFILE, next_lockfile, unlock)
|
37
37
|
|
38
38
|
Bundler.ui.confirm("Installing bundle for NEXT")
|
39
39
|
|
data/lib/double_take/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: double_take
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Ewing
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,6 +30,34 @@ dependencies:
|
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2.2'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: climate_control
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pry-byebug
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
33
61
|
- !ruby/object:Gem::Dependency
|
34
62
|
name: rake
|
35
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,6 +86,20 @@ dependencies:
|
|
58
86
|
- - "~>"
|
59
87
|
- !ruby/object:Gem::Version
|
60
88
|
version: '3.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rubocop
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0.90'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0.90'
|
61
103
|
description:
|
62
104
|
email:
|
63
105
|
- tewing10@gmail.com
|
@@ -65,8 +107,10 @@ executables: []
|
|
65
107
|
extensions: []
|
66
108
|
extra_rdoc_files: []
|
67
109
|
files:
|
110
|
+
- ".github/workflows/ruby.yml"
|
68
111
|
- ".gitignore"
|
69
112
|
- ".rspec"
|
113
|
+
- ".rubocop.yml"
|
70
114
|
- ".travis.yml"
|
71
115
|
- CHANGELOG.md
|
72
116
|
- CODE_OF_CONDUCT.md
|