parallel_sftp 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e9b3740b28f7c321a2f34317f9d9d62f5ba8d4d43c5f95b4adcea7e1d341506
4
- data.tar.gz: 04f4cce0014fb7d2a92bcecf358c9a898e09464e1692e404254eb975b5e97b96
3
+ metadata.gz: 0a657d1c03cf2c2cab3dc64d29b1fbe4667a18d35ecf936c1508b55bf3640602
4
+ data.tar.gz: f11b5a058313b8d588fe5e92d9bbe627e8770cc0f89ec19756a71d27d250c891
5
5
  SHA512:
6
- metadata.gz: 467233eccd1b0ada118478ad798b3bd2f3d64129134115f7ea118aa00421cf341f24e4e13a9443bcb4966d10ec02881fc4b56ec265a0666ccb33d856bbfc6f77
7
- data.tar.gz: a6d86b220fdc634ffcf033642f4e852fc7986de4e524bf18843a790dc53afdafb32d6ad75c9931ded688f7ed430a44985827ff57ee55284713c7379b28fbd7cf
6
+ metadata.gz: cbb88481f950b81974dcf9b8327297ea845db25f7c29b1bd409883cb108e7876b217502e7c63bd767945b699ca8814fc021ea73e90d25bde6da2b0785770d241
7
+ data.tar.gz: f43b354fcd285d2a07d7ae34bebfa80a234a0c319d13805c118c66c9e0c662ffe59ce7cd06d3b699664dcb71824cd3ed5d0ce6f5360eda802fa6997e888eb06a
data/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.0] - 2026-02-05
11
+
12
+ ### Added
13
+ - `verbose` option for debugging lftp output - prints command and lftp messages to stderr
14
+ - `xfer:clobber on` setting to allow overwriting existing files
15
+
16
+ ### Fixed
17
+ - Resume now works correctly on first download attempt (previously always disabled)
18
+ - First attempt respects user's `resume` setting; only retries after corruption use fresh download
19
+
10
20
  ## [0.3.1] - 2026-02-05
11
21
 
12
22
  ### Added
@@ -51,10 +51,14 @@ module ParallelSftp
51
51
  def download_with_retry(remote_path, local_path, options, segments, parallel_retries)
52
52
  current_segments = segments
53
53
  retries_at_current_segments = 0
54
+ first_attempt = true
54
55
 
55
56
  loop do
56
57
  begin
57
- return execute_download(remote_path, local_path, options.merge(segments: current_segments, resume: false))
58
+ # First attempt: respect user's resume setting; retries: always fresh download
59
+ use_resume = first_attempt ? options.fetch(:resume, true) : false
60
+ first_attempt = false
61
+ return execute_download(remote_path, local_path, options.merge(segments: current_segments, resume: use_resume))
58
62
  rescue ZipIntegrityError => e
59
63
  cleanup_corrupted_download(local_path)
60
64
 
@@ -100,7 +104,8 @@ module ParallelSftp
100
104
  download = Download.new(
101
105
  lftp_command,
102
106
  on_progress: options[:on_progress],
103
- on_segment_progress: options[:on_segment_progress]
107
+ on_segment_progress: options[:on_segment_progress],
108
+ verbose: options[:verbose]
104
109
  )
105
110
  download.execute
106
111
  end
@@ -11,10 +11,11 @@ module ParallelSftp
11
11
  # Default interval for polling the status file (in seconds)
12
12
  DEFAULT_POLL_INTERVAL = 1
13
13
 
14
- def initialize(lftp_command, on_progress: nil, on_segment_progress: nil)
14
+ def initialize(lftp_command, on_progress: nil, on_segment_progress: nil, verbose: false)
15
15
  @lftp_command = lftp_command
16
16
  @on_progress = on_progress
17
17
  @on_segment_progress = on_segment_progress
18
+ @verbose = verbose
18
19
  @output_buffer = []
19
20
  @progress_parser = ProgressParser.new
20
21
  @segment_parser = SegmentProgressParser.new
@@ -41,6 +42,11 @@ module ParallelSftp
41
42
  exit_status = nil
42
43
  status_file = status_file_path
43
44
 
45
+ if @verbose
46
+ $stderr.puts "[lftp] Command: lftp -c '...'"
47
+ $stderr.puts "[lftp] Status file: #{status_file}"
48
+ end
49
+
44
50
  Open3.popen2e(*lftp_command.to_command) do |stdin, stdout_stderr, wait_thr|
45
51
  stdin.close
46
52
 
@@ -49,6 +55,7 @@ module ParallelSftp
49
55
 
50
56
  stdout_stderr.each_line do |line|
51
57
  @output_buffer << line
58
+ $stderr.puts "[lftp] #{line}" if @verbose
52
59
  process_output_line(line)
53
60
  end
54
61
 
@@ -30,7 +30,8 @@ module ParallelSftp
30
30
  "set net:max-retries #{max_retries}",
31
31
  "set net:reconnect-interval-base #{reconnect_interval}",
32
32
  "set sftp:auto-confirm yes",
33
- "set ssl:verify-certificate no"
33
+ "set ssl:verify-certificate no",
34
+ "set xfer:clobber on"
34
35
  ]
35
36
 
36
37
  # Add custom SSH connect program if configured (for legacy host key algorithms)
@@ -1,3 +1,3 @@
1
1
  module ParallelSftp
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/parallel_sftp.rb CHANGED
@@ -121,7 +121,8 @@ module ParallelSftp
121
121
  reconnect_interval: options[:reconnect_interval],
122
122
  sftp_connect_program: options[:sftp_connect_program],
123
123
  on_progress: options[:on_progress],
124
- on_segment_progress: options[:on_segment_progress]
124
+ on_segment_progress: options[:on_segment_progress],
125
+ verbose: options[:verbose]
125
126
  )
126
127
  end
127
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parallel_sftp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nestor G Pestelos Jr