diffend 0.2.36 → 0.2.41
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.github/workflows/ci.yml +34 -8
- data/.ruby-version +1 -1
- data/CHANGELOG.md +31 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +11 -7
- data/Rakefile +40 -0
- data/lib/diffend/build_bundler_definition.rb +4 -4
- data/lib/diffend/bundle_secure.rb +23 -0
- data/lib/diffend/commands.rb +2 -0
- data/lib/diffend/config.rb +34 -7
- data/lib/diffend/configs/error_messages.rb +38 -0
- data/lib/diffend/configs/fetcher.rb +11 -28
- data/lib/diffend/configs/validator.rb +4 -34
- data/lib/diffend/enabled.rb +22 -0
- data/lib/diffend/errors.rb +2 -0
- data/lib/diffend/execute.rb +4 -4
- data/lib/diffend/handle_errors/report.rb +4 -4
- data/lib/diffend/integration_repository.rb +92 -0
- data/lib/diffend/local_context.rb +1 -1
- data/lib/diffend/local_context/host.rb +0 -12
- data/lib/diffend/local_context/packages.rb +36 -32
- data/lib/diffend/local_context/platform.rb +1 -1
- data/lib/diffend/logger.rb +9 -9
- data/lib/diffend/monitor.rb +32 -10
- data/lib/diffend/plugin.rb +12 -15
- data/lib/diffend/repository.rb +109 -0
- data/lib/diffend/request.rb +0 -1
- data/lib/diffend/request_object.rb +1 -1
- data/lib/diffend/request_verdict.rb +9 -9
- data/lib/diffend/shell.rb +44 -0
- data/lib/diffend/track.rb +4 -4
- data/lib/diffend/version.rb +1 -1
- data/plugins.rb +1 -0
- data/repositories/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock/Gemfile.lock +22 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +19 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/Gemfile.lock +43 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/.ruby-version +1 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/Gemfile +10 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/Gemfile.lock +32 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/gem-with-two-platforms.gemspec +16 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/Gemfile.lock +19 -0
- data/repositories/bundler_2_1_4/install_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/install_without_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock/Gemfile.lock +16 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/README.md +1 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/Gemfile.lock +43 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/README.md +1 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/Gemfile.lock +44 -0
- data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/README.md +1 -0
- data/repositories/bundler_2_1_4/update_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_1_4/update_without_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_1_4/update_without_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock/Gemfile.lock +21 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/Gemfile +10 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/Gemfile.lock +30 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/gem-with-two-platforms.gemspec +16 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/Gemfile.lock +19 -0
- data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/README.md +1 -0
- data/repositories/bundler_2_2_7/install_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/install_without_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_2_7/install_without_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/Gemfile.lock +42 -0
- data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/README.md +1 -0
- data/repositories/bundler_2_2_7/update_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_7/update_without_gemfile_lock/Gemfile +5 -0
- data/repositories/diffend.json +9 -0
- metadata +127 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cc35a87fc80048201e46cf210e72c4359849b9c17b3208a885e151c2384be274
|
|
4
|
+
data.tar.gz: c438271e070263543f0cc7ae84911631bc8f57dd4804d2fe58d529caf7929e49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6e41e7343c6c0f1137dab1999ceebc1c8df54c2950e92f68b592d4f2b03c5fc2e5817b9443068423f2ea1508cc78884c169a4551a61e2723bb5c931d6ce05ed4
|
|
7
|
+
data.tar.gz: 877952bdb836a09034b0e72862cf374a8049a46ee4b416125beaad3a9102b14a1d22878b4128e6efded825d0bc896fcf1873f046f111da9d5ced03907c2d3a1b
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -2,16 +2,23 @@ name: ci
|
|
|
2
2
|
|
|
3
3
|
jobs:
|
|
4
4
|
specs:
|
|
5
|
-
|
|
5
|
+
needs:
|
|
6
|
+
- diffend
|
|
7
|
+
- coditsu
|
|
6
8
|
|
|
9
|
+
runs-on: ubuntu-latest
|
|
7
10
|
strategy:
|
|
8
11
|
fail-fast: false
|
|
9
12
|
matrix:
|
|
10
13
|
ruby:
|
|
14
|
+
- '3.0'
|
|
11
15
|
- '2.7'
|
|
12
16
|
- '2.6'
|
|
13
17
|
- '2.5'
|
|
14
|
-
- 'jruby'
|
|
18
|
+
- 'jruby-9.2.14.0'
|
|
19
|
+
bundler:
|
|
20
|
+
- '2.1.4'
|
|
21
|
+
- '2.2.7'
|
|
15
22
|
include:
|
|
16
23
|
- ruby: '2.7'
|
|
17
24
|
coverage: 'true'
|
|
@@ -30,19 +37,38 @@ jobs:
|
|
|
30
37
|
uses: ruby/setup-ruby@v1
|
|
31
38
|
with:
|
|
32
39
|
ruby-version: ${{matrix.ruby}}
|
|
33
|
-
|
|
34
|
-
run: |
|
|
35
|
-
gem install bundler --no-document
|
|
40
|
+
bundler: ${{matrix.bundler}}
|
|
36
41
|
- name: Bundle install
|
|
37
42
|
env:
|
|
38
43
|
DIFFEND_DEVELOPMENT: true
|
|
39
44
|
run: |
|
|
40
|
-
bundle config path vendor/bundle
|
|
41
|
-
bundle install --jobs 4 --retry 3
|
|
45
|
+
bundle _${{matrix.bundler}}_ config path vendor/bundle
|
|
46
|
+
bundle _${{matrix.bundler}}_ install --jobs 4 --retry 3
|
|
42
47
|
- name: Run all tests
|
|
43
48
|
env:
|
|
44
49
|
GITHUB_COVERAGE: ${{matrix.coverage}}
|
|
45
|
-
run: bundle exec rspec
|
|
50
|
+
run: bundle _${{matrix.bundler}}_ exec rspec
|
|
51
|
+
- name: Run integration tests
|
|
52
|
+
run: bundle _${{matrix.bundler}}_ exec rake integration_suite
|
|
53
|
+
|
|
54
|
+
diffend:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
strategy:
|
|
57
|
+
fail-fast: false
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@v2
|
|
60
|
+
with:
|
|
61
|
+
fetch-depth: 0
|
|
62
|
+
- name: Set up Ruby
|
|
63
|
+
uses: ruby/setup-ruby@v1
|
|
64
|
+
with:
|
|
65
|
+
ruby-version: 3.0
|
|
66
|
+
- name: Install latest bundler
|
|
67
|
+
run: gem install bundler --no-document
|
|
68
|
+
- name: Install Diffend plugin
|
|
69
|
+
run: bundle plugin install diffend
|
|
70
|
+
- name: Bundle Secure
|
|
71
|
+
run: bundle secure
|
|
46
72
|
|
|
47
73
|
coditsu:
|
|
48
74
|
runs-on: ubuntu-latest
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.0.0
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
## [Unreleased][master]
|
|
4
|
+
- introduce integration specs ([#107](https://github.com/diffend-io/diffend-ruby/pull/107))
|
|
5
|
+
- use `Bundler::Definition.resolve` for specs ([#112](https://github.com/diffend-io/diffend-ruby/pull/112))
|
|
6
|
+
|
|
7
|
+
## [0.2.40] (2021-02-23)
|
|
8
|
+
- don't expose ips, we can identify instance by a hostname ([#108](https://github.com/diffend-io/diffend-ruby/pull/108))
|
|
9
|
+
- don't set `verify_mode` when creating request in `Diffend::Request`, use default value set by `use_ssl` flag instead ([#109](https://github.com/diffend-io/diffend-ruby/pull/109))
|
|
10
|
+
|
|
11
|
+
## [0.2.39] (2021-01-18)
|
|
12
|
+
- handle a case if we start to fast and some gems require things it may break the execution ([#101](https://github.com/diffend-io/diffend-ruby/pull/101))
|
|
13
|
+
|
|
14
|
+
## [0.2.38] (2021-01-15)
|
|
15
|
+
- allow executing `bundle secure` without plugin being present in the Gemfile ([#96](https://github.com/diffend-io/diffend-ruby/pull/96))
|
|
16
|
+
- be explicit about `Bundler` scope ([#97](https://github.com/diffend-io/diffend-ruby/pull/97))
|
|
17
|
+
- switch to exponential backoff in `Diffend::Monitor` ([#98](https://github.com/diffend-io/diffend-ruby/pull/98))
|
|
18
|
+
|
|
19
|
+
## [0.2.37] (2021-01-05)
|
|
20
|
+
- add support for ENV loaded at runtime ([#92](https://github.com/diffend-io/diffend-ruby/pull/92))
|
|
21
|
+
- allow us to have more control over config errors ([#91](https://github.com/diffend-io/diffend-ruby/pull/91))
|
|
22
|
+
- add `bundle secure` command ([#90](https://github.com/diffend-io/diffend-ruby/pull/90))
|
|
23
|
+
- test against bundler 2.1 and 2.2 ([#83](https://github.com/diffend-io/diffend-ruby/pull/83))
|
|
24
|
+
- test against ruby 3.0.0 ([#89](https://github.com/diffend-io/diffend-ruby/pull/89))
|
|
25
|
+
- simplify how we build full json in specs ([#82](https://github.com/diffend-io/diffend-ruby/pull/82))
|
|
26
|
+
- simplify how we build bundler json in specs ([#84](https://github.com/diffend-io/diffend-ruby/pull/84))
|
|
27
|
+
- simplify how we build diffend json in specs ([#85](https://github.com/diffend-io/diffend-ruby/pull/85))
|
|
28
|
+
- simplify how we build rubygems json in specs ([#86](https://github.com/diffend-io/diffend-ruby/pull/86))
|
|
29
|
+
- simplify how we build packages platforms json in specs ([#87](https://github.com/diffend-io/diffend-ruby/pull/87))
|
|
4
30
|
|
|
5
31
|
## [0.2.36] (2020-12-06)
|
|
6
32
|
- handle `Bundler::PermissionError` ([#79](https://github.com/diffend-io/diffend-ruby/pull/79))
|
|
@@ -102,7 +128,11 @@
|
|
|
102
128
|
|
|
103
129
|
- initial release
|
|
104
130
|
|
|
105
|
-
[master]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.
|
|
131
|
+
[master]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.40...HEAD
|
|
132
|
+
[0.2.40]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.39...v0.2.40
|
|
133
|
+
[0.2.39]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.38...v0.2.39
|
|
134
|
+
[0.2.38]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.37...v0.2.38
|
|
135
|
+
[0.2.37]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.36...v0.2.37
|
|
106
136
|
[0.2.36]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.35...v0.2.36
|
|
107
137
|
[0.2.35]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.34...v0.2.35
|
|
108
138
|
[0.2.34]: https://github.com/diffend-io/diffend-ruby/compare/v0.2.33...v0.2.34
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,36 +1,40 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
diffend (0.2.
|
|
4
|
+
diffend (0.2.41)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
8
8
|
specs:
|
|
9
|
+
byebug (11.1.3)
|
|
9
10
|
diff-lcs (1.4.4)
|
|
10
|
-
rake (13.0.
|
|
11
|
+
rake (13.0.3)
|
|
11
12
|
rspec (3.10.0)
|
|
12
13
|
rspec-core (~> 3.10.0)
|
|
13
14
|
rspec-expectations (~> 3.10.0)
|
|
14
15
|
rspec-mocks (~> 3.10.0)
|
|
15
|
-
rspec-core (3.10.
|
|
16
|
+
rspec-core (3.10.1)
|
|
16
17
|
rspec-support (~> 3.10.0)
|
|
17
|
-
rspec-expectations (3.10.
|
|
18
|
+
rspec-expectations (3.10.1)
|
|
18
19
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
19
20
|
rspec-support (~> 3.10.0)
|
|
20
|
-
rspec-mocks (3.10.
|
|
21
|
+
rspec-mocks (3.10.2)
|
|
21
22
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
22
23
|
rspec-support (~> 3.10.0)
|
|
23
|
-
rspec-support (3.10.
|
|
24
|
+
rspec-support (3.10.2)
|
|
24
25
|
|
|
25
26
|
PLATFORMS
|
|
26
27
|
java
|
|
27
28
|
ruby
|
|
29
|
+
universal-java-13
|
|
30
|
+
x86_64-darwin-19
|
|
28
31
|
|
|
29
32
|
DEPENDENCIES
|
|
30
33
|
bundler
|
|
34
|
+
byebug
|
|
31
35
|
diffend!
|
|
32
36
|
rake
|
|
33
37
|
rspec
|
|
34
38
|
|
|
35
39
|
BUNDLED WITH
|
|
36
|
-
2.
|
|
40
|
+
2.2.7
|
data/Rakefile
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
%w[
|
|
4
|
+
bundler/setup
|
|
5
|
+
].each(&method(:require))
|
|
6
|
+
|
|
7
|
+
require 'diffend/errors'
|
|
8
|
+
require 'diffend/config'
|
|
9
|
+
require 'diffend/shell'
|
|
10
|
+
require 'diffend/repository'
|
|
11
|
+
require 'diffend/integration_repository'
|
|
12
|
+
|
|
13
|
+
task :integration_suite do
|
|
14
|
+
Diffend::Repository::SUPPORTED.each do |command, repositories|
|
|
15
|
+
repositories.each do |repository_name|
|
|
16
|
+
repository = Diffend::IntegrationRepository.new(command, repository_name)
|
|
17
|
+
repository.repository.isolate do |path|
|
|
18
|
+
start = Time.now.to_f
|
|
19
|
+
|
|
20
|
+
repository.config?(path)
|
|
21
|
+
|
|
22
|
+
Bundler.with_unbundled_env do
|
|
23
|
+
repository.install_plugin(path)
|
|
24
|
+
|
|
25
|
+
cmd = Diffend::Shell.call_in_path(path, "bundle #{command}")
|
|
26
|
+
|
|
27
|
+
unless cmd[:exit_code].zero?
|
|
28
|
+
puts "#{repository.full_name} FAILED"
|
|
29
|
+
puts cmd[:stderr]
|
|
30
|
+
exit 1
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
took = Time.now.to_f - start
|
|
35
|
+
|
|
36
|
+
puts "#{repository.full_name} OK, took #{took.round(1)}s"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -10,14 +10,14 @@ module Diffend
|
|
|
10
10
|
# @param gemfile [String] path to Gemfile
|
|
11
11
|
# @param lockfile [String] path to Gemfile.lock
|
|
12
12
|
#
|
|
13
|
-
# @return [Bundler::Definition]
|
|
13
|
+
# @return [::Bundler::Definition]
|
|
14
14
|
def call(command, gemfile, lockfile)
|
|
15
15
|
unlock = command == 'update' ? true : nil
|
|
16
16
|
|
|
17
|
-
Bundler.configure
|
|
18
|
-
Bundler::Fetcher.disable_endpoint = nil
|
|
17
|
+
::Bundler.configure
|
|
18
|
+
::Bundler::Fetcher.disable_endpoint = nil
|
|
19
19
|
|
|
20
|
-
Bundler::Definition
|
|
20
|
+
::Bundler::Definition
|
|
21
21
|
.build(gemfile, lockfile, unlock)
|
|
22
22
|
.tap(&:validate_runtime!)
|
|
23
23
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Diffend
|
|
4
|
+
# Extend bundler with a new secure command to be able to run Diffend separately
|
|
5
|
+
class BundleSecure
|
|
6
|
+
::Bundler::Plugin::API.command(Diffend::Commands::SECURE, self)
|
|
7
|
+
|
|
8
|
+
# Execute diffend check
|
|
9
|
+
#
|
|
10
|
+
# @param _name [String] command name
|
|
11
|
+
# @param _args [Array] arguments from ARGV
|
|
12
|
+
def exec(_name, _args)
|
|
13
|
+
config = Diffend::Config.new(
|
|
14
|
+
command: Diffend::Commands::SECURE,
|
|
15
|
+
severity: Diffend::Logger::INFO
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
Diffend::LatestVersion.call(config)
|
|
19
|
+
|
|
20
|
+
Diffend::Execute.call(config)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/diffend/commands.rb
CHANGED
data/lib/diffend/config.rb
CHANGED
|
@@ -3,29 +3,50 @@
|
|
|
3
3
|
module Diffend
|
|
4
4
|
# Diffend config object
|
|
5
5
|
class Config
|
|
6
|
-
|
|
6
|
+
# Name of the diffend config file
|
|
7
|
+
FILENAME = '.diffend.yml'
|
|
8
|
+
|
|
9
|
+
attr_reader :project_id, :shareable_id, :shareable_key, :build_path, :env, :command, :errors
|
|
7
10
|
|
|
8
11
|
# Build diffend config object
|
|
9
12
|
#
|
|
13
|
+
# @param command [String] command executed via bundler
|
|
14
|
+
# @param severity [Integer] logging severity threshold
|
|
15
|
+
# @param build_path [String] path of the current build
|
|
16
|
+
#
|
|
10
17
|
# @return [Diffend::Config]
|
|
11
18
|
def initialize(command: nil, severity: nil, build_path: nil)
|
|
12
19
|
@log_level = severity
|
|
20
|
+
@errors = []
|
|
13
21
|
build(command, build_path)
|
|
14
|
-
|
|
22
|
+
Diffend::Configs::Validator.call(self)
|
|
15
23
|
end
|
|
16
24
|
|
|
25
|
+
# Initialize logger
|
|
17
26
|
def logger
|
|
18
27
|
@logger ||= Diffend::Logger.new(@log_level)
|
|
19
28
|
end
|
|
20
29
|
|
|
30
|
+
# @return [Boolean] true if config is valid, false otherwise
|
|
31
|
+
def valid?
|
|
32
|
+
@errors.empty?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @return [Boolean] true if we want to ignore errors, false otherwise
|
|
21
36
|
def ignore_errors?
|
|
22
37
|
@ignore_errors
|
|
23
38
|
end
|
|
24
39
|
|
|
40
|
+
# @return [Boolean] true if we are in development mode, false otherwise
|
|
25
41
|
def development?
|
|
26
42
|
@development
|
|
27
43
|
end
|
|
28
44
|
|
|
45
|
+
# @return [Boolean] true if we are in deployment mode, false otherwise
|
|
46
|
+
def deployment?
|
|
47
|
+
!%w[development test].include?(env)
|
|
48
|
+
end
|
|
49
|
+
|
|
29
50
|
# Provides diffend commands endpoint url
|
|
30
51
|
#
|
|
31
52
|
# @return [String]
|
|
@@ -51,19 +72,24 @@ module Diffend
|
|
|
51
72
|
"https://my.diffend.io/api/projects/#{project_id}/bundle/#{request_id}/track"
|
|
52
73
|
end
|
|
53
74
|
|
|
75
|
+
# Print config errors
|
|
76
|
+
def print_errors
|
|
77
|
+
@errors.each { |error| logger.fatal(error) }
|
|
78
|
+
end
|
|
79
|
+
|
|
54
80
|
private
|
|
55
81
|
|
|
82
|
+
# @param command [String] command executed via bundler
|
|
83
|
+
# @param build_path [String] path of the current build
|
|
56
84
|
def build(command, build_path)
|
|
57
85
|
build_path ||= File.expand_path('..', ::Bundler.bin_path)
|
|
58
|
-
hash = Diffend::Configs::Fetcher.call(
|
|
86
|
+
hash = Diffend::Configs::Fetcher.call(plugin_path, build_path)
|
|
59
87
|
hash['build_path'] = build_path
|
|
60
88
|
hash['command'] = command || build_command
|
|
61
89
|
|
|
62
90
|
hash.each { |key, value| instance_variable_set(:"@#{key}", value) }
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def validate
|
|
66
|
-
Diffend::Configs::Validator.call(self)
|
|
91
|
+
rescue Errors::MalformedConfigurationFile
|
|
92
|
+
@errors << Diffend::Configs::ErrorMessages.malformed_file
|
|
67
93
|
end
|
|
68
94
|
|
|
69
95
|
# Command that was run with bundle
|
|
@@ -73,6 +99,7 @@ module Diffend
|
|
|
73
99
|
ARGV.first || ::Bundler.feature_flag.default_cli_command.to_s
|
|
74
100
|
end
|
|
75
101
|
|
|
102
|
+
# @return [String] path to the plugin
|
|
76
103
|
def plugin_path
|
|
77
104
|
Pathname.new(File.expand_path('../..', __dir__))
|
|
78
105
|
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Diffend
|
|
4
|
+
# Module for all the components related to setting up the config
|
|
5
|
+
module Configs
|
|
6
|
+
# Class responsible for config error messages
|
|
7
|
+
module ErrorMessages
|
|
8
|
+
class << self
|
|
9
|
+
# @return [String] malformed configuration file message
|
|
10
|
+
def malformed_file
|
|
11
|
+
'Your Diffend configuration file is malformed. Please re-setup.'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Missing key message
|
|
15
|
+
#
|
|
16
|
+
# @param key [String] missing key
|
|
17
|
+
#
|
|
18
|
+
# @return [String]
|
|
19
|
+
def missing_key(key)
|
|
20
|
+
"Diffend configuration is missing #{key} key"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Invalid key message
|
|
24
|
+
#
|
|
25
|
+
# @param config [Diffend::Config]
|
|
26
|
+
# @param key [String] invalid key
|
|
27
|
+
#
|
|
28
|
+
# @return [String]
|
|
29
|
+
def invalid_key(config, key)
|
|
30
|
+
<<~MSG
|
|
31
|
+
Diffend configuration value for #{key} is invalid.
|
|
32
|
+
Expected #{Validator::KNOWN_KEYS[key].join(' or ')}, was #{config.public_send(key).class}.
|
|
33
|
+
MSG
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -11,7 +11,6 @@ module Diffend
|
|
|
11
11
|
# Class responsible for fetching the config from .diffend.yml
|
|
12
12
|
module Fetcher
|
|
13
13
|
class << self
|
|
14
|
-
# @param logger [Diffend::Logger]
|
|
15
14
|
# @param plugin_path [String] path of the plugin
|
|
16
15
|
# @param build_path [String] path of the current build
|
|
17
16
|
#
|
|
@@ -20,24 +19,9 @@ module Diffend
|
|
|
20
19
|
# @example
|
|
21
20
|
# details = Fetcher.new.call('./')
|
|
22
21
|
# details.build_path #=> './'
|
|
23
|
-
def call(
|
|
24
|
-
build(plugin_path, build_path)
|
|
25
|
-
rescue Errors::MalformedConfigurationFile
|
|
26
|
-
build_malformed_error_message(build_path)
|
|
27
|
-
.tap(&logger.method(:fatal))
|
|
28
|
-
|
|
29
|
-
raise Diffend::Errors::HandledException
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
# @param plugin_path [String] path of the plugin
|
|
35
|
-
# @param build_path [String] path of the current build
|
|
36
|
-
#
|
|
37
|
-
# @return [OpenStruct] open struct with config details
|
|
38
|
-
def build(plugin_path, build_path)
|
|
22
|
+
def call(plugin_path, build_path)
|
|
39
23
|
default_config = File.join(plugin_path, 'config', 'diffend.yml')
|
|
40
|
-
project_config = File.join(build_path,
|
|
24
|
+
project_config = File.join(build_path, Diffend::Config::FILENAME)
|
|
41
25
|
|
|
42
26
|
hash = read_file(default_config)
|
|
43
27
|
|
|
@@ -48,19 +32,18 @@ module Diffend
|
|
|
48
32
|
hash
|
|
49
33
|
end
|
|
50
34
|
|
|
51
|
-
|
|
52
|
-
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
# Load config file
|
|
38
|
+
#
|
|
39
|
+
# @param file_path [String]
|
|
40
|
+
#
|
|
41
|
+
# @return [Hash]
|
|
42
|
+
def read_file(file_path)
|
|
43
|
+
YAML.safe_load(ERB.new(File.read(file_path)).result)
|
|
53
44
|
rescue Psych::SyntaxError
|
|
54
45
|
raise Errors::MalformedConfigurationFile
|
|
55
46
|
end
|
|
56
|
-
|
|
57
|
-
# @return [String] malformed configuration file message
|
|
58
|
-
def build_malformed_error_message
|
|
59
|
-
<<~MSG
|
|
60
|
-
\nYour Diffend configuration file is malformed.\n
|
|
61
|
-
Please re-setup.\n
|
|
62
|
-
MSG
|
|
63
|
-
end
|
|
64
47
|
end
|
|
65
48
|
end
|
|
66
49
|
end
|