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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44942219aaa17b4d9a44c506c0384ac196d809842b708837845e5e610681580a
4
- data.tar.gz: fdbef59ccb0f057d38e6799e5162d3d3cb0cdbd62df044887c926cb10b49b6da
3
+ metadata.gz: 538f68214b71146ef64f4a99e01bc75ccc2fd8b146837d966aa354bf932b4c9a
4
+ data.tar.gz: a93cc09b8149798b1cc0f8f5457aec6add54b3cb408f523c426d13cc1e26838f
5
5
  SHA512:
6
- metadata.gz: 7c582fc5b94bb250aa5bb07eb44a161612055865e1b3b39a2d34c2242f25cf8e54a9e5836c9d4abbf663533fb6fa94b5042cb6ecc42e3293e1513f6041878713
7
- data.tar.gz: 6545338ab81664c5c05990f7449a400d76acebac6b4908a77a397113521611b02dd88426fa7a4377ed8842a7b71fdecc9d958dece7a644350777864c4344a135
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 config file: #{params[:drive_keyfile]}")
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 config file: #{params[:drive_keyfile]}")
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 config file: #{params[:drive_keyfile]}")
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
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module GoogleDrive
3
- VERSION = "0.7.0"
3
+ VERSION = "0.9.0"
4
4
  end
5
5
  end
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.7.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: 2021-07-11 00:00:00.000000000 Z
11
+ date: 2022-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: google_drive
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.7
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.7
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: 0.49.1
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: 0.49.1
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: '0'
241
+ version: '2.6'
226
242
  required_rubygems_version: !ruby/object:Gem::Requirement
227
243
  requirements:
228
244
  - - ">="