diffend 0.2.40 → 0.2.45
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.github/workflows/ci.yml +3 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +23 -1
- data/Gemfile.lock +3 -2
- data/Rakefile +43 -0
- data/certs/mensfeld.pem +21 -21
- data/diffend.gemspec +1 -1
- data/lib/diffend/commands.rb +2 -0
- data/lib/diffend/configs/error_messages.rb +11 -0
- data/lib/diffend/configs/validator.rb +22 -0
- data/lib/diffend/errors.rb +2 -0
- data/lib/diffend/execute.rb +4 -3
- data/lib/diffend/handle_errors/report.rb +4 -4
- data/lib/diffend/integration_repository.rb +92 -0
- data/lib/diffend/local_context/host.rb +12 -1
- data/lib/diffend/local_context/packages.rb +10 -27
- data/lib/diffend/plugin.rb +3 -0
- data/lib/diffend/repository.rb +109 -0
- data/lib/diffend/request_object.rb +1 -1
- data/lib/diffend/request_verdict.rb +4 -4
- data/lib/diffend/shell.rb +44 -0
- data/lib/diffend/track.rb +4 -4
- data/lib/diffend/version.rb +1 -1
- 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_17/install_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock/Gemfile.lock +21 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_added_gem/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_changed_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_locked_gem_version/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_removed_gem/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_platforms/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_platforms/Gemfile +10 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_platforms/Gemfile.lock +30 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_platforms/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_platforms/gem-with-two-platforms.gemspec +16 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_sources/Gemfile.lock +19 -0
- data/repositories/bundler_2_2_17/install_with_gemfile_lock_with_two_sources/README.md +1 -0
- data/repositories/bundler_2_2_17/install_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/install_without_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_2_17/install_without_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock/Gemfile +5 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_added_gem/Gemfile +6 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_added_gem/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_sources/Gemfile +6 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_sources/Gemfile.lock +42 -0
- data/repositories/bundler_2_2_17/update_with_gemfile_lock_with_two_sources/README.md +1 -0
- data/repositories/bundler_2_2_17/update_without_gemfile_lock/.diffend.yml +3 -0
- data/repositories/bundler_2_2_17/update_without_gemfile_lock/Gemfile +5 -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 +214 -31
- metadata.gz.sig +0 -0
- data/certs/tomaszpajor.pem +0 -25
@@ -39,8 +39,7 @@ module Diffend
|
|
39
39
|
::Bundler.ui.silence { instance.resolve }
|
40
40
|
|
41
41
|
case command
|
42
|
-
when Commands::INSTALL, Commands::EXEC, Commands::SECURE then instance.
|
43
|
-
when Commands::UPDATE then instance.build_update
|
42
|
+
when Commands::INSTALL, Commands::EXEC, Commands::SECURE, Commands::UPDATE, Commands::ADD then instance.build
|
44
43
|
else
|
45
44
|
raise ArgumentError, "invalid command: #{command}"
|
46
45
|
end
|
@@ -63,37 +62,21 @@ module Diffend
|
|
63
62
|
# Resolve definition
|
64
63
|
def resolve
|
65
64
|
@cached ? @definition.resolve_with_cache! : @definition.resolve_remotely!
|
66
|
-
end
|
67
|
-
|
68
|
-
# Build install specification
|
69
|
-
#
|
70
|
-
# @return [Hash]
|
71
|
-
def build_install
|
72
|
-
hash = build_main
|
73
|
-
|
74
|
-
@definition.specs.each do |spec|
|
75
|
-
next if skip?(spec.source)
|
76
|
-
|
77
|
-
locked_spec = @locked_specs.find { |s| s.name == spec.name }
|
78
|
-
|
79
|
-
hash['dependencies'][spec.name] = {
|
80
|
-
'platform' => build_spec_platform(spec, locked_spec),
|
81
|
-
'source' => build_spec_source(spec),
|
82
|
-
'type' => build_dependency_type(spec.name),
|
83
|
-
'versions' => build_versions(spec, locked_spec)
|
84
|
-
}
|
85
|
-
end
|
86
65
|
|
87
|
-
|
66
|
+
# Despite bundler not materializing resolution, we always need to do so to get all the
|
67
|
+
# gems details
|
68
|
+
@definition.specs
|
88
69
|
end
|
89
70
|
|
90
|
-
# Build
|
71
|
+
# Build specification
|
91
72
|
#
|
92
73
|
# @return [Hash]
|
93
|
-
def
|
74
|
+
def build
|
94
75
|
hash = build_main
|
95
76
|
|
96
|
-
@definition.
|
77
|
+
@definition.resolve.each do |spec|
|
78
|
+
# Skip metadata
|
79
|
+
next if spec.instance_variable_get(:@specification).nil?
|
97
80
|
next if skip?(spec.source)
|
98
81
|
|
99
82
|
locked_spec = @locked_specs.find { |s| s.name == spec.name }
|
@@ -117,8 +100,8 @@ module Diffend
|
|
117
100
|
def build_main
|
118
101
|
{
|
119
102
|
'dependencies' => {},
|
120
|
-
'sources' => build_sources,
|
121
103
|
'plugins' => {},
|
104
|
+
'sources' => build_sources,
|
122
105
|
'platforms' => @definition.platforms.map(&:to_s)
|
123
106
|
}
|
124
107
|
end
|
data/lib/diffend/plugin.rb
CHANGED
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
%w[
|
4
|
+
tmpdir
|
5
|
+
securerandom
|
6
|
+
].each(&method(:require))
|
7
|
+
|
8
|
+
module Diffend
|
9
|
+
# Repository for specs
|
10
|
+
class Repository
|
11
|
+
# Repositories path
|
12
|
+
REPOSITORIES_PATH = File.join(
|
13
|
+
File.expand_path('..', Bundler.bin_path),
|
14
|
+
'repositories'
|
15
|
+
).freeze
|
16
|
+
# List of supported repositories split by command
|
17
|
+
SUPPORTED = {
|
18
|
+
'install' => %w[
|
19
|
+
with_gemfile_lock
|
20
|
+
with_gemfile_lock_with_added_gem
|
21
|
+
with_gemfile_lock_with_changed_gem_version
|
22
|
+
with_gemfile_lock_with_locked_gem_version
|
23
|
+
with_gemfile_lock_with_removed_gem
|
24
|
+
with_gemfile_lock_with_two_platforms
|
25
|
+
with_gemfile_lock_with_two_primary_sources
|
26
|
+
with_gemfile_lock_with_two_sources
|
27
|
+
without_gemfile_lock
|
28
|
+
].freeze,
|
29
|
+
'update' => %w[
|
30
|
+
with_gemfile_lock
|
31
|
+
with_gemfile_lock_with_added_gem
|
32
|
+
with_gemfile_lock_with_removed_gem
|
33
|
+
with_gemfile_lock_with_two_primary_sources
|
34
|
+
with_gemfile_lock_with_two_sources
|
35
|
+
without_gemfile_lock
|
36
|
+
].freeze
|
37
|
+
}.freeze
|
38
|
+
|
39
|
+
attr_reader :name, :path
|
40
|
+
|
41
|
+
# @param command [String] command executed via bundler
|
42
|
+
# @param name [String] repository name
|
43
|
+
def initialize(command, name)
|
44
|
+
@command = command
|
45
|
+
@name = name
|
46
|
+
@path = File.join(Dir.tmpdir, SecureRandom.uuid)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Build repository path
|
50
|
+
#
|
51
|
+
# @return [String]
|
52
|
+
def orig_path
|
53
|
+
@orig_path ||= global_file_path(
|
54
|
+
File.join(
|
55
|
+
bundler_version_string,
|
56
|
+
"#{@command}_#{name}"
|
57
|
+
)
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Setup an isolated instance of a repository
|
62
|
+
def setup
|
63
|
+
FileUtils.cp_r(orig_path, path)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Clean isolated instance of a repository
|
67
|
+
def clean
|
68
|
+
FileUtils.rm_rf(path)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Execute tasks in an isolated instance of a repository
|
72
|
+
def isolate
|
73
|
+
setup
|
74
|
+
yield(path)
|
75
|
+
clean
|
76
|
+
end
|
77
|
+
|
78
|
+
# Build the path to a specified file within the repository
|
79
|
+
#
|
80
|
+
# @param file_name [String]
|
81
|
+
#
|
82
|
+
# @return [String]
|
83
|
+
def file_path(file_name)
|
84
|
+
File.join(
|
85
|
+
path,
|
86
|
+
file_name
|
87
|
+
)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Build global path
|
91
|
+
#
|
92
|
+
# @param file_name [String]
|
93
|
+
#
|
94
|
+
# @return [String]
|
95
|
+
def global_file_path(file_name)
|
96
|
+
File.join(
|
97
|
+
REPOSITORIES_PATH,
|
98
|
+
file_name
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Build bundler version string
|
103
|
+
#
|
104
|
+
# @return [String]
|
105
|
+
def bundler_version_string
|
106
|
+
@bundler_version_string ||= "bundler_#{Bundler::VERSION.tr('.', '_')}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -42,10 +42,10 @@ module Diffend
|
|
42
42
|
# @return [Diffend::RequestObject]
|
43
43
|
def build_request_object(config, payload)
|
44
44
|
Diffend::RequestObject.new(
|
45
|
-
config
|
46
|
-
|
47
|
-
payload
|
48
|
-
|
45
|
+
config,
|
46
|
+
config.commands_url,
|
47
|
+
payload,
|
48
|
+
:post
|
49
49
|
)
|
50
50
|
end
|
51
51
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
|
5
|
+
# Helper commands for running Linux shell commands
|
6
|
+
module Diffend
|
7
|
+
module Shell
|
8
|
+
class << self
|
9
|
+
# Allows to execute shell commands and handle errors, etc later
|
10
|
+
# (won't raise any errors but instead will catch all things)
|
11
|
+
# @param command_with_options [String] command that should be executed with
|
12
|
+
# all the arguments and options
|
13
|
+
# @param raise_on_invalid_exit [Boolean] raise exception when exit code is not 0
|
14
|
+
# @return [Hash] hash with 3 keys describing output
|
15
|
+
# (stdout, stderr, exit_code)
|
16
|
+
# @example Run ls
|
17
|
+
# SupportEngine::Shell.('ls') =>
|
18
|
+
# { stdout: "test.rb\n", stderr: '', exit_code: 0}
|
19
|
+
def call(command_with_options, raise_on_invalid_exit: true)
|
20
|
+
stdout_str, stderr_str, status = Open3.capture3(command_with_options)
|
21
|
+
|
22
|
+
result = {
|
23
|
+
stdout: stdout_str,
|
24
|
+
stderr: stderr_str,
|
25
|
+
exit_code: status.exitstatus
|
26
|
+
}
|
27
|
+
|
28
|
+
raise Diffend::Errors::FailedShellCommand, result.values.join(': ') \
|
29
|
+
if raise_on_invalid_exit && result[:exit_code] != 0
|
30
|
+
|
31
|
+
result
|
32
|
+
end
|
33
|
+
|
34
|
+
# @param path [String, Pathname] to a place where git repo is
|
35
|
+
# @param command [String] that we want to execute in path context
|
36
|
+
# @param raise_on_invalid_exit [Boolean] raise exception when exit code is not 0
|
37
|
+
# @return [Hash] hash with 3 keys describing output (stdout, stderr, exit_code)
|
38
|
+
def call_in_path(path, command, raise_on_invalid_exit: true)
|
39
|
+
command = ['cd', path.to_s, '&&', command]
|
40
|
+
call(command.join(' '), raise_on_invalid_exit: raise_on_invalid_exit)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/diffend/track.rb
CHANGED
@@ -62,10 +62,10 @@ module Diffend
|
|
62
62
|
# @return [Diffend::RequestObject]
|
63
63
|
def build_request_object(request_id)
|
64
64
|
Diffend::RequestObject.new(
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
@config,
|
66
|
+
@config.track_url(request_id),
|
67
|
+
{ id: request_id }.freeze,
|
68
|
+
:put
|
69
69
|
).freeze
|
70
70
|
end
|
71
71
|
end
|
data/lib/diffend/version.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
concurrent-ruby (1.0.5)
|
5
|
+
concurrent-ruby (1.0.5-java)
|
6
|
+
dry-core (0.4.7)
|
7
|
+
concurrent-ruby (~> 1.0)
|
8
|
+
mini_portile2 (2.4.0)
|
9
|
+
nokogiri (1.10.10)
|
10
|
+
mini_portile2 (~> 2.4.0)
|
11
|
+
nokogiri (1.10.10-java)
|
12
|
+
|
13
|
+
PLATFORMS
|
14
|
+
java
|
15
|
+
ruby
|
16
|
+
|
17
|
+
DEPENDENCIES
|
18
|
+
dry-core
|
19
|
+
nokogiri
|
20
|
+
|
21
|
+
BUNDLED WITH
|
22
|
+
2.1.4
|
data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
concurrent-ruby (1.0.5)
|
5
|
+
dry-core (0.4.7)
|
6
|
+
concurrent-ruby (~> 1.0)
|
7
|
+
dry-inflector (0.1.2)
|
8
|
+
|
9
|
+
PLATFORMS
|
10
|
+
java
|
11
|
+
ruby
|
12
|
+
|
13
|
+
DEPENDENCIES
|
14
|
+
dry-core (= 0.4.7)
|
15
|
+
dry-inflector
|
16
|
+
|
17
|
+
BUNDLED WITH
|
18
|
+
2.1.4
|
@@ -0,0 +1 @@
|
|
1
|
+
Bundle on both latest `ruby` and `jruby`
|
data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
concurrent-ruby (1.0.5)
|
5
|
+
concurrent-ruby (1.0.5-java)
|
6
|
+
dry-core (0.4.7)
|
7
|
+
concurrent-ruby (~> 1.0)
|
8
|
+
dry-inflector (0.1.2)
|
9
|
+
|
10
|
+
PLATFORMS
|
11
|
+
java
|
12
|
+
ruby
|
13
|
+
|
14
|
+
DEPENDENCIES
|
15
|
+
dry-core (= 0.4.7)
|
16
|
+
dry-inflector
|
17
|
+
|
18
|
+
BUNDLED WITH
|
19
|
+
2.1.4
|
@@ -0,0 +1,43 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
concurrent-ruby (1.1.6)
|
5
|
+
dry-configurable (0.11.5)
|
6
|
+
concurrent-ruby (~> 1.0)
|
7
|
+
dry-core (~> 0.4, >= 0.4.7)
|
8
|
+
dry-equalizer (~> 0.2)
|
9
|
+
dry-container (0.7.2)
|
10
|
+
concurrent-ruby (~> 1.0)
|
11
|
+
dry-configurable (~> 0.1, >= 0.1.3)
|
12
|
+
dry-core (0.4.9)
|
13
|
+
concurrent-ruby (~> 1.0)
|
14
|
+
dry-equalizer (0.3.0)
|
15
|
+
dry-inflector (0.2.0)
|
16
|
+
dry-logic (1.0.6)
|
17
|
+
concurrent-ruby (~> 1.0)
|
18
|
+
dry-core (~> 0.2)
|
19
|
+
dry-equalizer (~> 0.2)
|
20
|
+
dry-struct (1.3.0)
|
21
|
+
dry-core (~> 0.4, >= 0.4.4)
|
22
|
+
dry-equalizer (~> 0.3)
|
23
|
+
dry-types (~> 1.3)
|
24
|
+
ice_nine (~> 0.11)
|
25
|
+
dry-types (1.4.0)
|
26
|
+
concurrent-ruby (~> 1.0)
|
27
|
+
dry-container (~> 0.3)
|
28
|
+
dry-core (~> 0.4, >= 0.4.4)
|
29
|
+
dry-equalizer (~> 0.3)
|
30
|
+
dry-inflector (~> 0.1, >= 0.1.2)
|
31
|
+
dry-logic (~> 1.0, >= 1.0.2)
|
32
|
+
ice_nine (0.11.2)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
java
|
36
|
+
ruby
|
37
|
+
|
38
|
+
DEPENDENCIES
|
39
|
+
dry-core
|
40
|
+
dry-struct
|
41
|
+
|
42
|
+
BUNDLED WITH
|
43
|
+
2.1.4
|