fastlane-plugin-google_drive 0.7.0 → 0.9.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 +4 -4
- data/README.md +17 -0
- data/lib/fastlane/plugin/google_drive/actions/create_google_drive_folder_action.rb +1 -1
- data/lib/fastlane/plugin/google_drive/actions/find_google_drive_file_by_id_action.rb +106 -0
- data/lib/fastlane/plugin/google_drive/actions/find_google_drive_file_by_title_action.rb +120 -0
- data/lib/fastlane/plugin/google_drive/actions/update_google_drive_file_action.rb +1 -1
- data/lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb +1 -1
- data/lib/fastlane/plugin/google_drive/helper/google_drive_helper.rb +8 -0
- data/lib/fastlane/plugin/google_drive/version.rb +1 -1
- metadata +26 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 538f68214b71146ef64f4a99e01bc75ccc2fd8b146837d966aa354bf932b4c9a
|
|
4
|
+
data.tar.gz: a93cc09b8149798b1cc0f8f5457aec6add54b3cb408f523c426d13cc1e26838f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 902b3d02aabd9ef980767370367d906405acf6ceadfd01fc75035624810dce42434746e0a339e63e32257acf0d43521c0c55f709562b09d857fb5e91c01b5b51
|
|
7
|
+
data.tar.gz: 0162a8cc7f27baf481d49c0beaad418a518b9d02b7213ce8774b41756c6aad1d84912cb2d1615eed9f1212e6ee01d3c41dfa60fe922c5fdfe783f4c8be6a5c2d
|
data/README.md
CHANGED
|
@@ -50,6 +50,23 @@ update_google_drive_file(
|
|
|
50
50
|
)
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
+
Find the existing file or folder:
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
# find the file or folder by ID
|
|
57
|
+
find_google_drive_file_by_id(
|
|
58
|
+
drive_keyfile: 'drive_key.json',
|
|
59
|
+
file_id: 'file_or_folder_id'
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# find the file or folder by title
|
|
63
|
+
find_google_drive_file_by_title(
|
|
64
|
+
drive_keyfile: 'drive_key.json',
|
|
65
|
+
parent_folder_id: 'parent_folder_id',
|
|
66
|
+
file_title: 'file_or_folder_title'
|
|
67
|
+
)
|
|
68
|
+
```
|
|
69
|
+
|
|
53
70
|
Download feature is not implemented yet. PR is always welcome.
|
|
54
71
|
|
|
55
72
|
## Example
|
|
@@ -9,7 +9,7 @@ module Fastlane
|
|
|
9
9
|
end
|
|
10
10
|
class CreateGoogleDriveFolderAction < Action
|
|
11
11
|
def self.run(params)
|
|
12
|
-
UI.message("Using
|
|
12
|
+
UI.message("Using credential file: #{params[:drive_keyfile]}")
|
|
13
13
|
|
|
14
14
|
session = Helper::GoogleDriveHelper.setup(
|
|
15
15
|
keyfile: params[:drive_keyfile],
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../helper/google_drive_helper'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
module SharedValues
|
|
7
|
+
GDRIVE_FILE_ID = :GDRIVE_FILE_ID
|
|
8
|
+
GDRIVE_FILE_TITLE = :GDRIVE_FILE_TITLE
|
|
9
|
+
GDRIVE_FILE_URL = :GDRIVE_FILE_URL
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class FindGoogleDriveFileByIdAction < Action
|
|
13
|
+
def self.run(params)
|
|
14
|
+
UI.message("Using credential file: #{params[:drive_keyfile]}")
|
|
15
|
+
|
|
16
|
+
session = Helper::GoogleDriveHelper.setup(
|
|
17
|
+
keyfile: params[:drive_keyfile],
|
|
18
|
+
service_account: params[:service_account]
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
# parameter validation
|
|
22
|
+
target_file_id = params[:file_id]
|
|
23
|
+
|
|
24
|
+
begin
|
|
25
|
+
file = Helper::GoogleDriveHelper.file_by_id(
|
|
26
|
+
session: session, fid: target_file_id
|
|
27
|
+
)
|
|
28
|
+
rescue FastlaneCore::Interface::FastlaneError
|
|
29
|
+
file = nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
if file.nil?
|
|
33
|
+
UI.error("No file or folder was found.")
|
|
34
|
+
else
|
|
35
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_ID] = file.resource_id.split(':').last
|
|
36
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_TITLE] = file.title
|
|
37
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_URL] = file.human_url
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.description
|
|
42
|
+
'Find a Google Drive file or folder by ID'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.details
|
|
46
|
+
[
|
|
47
|
+
'Find a Google Drive file or folder by ID',
|
|
48
|
+
'See https://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md to get a keyfile'
|
|
49
|
+
].join("\n")
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.available_options
|
|
53
|
+
[
|
|
54
|
+
FastlaneCore::ConfigItem.new(
|
|
55
|
+
key: :drive_keyfile,
|
|
56
|
+
env_name: 'GDRIVE_KEY_FILE',
|
|
57
|
+
description: 'The path to the json keyfile',
|
|
58
|
+
type: String,
|
|
59
|
+
default_value: 'drive_key.json',
|
|
60
|
+
verify_block: proc do |value|
|
|
61
|
+
UI.user_error!("Couldn't find config keyfile at path '#{value}'") unless File.exist?(value)
|
|
62
|
+
end
|
|
63
|
+
),
|
|
64
|
+
FastlaneCore::ConfigItem.new(
|
|
65
|
+
key: :service_account,
|
|
66
|
+
env_name: 'GDRIVE_SERVICE_ACCOUNT',
|
|
67
|
+
description: 'Whether the credential file is for the google service account',
|
|
68
|
+
optional: true,
|
|
69
|
+
is_string: false,
|
|
70
|
+
default_value: false
|
|
71
|
+
),
|
|
72
|
+
FastlaneCore::ConfigItem.new(
|
|
73
|
+
key: :file_id,
|
|
74
|
+
env_name: 'GDRIVE_TARGET_FILE_ID',
|
|
75
|
+
description: 'Target file or folder ID to check the existence',
|
|
76
|
+
optional: false,
|
|
77
|
+
type: String,
|
|
78
|
+
verify_block: proc do |value|
|
|
79
|
+
UI.user_error!("No `file_id` was given. Pass it using `file_id: 'some_id'`") if value.nil? || value.empty?
|
|
80
|
+
end
|
|
81
|
+
)
|
|
82
|
+
]
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def self.output
|
|
86
|
+
[
|
|
87
|
+
['GDRIVE_FILE_ID', 'The file ID of the file or folder.'],
|
|
88
|
+
['GDRIVE_FILE_TITLE', 'The title of the file or folder.'],
|
|
89
|
+
['GDRIVE_FILE_URL', 'The link to the file or folder.']
|
|
90
|
+
]
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def self.return_value
|
|
94
|
+
# nothing
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def self.authors
|
|
98
|
+
['Bumsoo Kim (@bskim45)']
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def self.is_supported?(platform)
|
|
102
|
+
true
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../helper/google_drive_helper'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
module SharedValues
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class FindGoogleDriveFileByTitleAction < Action
|
|
10
|
+
def self.run(params)
|
|
11
|
+
UI.message("Using credential file: #{params[:drive_keyfile]}")
|
|
12
|
+
|
|
13
|
+
session = Helper::GoogleDriveHelper.setup(
|
|
14
|
+
keyfile: params[:drive_keyfile],
|
|
15
|
+
service_account: params[:service_account]
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# parameter validation
|
|
19
|
+
parent_folder_id = params[:parent_folder_id]
|
|
20
|
+
file_title = params[:file_title]
|
|
21
|
+
|
|
22
|
+
parent_folder = Helper::GoogleDriveHelper.file_by_id(
|
|
23
|
+
session: session, fid: parent_folder_id
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
UI.abort_with_message!('The parent folder was not found.') if parent_folder.nil?
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
file = Helper::GoogleDriveHelper.file_by_title(
|
|
30
|
+
root_folder: parent_folder, title: file_title
|
|
31
|
+
)
|
|
32
|
+
rescue FastlaneCore::Interface::FastlaneError
|
|
33
|
+
file = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if file.nil?
|
|
37
|
+
UI.error('No file or folder was found.')
|
|
38
|
+
else
|
|
39
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_ID] = file.resource_id.split(':').last
|
|
40
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_TITLE] = file.title
|
|
41
|
+
Actions.lane_context[SharedValues::GDRIVE_FILE_URL] = file.human_url
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.description
|
|
46
|
+
'Find a Google Drive file or folder by title'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.details
|
|
50
|
+
[
|
|
51
|
+
'Find a Google Drive file or folder by title',
|
|
52
|
+
'See https://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md to get a keyfile'
|
|
53
|
+
].join("\n")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def self.available_options
|
|
57
|
+
[
|
|
58
|
+
FastlaneCore::ConfigItem.new(
|
|
59
|
+
key: :drive_keyfile,
|
|
60
|
+
env_name: 'GDRIVE_KEY_FILE',
|
|
61
|
+
description: 'The path to the json keyfile',
|
|
62
|
+
type: String,
|
|
63
|
+
default_value: 'drive_key.json',
|
|
64
|
+
verify_block: proc do |value|
|
|
65
|
+
UI.user_error!("Couldn't find config keyfile at path '#{value}'") unless File.exist?(value)
|
|
66
|
+
end
|
|
67
|
+
),
|
|
68
|
+
FastlaneCore::ConfigItem.new(
|
|
69
|
+
key: :service_account,
|
|
70
|
+
env_name: 'GDRIVE_SERVICE_ACCOUNT',
|
|
71
|
+
description: 'Whether the credential file is for the google service account',
|
|
72
|
+
optional: true,
|
|
73
|
+
is_string: false,
|
|
74
|
+
default_value: false
|
|
75
|
+
),
|
|
76
|
+
FastlaneCore::ConfigItem.new(
|
|
77
|
+
key: :parent_folder_id,
|
|
78
|
+
env_name: 'GDRIVE_PARENT_FOLDER_ID',
|
|
79
|
+
description: 'The parent folder ID of the target file or folder to check the existence',
|
|
80
|
+
optional: false,
|
|
81
|
+
type: String,
|
|
82
|
+
verify_block: proc do |value|
|
|
83
|
+
UI.user_error!("No `parent_folder_id` was given. Pass it using `parent_folder_id: 'some_id'`") unless value and !value.empty?
|
|
84
|
+
end
|
|
85
|
+
),
|
|
86
|
+
FastlaneCore::ConfigItem.new(
|
|
87
|
+
key: :file_title,
|
|
88
|
+
env_name: 'GDRIVE_TARGET_FILE_TITLE',
|
|
89
|
+
description: 'Target file or folder title to check the existence',
|
|
90
|
+
optional: false,
|
|
91
|
+
type: String,
|
|
92
|
+
verify_block: proc do |value|
|
|
93
|
+
UI.user_error!("No `file_title` was given. Pass it using `file_title: 'some_title'`") unless value and !value.empty?
|
|
94
|
+
end
|
|
95
|
+
),
|
|
96
|
+
]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def self.output
|
|
100
|
+
[
|
|
101
|
+
['GDRIVE_FILE_ID', 'The file title of the file or folder'],
|
|
102
|
+
['GDRIVE_FILE_TITLE', 'The title of the file or folder'],
|
|
103
|
+
['GDRIVE_FILE_URL', 'The link to the file or folder']
|
|
104
|
+
]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def self.return_value
|
|
108
|
+
# nothing
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def self.authors
|
|
112
|
+
['Bumsoo Kim (@bskim45)']
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def self.is_supported?(platform)
|
|
116
|
+
true
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -9,7 +9,7 @@ module Fastlane
|
|
|
9
9
|
end
|
|
10
10
|
class UpdateGoogleDriveFileAction < Action
|
|
11
11
|
def self.run(params)
|
|
12
|
-
UI.message("Using
|
|
12
|
+
UI.message("Using credential file: #{params[:drive_keyfile]}")
|
|
13
13
|
|
|
14
14
|
session = Helper::GoogleDriveHelper.setup(
|
|
15
15
|
keyfile: params[:drive_keyfile],
|
|
@@ -9,7 +9,7 @@ module Fastlane
|
|
|
9
9
|
end
|
|
10
10
|
class UploadToGoogleDriveAction < Action
|
|
11
11
|
def self.run(params)
|
|
12
|
-
UI.message("Using
|
|
12
|
+
UI.message("Using credential file: #{params[:drive_keyfile]}")
|
|
13
13
|
|
|
14
14
|
session = Helper::GoogleDriveHelper.setup(
|
|
15
15
|
keyfile: params[:drive_keyfile],
|
|
@@ -24,6 +24,14 @@ module Fastlane
|
|
|
24
24
|
UI.user_error!("File with id '#{fid}' not found in Google Drive")
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def self.file_by_title(root_folder:, title:)
|
|
28
|
+
file = root_folder.file_by_title(title)
|
|
29
|
+
file
|
|
30
|
+
rescue Exception => e
|
|
31
|
+
UI.error(e.message)
|
|
32
|
+
UI.user_error!("File with title '#{title}' not found in Google Drive")
|
|
33
|
+
end
|
|
34
|
+
|
|
27
35
|
def self.upload_file(file: nil, file_name: nil, title: nil)
|
|
28
36
|
raise "Not Google Drive file" unless file.kind_of?(::GoogleDrive::File)
|
|
29
37
|
|
metadata
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane-plugin-google_drive
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bumsoo Kim
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-12-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: google_drive2
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: '3'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 3.0.
|
|
22
|
+
version: 3.0.9
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +29,7 @@ dependencies:
|
|
|
29
29
|
version: '3'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 3.0.
|
|
32
|
+
version: 3.0.9
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: google-apis-drive_v3
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -144,16 +144,30 @@ dependencies:
|
|
|
144
144
|
name: rubocop
|
|
145
145
|
requirement: !ruby/object:Gem::Requirement
|
|
146
146
|
requirements:
|
|
147
|
-
- -
|
|
147
|
+
- - ">="
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: 1.36.0
|
|
150
|
+
type: :development
|
|
151
|
+
prerelease: false
|
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
+
requirements:
|
|
154
|
+
- - ">="
|
|
148
155
|
- !ruby/object:Gem::Version
|
|
149
|
-
version:
|
|
156
|
+
version: 1.36.0
|
|
157
|
+
- !ruby/object:Gem::Dependency
|
|
158
|
+
name: rubocop-performance
|
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
|
160
|
+
requirements:
|
|
161
|
+
- - ">="
|
|
162
|
+
- !ruby/object:Gem::Version
|
|
163
|
+
version: 1.15.0
|
|
150
164
|
type: :development
|
|
151
165
|
prerelease: false
|
|
152
166
|
version_requirements: !ruby/object:Gem::Requirement
|
|
153
167
|
requirements:
|
|
154
|
-
- -
|
|
168
|
+
- - ">="
|
|
155
169
|
- !ruby/object:Gem::Version
|
|
156
|
-
version:
|
|
170
|
+
version: 1.15.0
|
|
157
171
|
- !ruby/object:Gem::Dependency
|
|
158
172
|
name: rubocop-require_tools
|
|
159
173
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -206,6 +220,8 @@ files:
|
|
|
206
220
|
- README.md
|
|
207
221
|
- lib/fastlane/plugin/google_drive.rb
|
|
208
222
|
- lib/fastlane/plugin/google_drive/actions/create_google_drive_folder_action.rb
|
|
223
|
+
- lib/fastlane/plugin/google_drive/actions/find_google_drive_file_by_id_action.rb
|
|
224
|
+
- lib/fastlane/plugin/google_drive/actions/find_google_drive_file_by_title_action.rb
|
|
209
225
|
- lib/fastlane/plugin/google_drive/actions/update_google_drive_file_action.rb
|
|
210
226
|
- lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb
|
|
211
227
|
- lib/fastlane/plugin/google_drive/helper/google_drive_helper.rb
|
|
@@ -222,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
222
238
|
requirements:
|
|
223
239
|
- - ">="
|
|
224
240
|
- !ruby/object:Gem::Version
|
|
225
|
-
version: '
|
|
241
|
+
version: '2.6'
|
|
226
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
243
|
requirements:
|
|
228
244
|
- - ">="
|