rb1drv-tools 0.1.4 → 0.1.5

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: 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