diffend 0.2.37 → 0.2.42

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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.github/workflows/ci.yml +27 -3
  5. data/CHANGELOG.md +27 -1
  6. data/Gemfile.lock +4 -4
  7. data/Rakefile +40 -0
  8. data/lib/diffend/build_bundler_definition.rb +4 -4
  9. data/lib/diffend/bundle_secure.rb +1 -3
  10. data/lib/diffend/errors.rb +2 -0
  11. data/lib/diffend/execute.rb +6 -5
  12. data/lib/diffend/handle_errors/report.rb +4 -4
  13. data/lib/diffend/integration_repository.rb +92 -0
  14. data/lib/diffend/local_context.rb +1 -1
  15. data/lib/diffend/local_context/host.rb +0 -12
  16. data/lib/diffend/local_context/packages.rb +35 -31
  17. data/lib/diffend/local_context/platform.rb +1 -1
  18. data/lib/diffend/logger.rb +3 -3
  19. data/lib/diffend/monitor.rb +17 -5
  20. data/lib/diffend/plugin.rb +3 -0
  21. data/lib/diffend/repository.rb +109 -0
  22. data/lib/diffend/request.rb +0 -1
  23. data/lib/diffend/request_object.rb +1 -1
  24. data/lib/diffend/request_verdict.rb +9 -9
  25. data/lib/diffend/shell.rb +44 -0
  26. data/lib/diffend/track.rb +4 -4
  27. data/lib/diffend/version.rb +1 -1
  28. data/repositories/.diffend.yml +3 -0
  29. data/repositories/bundler_2_1_4/install_with_gemfile_lock/.diffend.yml +3 -0
  30. data/repositories/bundler_2_1_4/install_with_gemfile_lock/Gemfile +6 -0
  31. data/repositories/bundler_2_1_4/install_with_gemfile_lock/Gemfile.lock +22 -0
  32. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
  33. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/Gemfile +6 -0
  34. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
  35. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/.diffend.yml +3 -0
  36. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
  37. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
  38. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
  39. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/.diffend.yml +3 -0
  40. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
  41. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +19 -0
  42. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
  43. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
  44. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_removed_gem/Gemfile.lock +43 -0
  45. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/.diffend.yml +3 -0
  46. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/.ruby-version +1 -0
  47. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/Gemfile +10 -0
  48. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/Gemfile.lock +32 -0
  49. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_platforms/gem-with-two-platforms.gemspec +16 -0
  50. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
  51. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
  52. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
  53. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
  54. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/Gemfile +6 -0
  55. data/repositories/bundler_2_1_4/install_with_gemfile_lock_with_two_sources/Gemfile.lock +19 -0
  56. data/repositories/bundler_2_1_4/install_without_gemfile_lock/.diffend.yml +3 -0
  57. data/repositories/bundler_2_1_4/install_without_gemfile_lock/Gemfile +5 -0
  58. data/repositories/bundler_2_1_4/update_with_gemfile_lock/.diffend.yml +3 -0
  59. data/repositories/bundler_2_1_4/update_with_gemfile_lock/Gemfile +5 -0
  60. data/repositories/bundler_2_1_4/update_with_gemfile_lock/Gemfile.lock +16 -0
  61. data/repositories/bundler_2_1_4/update_with_gemfile_lock/README.md +1 -0
  62. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
  63. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/Gemfile +6 -0
  64. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
  65. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_added_gem/README.md +1 -0
  66. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
  67. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
  68. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/Gemfile.lock +43 -0
  69. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_removed_gem/README.md +1 -0
  70. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
  71. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
  72. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
  73. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
  74. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
  75. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/Gemfile +6 -0
  76. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/Gemfile.lock +44 -0
  77. data/repositories/bundler_2_1_4/update_with_gemfile_lock_with_two_sources/README.md +1 -0
  78. data/repositories/bundler_2_1_4/update_without_gemfile_lock/.diffend.yml +3 -0
  79. data/repositories/bundler_2_1_4/update_without_gemfile_lock/Gemfile +5 -0
  80. data/repositories/bundler_2_1_4/update_without_gemfile_lock/README.md +1 -0
  81. data/repositories/bundler_2_2_7/install_with_gemfile_lock/.diffend.yml +3 -0
  82. data/repositories/bundler_2_2_7/install_with_gemfile_lock/Gemfile +6 -0
  83. data/repositories/bundler_2_2_7/install_with_gemfile_lock/Gemfile.lock +21 -0
  84. data/repositories/bundler_2_2_7/install_with_gemfile_lock/README.md +1 -0
  85. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
  86. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/Gemfile +6 -0
  87. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
  88. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_added_gem/README.md +1 -0
  89. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/.diffend.yml +3 -0
  90. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
  91. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
  92. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
  93. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/.diffend.yml +3 -0
  94. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
  95. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
  96. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
  97. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
  98. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
  99. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
  100. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_removed_gem/README.md +1 -0
  101. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/.diffend.yml +3 -0
  102. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/Gemfile +10 -0
  103. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/Gemfile.lock +30 -0
  104. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/README.md +1 -0
  105. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_platforms/gem-with-two-platforms.gemspec +16 -0
  106. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
  107. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
  108. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
  109. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
  110. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
  111. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/Gemfile +6 -0
  112. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/Gemfile.lock +19 -0
  113. data/repositories/bundler_2_2_7/install_with_gemfile_lock_with_two_sources/README.md +1 -0
  114. data/repositories/bundler_2_2_7/install_without_gemfile_lock/.diffend.yml +3 -0
  115. data/repositories/bundler_2_2_7/install_without_gemfile_lock/Gemfile +5 -0
  116. data/repositories/bundler_2_2_7/install_without_gemfile_lock/README.md +1 -0
  117. data/repositories/bundler_2_2_7/update_with_gemfile_lock/.diffend.yml +3 -0
  118. data/repositories/bundler_2_2_7/update_with_gemfile_lock/Gemfile +5 -0
  119. data/repositories/bundler_2_2_7/update_with_gemfile_lock/Gemfile.lock +16 -0
  120. data/repositories/bundler_2_2_7/update_with_gemfile_lock/README.md +1 -0
  121. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/.diffend.yml +3 -0
  122. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/Gemfile +6 -0
  123. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/Gemfile.lock +16 -0
  124. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_added_gem/README.md +1 -0
  125. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/Gemfile +6 -0
  126. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/Gemfile.lock +18 -0
  127. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_changed_gem_version/README.md +1 -0
  128. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/Gemfile +6 -0
  129. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/Gemfile.lock +18 -0
  130. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_locked_gem_version/README.md +1 -0
  131. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/.diffend.yml +3 -0
  132. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/Gemfile +5 -0
  133. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_removed_gem/Gemfile.lock +41 -0
  134. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/.diffend.yml +3 -0
  135. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/Gemfile +6 -0
  136. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/Gemfile.lock +17 -0
  137. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_primary_sources/README.md +1 -0
  138. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/.diffend.yml +3 -0
  139. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/Gemfile +6 -0
  140. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/Gemfile.lock +42 -0
  141. data/repositories/bundler_2_2_7/update_with_gemfile_lock_with_two_sources/README.md +1 -0
  142. data/repositories/bundler_2_2_7/update_without_gemfile_lock/.diffend.yml +3 -0
  143. data/repositories/bundler_2_2_7/update_without_gemfile_lock/Gemfile +5 -0
  144. data/repositories/diffend.json +9 -0
  145. metadata +123 -2
  146. metadata.gz.sig +0 -0
@@ -12,7 +12,7 @@ module Diffend
12
12
  def call
13
13
  {
14
14
  'bundler' => {
15
- 'version' => Bundler::VERSION
15
+ 'version' => ::Bundler::VERSION
16
16
  },
17
17
  'environment' => environment,
18
18
  'ruby' => ruby_information,
@@ -55,11 +55,11 @@ module Diffend
55
55
 
56
56
  case severity
57
57
  when INFO
58
- Bundler.ui.confirm(message)
58
+ ::Bundler.ui.confirm(message)
59
59
  when WARN
60
- Bundler.ui.warn(message)
60
+ ::Bundler.ui.warn(message)
61
61
  when ERROR, FATAL
62
- Bundler.ui.error(message)
62
+ ::Bundler.ui.error(message)
63
63
  end
64
64
  end
65
65
  end
@@ -26,9 +26,22 @@
26
26
  track
27
27
  ].each { |file| require "diffend/#{file}" }
28
28
 
29
+ # Calculate exponential backoff
30
+ #
31
+ # @param retry_count [Integer]
32
+ #
33
+ # @return [Float] backoff value
34
+ def exponential_backoff(retry_count)
35
+ (0.25 * 1.5**retry_count.to_f).round(2)
36
+ end
37
+
29
38
  Thread.new do
30
39
  config = nil
31
- config_iterations = 0
40
+ retry_count = 0
41
+
42
+ # There is an issue if we start to fast and there are gems that require things,
43
+ # it may break the execution. That's why we want to give the application time to boot.
44
+ sleep(0.5)
32
45
 
33
46
  loop do
34
47
  config = Diffend::Config.new(
@@ -37,12 +50,11 @@ Thread.new do
37
50
  )
38
51
 
39
52
  break if config.valid?
53
+ break if retry_count == 12
40
54
 
41
- config_iterations += 1
42
-
43
- break if config_iterations == 12
55
+ sleep(exponential_backoff(retry_count))
44
56
 
45
- sleep 5
57
+ retry_count += 1
46
58
  end
47
59
 
48
60
  Thread.exit unless config.valid?
@@ -30,6 +30,9 @@
30
30
  request_verdict
31
31
  execute
32
32
  track
33
+ shell
34
+ repository
35
+ integration_repository
33
36
  ].each { |file| require "diffend/#{file}" }
34
37
 
35
38
  module Diffend
@@ -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
@@ -124,7 +124,6 @@ module Diffend
124
124
  uri.host,
125
125
  uri.port,
126
126
  use_ssl: uri.scheme == 'https',
127
- verify_mode: OpenSSL::SSL::VERIFY_NONE,
128
127
  open_timeout: 15,
129
128
  read_timeout: 15
130
129
  ) { |http| yield(http, uri) }
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Diffend
4
4
  # Class responsible for preparing diffend request object
5
- RequestObject = Struct.new(:config, :url, :payload, :request_method, keyword_init: true)
5
+ RequestObject = Struct.new(:config, :url, :payload, :request_method)
6
6
  end
@@ -7,15 +7,15 @@ module Diffend
7
7
  module RequestVerdict
8
8
  # Exceptions that we handle when there is a resolve issue
9
9
  RESOLVE_EXCEPTIONS = [
10
- Bundler::GemNotFound,
11
- Bundler::GitError,
12
- Bundler::PermissionError,
13
- Bundler::VersionConflict
10
+ ::Bundler::GemNotFound,
11
+ ::Bundler::GitError,
12
+ ::Bundler::PermissionError,
13
+ ::Bundler::VersionConflict
14
14
  ].freeze
15
15
 
16
16
  class << self
17
17
  # @param config [Diffend::Config]
18
- # @param definition [Bundler::Definition] definition for your source
18
+ # @param definition [::Bundler::Definition] definition for your source
19
19
  def call(config, definition)
20
20
  payload = Diffend::LocalContext.call(config, definition)
21
21
 
@@ -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: config,
46
- url: config.commands_url,
47
- payload: payload,
48
- request_method: :post
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
- config: @config,
66
- url: @config.track_url(request_id),
67
- payload: { id: request_id }.freeze,
68
- request_method: :put
65
+ @config,
66
+ @config.track_url(request_id),
67
+ { id: request_id }.freeze,
68
+ :put
69
69
  ).freeze
70
70
  end
71
71
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Diffend
4
4
  # Current version
5
- VERSION = '0.2.37'
5
+ VERSION = '0.2.42'
6
6
  end
@@ -0,0 +1,3 @@
1
+ project_id: '0c097257-aadc-41ed-a74d-f7df2c449b15'
2
+ shareable_id: '2e1ab878-19cb-4ffa-b4ee-3c158f17397d'
3
+ shareable_key: '8f52d1ff-9555-4db3-bcb1-bb28bceb7f57'
@@ -0,0 +1,3 @@
1
+ project_id: 'c8c09047-fb8d-4530-b7f8-581af84c8b02'
2
+ shareable_id: 'dbd6c13e-770b-4de9-a036-92ad049fdd6a'
3
+ shareable_key: 'e99dafde-a1f0-4709-a474-bc7aadd9fb8b'
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'dry-core'
6
+ gem 'nokogiri'
@@ -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
@@ -0,0 +1,3 @@
1
+ project_id: 'b3b7c55c-2364-4a87-8415-89acf3aefc5e'
2
+ shareable_id: '441f8f3c-fcc0-4b70-b523-56e4bd65fc0e'
3
+ shareable_key: '1a71a32d-10fe-4852-ba46-9c760f70c62a'
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'dry-core'
6
+ gem 'dry-struct'
@@ -0,0 +1,16 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ concurrent-ruby (1.1.6)
5
+ dry-core (0.4.9)
6
+ concurrent-ruby (~> 1.0)
7
+
8
+ PLATFORMS
9
+ java
10
+ ruby
11
+
12
+ DEPENDENCIES
13
+ dry-core
14
+
15
+ BUNDLED WITH
16
+ 2.1.4
@@ -0,0 +1,3 @@
1
+ project_id: 'e37fd9a0-b344-475c-a35c-fd64d6422392'
2
+ shareable_id: 'e43000d8-e59e-4e2f-9122-49ea12f2ad99'
3
+ shareable_key: 'e9c2e968-68d4-407e-acab-8d1c45fbb1b7'
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'dry-core', '0.4.8'
6
+ gem 'dry-inflector'
@@ -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`
@@ -0,0 +1,3 @@
1
+ project_id: 'f885776d-d70b-4bf9-8bc8-48c39f0b7908'
2
+ shareable_id: '373d5c64-477b-434a-93a1-0072db888803'
3
+ shareable_key: 'cf25a756-b5af-4105-ad23-ccf7523d8472'
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'dry-core', '0.4.7'
6
+ gem 'dry-inflector'
@@ -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