class Fastlane::Actions::UploadToGoogleDriveAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 113
def self.authors
  ['Bumsoo Kim (@bskim45)']
end
available_options() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 57
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :drive_keyfile,
                                env_name: 'GDRIVE_KEY_FILE',
                                description: 'Json config file',
                                type: String,
                                default_value: 'drive_key.json',
                                verify_block: proc do |value|
                                  UI.user_error!("Couldn't find config keyfile at path '#{value}'") unless File.exist?(value)
                                end),
    FastlaneCore::ConfigItem.new(key: :service_account,
                                env_name: 'GDRIVE_SERVICE_ACCOUNT',
                                description: 'Credential is service account',
                                optional: true,
                                is_string: false,
                                default_value: false),
    FastlaneCore::ConfigItem.new(key: :folder_id,
                                env_name: "GDRIVE_UPLOAD_FOLDER_ID",
                                description: "Upload target folder id",
                                optional: false,
                                type: String,
                                verify_block: proc do |value|
                                  UI.user_error!("No target folder id given, pass using `folder_id: 'some_id'`") unless value and !value.empty?
                                end),
    FastlaneCore::ConfigItem.new(key: :upload_files,
                                env_name: "GDRIVE_UPLOAD_FILES",
                                description: "Path to files to be uploaded",
                                optional: false,
                                is_string: false,
                                verify_block: proc do |value|
                                  UI.user_error!("upload_files must be an Array of paths to files") unless value.kind_of?(Array)
                                  UI.user_error!("No upload file is given, pass using `upload_files: ['a', 'b']`") unless value and !value.empty?
                                  value.each do |path|
                                    UI.user_error!("Couldn't find upload file at path '#{path}'") unless File.exist?(path)
                                  end
                                end),
    FastlaneCore::ConfigItem.new(key: :public_links,
                                 env_name: 'GDRIVE_PUBLIC_LINKS',
                                 description: 'Uploaded file links should be public',
                                 optional: true,
                                 default_value: false,
                                 is_string: false)
  ]
end
description() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 46
def self.description
  'Upload files to Google Drive'
end
details() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 50
def self.details
  [
    'Upload files to Google Drive',
    'See https://github.com/gimite/google-drive-ruby/blob/master/doc/authorization.md to get a keyfile'
  ].join("\n")
end
is_supported?(platform) click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 117
def self.is_supported?(platform)
  true
end
output() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 102
def self.output
  [
    ['GDRIVE_UPLOADED_FILE_NAMES', 'The array of names of uploaded files'],
    ['GDRIVE_UPLOADED_FILE_URLS', 'The array of links to uploaded files']
  ]
end
return_value() click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 109
def self.return_value
  # nothing
end
run(params) click to toggle source
# File lib/fastlane/plugin/google_drive/actions/upload_to_google_drive_action.rb, line 11
def self.run(params)
  UI.message("Using config file: #{params[:drive_keyfile]}")

  session = Helper::GoogleDriveHelper.setup(
    keyfile: params[:drive_keyfile],
    service_account: params[:service_account]
  )

  folder = Helper::GoogleDriveHelper.file_by_id(
    session: session, fid: params[:folder_id]
  )

  uploaded_files = []
  assets = params[:upload_files]
  generate_public_links = params[:public_links]

  UI.abort_with_message!("No files to upload") if assets.nil? or assets.empty?

  assets.each do |asset|
    UI.message('------------------')
    UI.important("Uploading #{asset}")
    uploaded_files.push(Helper::GoogleDriveHelper.upload_file(file: folder, file_name: asset))
    UI.success('Success')
    UI.message('------------------')
  end

  Actions.lane_context[SharedValues::GDRIVE_UPLOADED_FILE_NAMES] = uploaded_files.map(&:title)
  Actions.lane_context[SharedValues::GDRIVE_UPLOADED_FILE_URLS] =
    if generate_public_links
      uploaded_files.map(&Helper::GoogleDriveHelper.method(:create_public_url))
    else
      uploaded_files.map(&:human_url)
    end
end