Skip to content

Commit b7f22fd

Browse files
authored
Merge pull request #401 from aubergene/transfer_summarizer
Add option to specify transfer log percentage
2 parents f4c90ef + 72d7ff9 commit b7f22fd

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ appear at the top.
66
## [Unreleased][]
77

88
* Your contribution here!
9+
* [#401](https://github.com/capistrano/sshkit/pull/401): Add :log_percent option to specify upload!/download! transfer log percentage - [@aubergene](https://github.com/aubergene)
910

1011
## [1.13.1][] (2017-03-31)
1112

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ For the remote backend, the file is tranferred with scp.
7272
```ruby
7373
on '1.example.com' do
7474
upload! 'some_local_file.txt', '/home/some_user/somewhere'
75-
download! '/home/some_user/some_remote_file.txt', 'somewhere_local'
75+
download! '/home/some_user/some_remote_file.txt', 'somewhere_local', :log_percent 25
7676
end
7777
```
7878

lib/sshkit/backends/netssh.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@ def assign_defaults
6262
end
6363

6464
def upload!(local, remote, options = {})
65-
summarizer = transfer_summarizer('Uploading')
65+
summarizer = transfer_summarizer('Uploading', options)
6666
with_ssh do |ssh|
6767
ssh.scp.upload!(local, remote, options, &summarizer)
6868
end
6969
end
7070

7171
def download!(remote, local=nil, options = {})
72-
summarizer = transfer_summarizer('Downloading')
72+
summarizer = transfer_summarizer('Downloading', options)
7373
with_ssh do |ssh|
7474
ssh.scp.download!(remote, local, options, &summarizer)
7575
end
@@ -96,14 +96,16 @@ def config
9696

9797
private
9898

99-
def transfer_summarizer(action)
99+
def transfer_summarizer(action, options = {})
100+
log_percent = options[:log_percent] || 10
101+
log_percent = 100 if log_percent <= 0
100102
last_name = nil
101103
last_percentage = nil
102104
proc do |_ch, name, transferred, total|
103105
percentage = (transferred.to_f * 100 / total.to_f)
104106
unless percentage.nan?
105107
message = "#{action} #{name} #{percentage.round(2)}%"
106-
percentage_r = (percentage / 10).truncate * 10
108+
percentage_r = (percentage / log_percent).truncate * log_percent
107109
if percentage_r > 0 && (last_name != name || last_percentage != percentage_r)
108110
info message
109111
last_name = name

0 commit comments

Comments
 (0)