fastlane-plugin-dropbox_upload 0.2.0 → 0.2.1
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3125d437d27ef16ee2c54448771e36b4020ba6f
|
4
|
+
data.tar.gz: a0c44590d99b07192439737e8b4b24347b7f8c40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f28511356f7d3208fa36abae71442333547e77766c820a657819ef2c75a2121627c0bdd2677bd8dd76cc5a1b01a3c16d7ab51fffc761568622462fb0fdcd5ec
|
7
|
+
data.tar.gz: 79a3f03044697f63340e29db2199acc0f494352db9b9bcb322fcff5592c4aa3423997c8e5ce0288642727dd5be3a24ff15481cc350a45584809162290a028e9d
|
@@ -36,11 +36,19 @@ module Fastlane
|
|
36
36
|
end
|
37
37
|
|
38
38
|
client = DropboxApi::Client.new(access_token)
|
39
|
+
fileSize = File.size(file_path)
|
40
|
+
more_space = is_space_enough(client, fileSize)
|
41
|
+
if more_space >= 0
|
42
|
+
UI.message 'space is enough'
|
43
|
+
else
|
44
|
+
UI.message "space almost fill need more #{-more_space}, delete the earliest file"
|
45
|
+
delete_earliest_file(client, -more_space)
|
46
|
+
end
|
39
47
|
|
40
48
|
output_file = nil
|
41
49
|
chunk_size = 157_286_400 # 150M
|
42
50
|
destination_path = destination_path(dropbox_path, file_path)
|
43
|
-
if
|
51
|
+
if fileSize < chunk_size
|
44
52
|
output_file = upload(client, file_path, destination_path, write_mode)
|
45
53
|
else
|
46
54
|
output_file = upload_chunked(client, chunk_size, file_path, destination_path, write_mode)
|
@@ -106,6 +114,85 @@ module Fastlane
|
|
106
114
|
parts
|
107
115
|
end
|
108
116
|
|
117
|
+
def self.is_space_enough(client, fileSize)
|
118
|
+
spaceUsage = client.get_space_usage
|
119
|
+
used = spaceUsage.used.to_i
|
120
|
+
allocated = spaceUsage.allocation.allocated
|
121
|
+
unuse = allocated - used
|
122
|
+
UI.important "Space allocated: #{allocated} used: #{used} unuse: #{unuse} "
|
123
|
+
if fileSize > allocated
|
124
|
+
UI.user_error! 'Upload file size over allocated space'
|
125
|
+
end
|
126
|
+
return unuse - fileSize
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.delete_earliest_file(client, more_space)
|
130
|
+
UI.message ''
|
131
|
+
UI.important "Need space #{more_space}"
|
132
|
+
UI.message ''
|
133
|
+
delete_space = 0
|
134
|
+
files = get_all_files(client)
|
135
|
+
files.each { |file|
|
136
|
+
delete_space = delete_space + delete_file(client, file)
|
137
|
+
if delete_space > more_space
|
138
|
+
break
|
139
|
+
end
|
140
|
+
}
|
141
|
+
UI.important "Delete space #{delete_space}"
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.delete_file(client, file)
|
145
|
+
path_display = file.path_display
|
146
|
+
delete_result = client.delete path_display
|
147
|
+
UI.message "Delete file:#{file.path_display} size:#{file.size}"
|
148
|
+
return delete_result.size
|
149
|
+
end
|
150
|
+
|
151
|
+
def self.get_all_files(client)
|
152
|
+
files = list_folder(client)
|
153
|
+
files.sort_by { |a|
|
154
|
+
a.client_modified
|
155
|
+
}
|
156
|
+
return files
|
157
|
+
end
|
158
|
+
|
159
|
+
def self.list_folder(client, path = '')
|
160
|
+
UI.important "List files in path #{path} "
|
161
|
+
options = {}
|
162
|
+
options[:recursive] = true
|
163
|
+
options[:include_media_info] = false
|
164
|
+
options[:include_deleted] = false
|
165
|
+
folderResult = client.list_folder path, options
|
166
|
+
files = get_tagfile(folderResult)
|
167
|
+
if folderResult.has_more?
|
168
|
+
more_files = list_folder_continue(client, folderResult.cursor)
|
169
|
+
files.concat(more_files)
|
170
|
+
end
|
171
|
+
return files
|
172
|
+
end
|
173
|
+
|
174
|
+
def self.list_folder_continue(client, cursor)
|
175
|
+
folderResult = client.list_folder_continue cursor
|
176
|
+
files = get_tagfile(folderResult)
|
177
|
+
if folderResult.has_more?
|
178
|
+
more_files = list_folder_continue(client, folderResult.cursor)
|
179
|
+
files.concat(more_files)
|
180
|
+
end
|
181
|
+
return files
|
182
|
+
end
|
183
|
+
|
184
|
+
def self.get_tagfile(result)
|
185
|
+
files = []
|
186
|
+
entries = result.entries
|
187
|
+
entries[1..entries.size].each do |obj|
|
188
|
+
if obj.class == DropboxApi::Metadata::File
|
189
|
+
files.push(obj)
|
190
|
+
UI.message "File:#{obj.path_display} size:#{obj.size}"
|
191
|
+
end
|
192
|
+
end
|
193
|
+
return files
|
194
|
+
end
|
195
|
+
|
109
196
|
def self.description
|
110
197
|
"upload files to dropbox"
|
111
198
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-dropbox_upload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jason
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dropbox_api
|