rb1drv-tools 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe054475b1688ad3e50fb5382392a53db3470a12dcc03943fa8002db1eebf559
4
- data.tar.gz: f11b7b9575fb06c908120c3289ab641b4a08dd6e273c62935f3146c510aa871e
3
+ metadata.gz: ac6c60e1b964a10dcaaee6c08122be48be2aa54f726243626d278abae553a0c2
4
+ data.tar.gz: 4e434e9cf006428c8ddac3d7d042a715acb7c044b3a453c681eee5d3ea63a846
5
5
  SHA512:
6
- metadata.gz: 5b5d1993a705015ffe7148c81faf8684cb63fbe08b49b15b2139f3c89abd3146551244ca2fded5bba3c6f387466efaa55e0c85c6d4e9ef050d4dcbbd7662468f
7
- data.tar.gz: ec588699cb4c304cf93f55eb2e45493077aca86af8335c51cbe4c98047355da51eea1520c0d15890f231b0b9622f7842d73df43f0475e245c1e61b1271c0c909
6
+ metadata.gz: 72ffb0be1adce60d478df6a454c36414d39c204861a4816b5c41d59993c0063e1a058645be46262ec99f38966714f26faf92b9c10190314f9d285b392f866332
7
+ data.tar.gz: 50d3031fcd2eabcd36d07aafbd6add01f99696433d94f1dd4548bcd3a695c398213b8cb77a8b585ad31d8d59507a62efc693d4660bcf397800237842ae3f16d2
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rb1drv-tools (0.1.4)
5
- rb1drv (~> 0.1)
4
+ rb1drv-tools (0.1.5)
5
+ rb1drv (>= 0.1.7)
6
6
  tty-progressbar (~> 0)
7
7
  tty-prompt (~> 0)
8
8
  tty-screen (~> 0)
@@ -31,7 +31,7 @@ GEM
31
31
  tty-color (~> 0.4.0)
32
32
  rack (2.0.5)
33
33
  rake (10.5.0)
34
- rb1drv (0.1.6)
34
+ rb1drv (0.1.7)
35
35
  excon (~> 0.62)
36
36
  oauth2 (~> 1.4)
37
37
  timers (4.1.2)
@@ -33,6 +33,7 @@ module Rb1drvTools
33
33
  download [-f] <r-files> [@target] Download files into directory recursively, skipping existing files
34
34
  -f Overwrite existing files regardless
35
35
  -s Overwrite existing files with different size or older date
36
+ -t Reset last modified time if remote file has newer date and same size
36
37
  @directory/ Upload or download into directory as children, if:
37
38
  - target directory exists
38
39
  - target ends with a slash
@@ -4,15 +4,22 @@ module Rb1drvTools
4
4
  Profile.profile
5
5
  format = '%10s: %s'
6
6
  CLI.od.request('drives').dig('value').each do |drive|
7
+ total = drive.dig('quota', 'total').to_i
8
+ used = drive.dig('quota', 'used').to_i
9
+ deleted = drive.dig('quota', 'deleted').to_i
10
+ remaining = drive.dig('quota', 'remaining').to_i
11
+ lost = total - used - deleted - remaining
12
+
7
13
  {
8
14
  'ID' => drive.dig('id'),
9
15
  'Site' => drive.dig('webUrl'),
10
16
  'Type' => drive.dig('driveType'),
11
17
  'Owner' => '%s <%s>' % [drive.dig('owner', 'user', 'displayName'), drive.dig('owner', 'user', 'email')],
12
- 'Size' => Utils.humanize_size(drive.dig('quota', 'total')),
13
- 'Used' => Utils.humanize_size(drive.dig('quota', 'used')),
14
- 'Deleted' => Utils.humanize_size(drive.dig('quota', 'deleted')),
15
- 'Free' => Utils.humanize_size(drive.dig('quota', 'remaining'))
18
+ 'Size' => Utils.humanize_size(total),
19
+ 'Used' => Utils.humanize_size(used),
20
+ 'Deleted' => Utils.humanize_size(deleted),
21
+ 'Free' => Utils.humanize_size(remaining),
22
+ 'Lost' => Utils.humanize_size(lost) # Lost in universe (Version History)
16
23
  }.each do |row|
17
24
  puts format % row
18
25
  end
@@ -6,6 +6,7 @@ module Rb1drvTools
6
6
  file_mode = true
7
7
  overwrite = false
8
8
  overwrite_smarter = false
9
+ time_sync = false
9
10
 
10
11
  items = []
11
12
  args.each do |arg|
@@ -16,6 +17,8 @@ module Rb1drvTools
16
17
  overwrite_smarter = true
17
18
  when 'f'
18
19
  overwrite = true
20
+ when 't'
21
+ time_sync = true
19
22
  else
20
23
  puts "Warning: unknown flag '#{flag}'."
21
24
  end
@@ -58,7 +61,7 @@ module Rb1drvTools
58
61
  target_dir = get_obj(File.dirname(target))
59
62
  CLI.cwd.mkdir(File.dirname(target))
60
63
  target_name = File.basename(target)
61
- upload(items.first, target_dir, File.basename(target), overwrite_policy: overwrite_policy)
64
+ upload(items.first, target_dir, File.basename(target), overwrite_policy: overwrite_policy, time_sync: time_sync)
62
65
  else
63
66
  items.each do |item|
64
67
  unless target_obj.dir?
@@ -72,40 +75,45 @@ module Rb1drvTools
72
75
  end
73
76
  Dir[item].each do |match|
74
77
  if File.directory?(match)
75
- traverse_dir(match, target_obj.mkdir(File.basename(match)))
78
+ traverse_dir(match, target_obj.mkdir(File.basename(match)), overwrite_policy: overwrite_policy, time_sync: time_sync)
76
79
  else
77
- upload(match, target_obj, File.basename(match), overwrite_policy: overwrite_policy)
80
+ upload(match, target_obj, File.basename(match), overwrite_policy: overwrite_policy, time_sync: time_sync)
78
81
  end
79
82
  end
80
83
  end
81
84
  end
82
85
  end
83
86
 
84
- def self.traverse_dir(source_directory, target_directory)
87
+ def self.traverse_dir(source_directory, target_directory, overwrite_policy: :skip, time_sync: false)
85
88
  Dir.entries(source_directory).sort.each do |child|
86
89
  next if child == '.' || child == '..'
87
90
  new_path = File.join(source_directory, child)
88
91
  if File.directory?(new_path)
89
92
  new_dir = target_directory.get_child(child)
90
93
  new_dir = target_directory.mkdir(child) unless new_dir.dir?
91
- traverse_dir(new_path, new_dir)
94
+ traverse_dir(new_path, new_dir, overwrite_policy: overwrite_policy, time_sync: time_sync)
92
95
  else
93
- upload(new_path, target_directory, child)
96
+ upload(new_path, target_directory, child, overwrite_policy: overwrite_policy, time_sync: time_sync)
94
97
  end
95
98
  end
96
99
  end
97
100
 
98
- def self.upload(source_file, target_directory, target_name, overwrite_policy: :skip)
101
+ def self.upload(source_file, target_directory, target_name, overwrite_policy: :skip, time_sync: false)
99
102
  return if source_file.include?('.1drv_upload')
100
103
  printf "%s => %s :: %s\n", source_file, target_directory.absolute_path, target_name
101
104
  target_obj = target_directory.get_child(target_name)
102
105
  return puts 'Target is a directory, skipped' if target_obj.dir?
106
+ mtime = File.mtime(source_file)
107
+ file_size = File.size(source_file)
103
108
  if overwrite_policy != :overwrite && target_obj.file?
109
+ if time_sync && target_obj.size == file_size && target_obj.mtime - mtime > 2
110
+ target_obj.set_mtime(mtime)
111
+ print '<sync mtime> '
112
+ end
104
113
  return puts 'Skipped' if overwrite_policy == :skip
105
114
  return puts 'Remote file is up to date, skipped' if target_obj.mtime >= File.mtime(source_file) - 2
106
115
  end
107
116
  screen_width = TTY::Screen.width
108
- file_size = File.size(source_file)
109
117
  if STDOUT.tty? && screen_width >= 50
110
118
  multibar = TTY::ProgressBar::Multi.new
111
119
  bar = multibar.register("%s :current_byte / :total_byte :byte_rate/s [:bar] :eta :percent" % source_file[0..29], total: file_size, frequency: 2, head: '>')
@@ -52,13 +52,16 @@ module Rb1drvTools
52
52
  end
53
53
 
54
54
  def humanize_size(size)
55
+ num = size.abs.to_f
55
56
  units = ['', 'K', 'M', 'G']
56
57
  unit_idx = 0
57
- while size > 8192 && unit_idx < units.size - 1 do
58
- size /= 1024
58
+ while num > 8192.0 && unit_idx < units.size - 1 do
59
+ num /= 1024.0
59
60
  unit_idx += 1
60
61
  end
61
- "#{size}#{units[unit_idx]}"
62
+ num = num.round(1)
63
+ num = -num if size < 0
64
+ "#{num}#{units[unit_idx]}"
62
65
  end
63
66
  end
64
67
  end
@@ -1,3 +1,3 @@
1
1
  module Rb1drvTools
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
  spec.required_ruby_version = '>= 2.3'
23
23
 
24
- spec.add_dependency "rb1drv", "~> 0.1"
24
+ spec.add_dependency "rb1drv", ">= 0.1.7"
25
25
  spec.add_dependency "tty-progressbar", "~> 0"
26
26
  spec.add_dependency "tty-prompt", "~> 0"
27
27
  spec.add_dependency "tty-screen", "~> 0"
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb1drv-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xinyue Lu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-22 00:00:00.000000000 Z
11
+ date: 2018-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb1drv
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: 0.1.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0.1'
26
+ version: 0.1.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: tty-progressbar
29
29
  requirement: !ruby/object:Gem::Requirement