# coding: utf-8 | |
require 'open-uri' | |
module Fastlane | |
module Actions | |
class DownloadCrowdinResourceAction < Action | |
HOST_NAME = 'https://api.crowdin.com' | |
def self.run(params) | |
token = params[:api_token] | |
project_id = params[:project_identifier] | |
language = params[:language] | |
path = params[:download_path] | |
file = params[:file_to_download] | |
download_url = "#{HOST_NAME}/api/project/#{project_id}/export-file?key=#{token}&language=#{language}&file=#{file}" | |
File.open(path, "wb") do |saved_file| | |
open(download_url, "rb") do |read_file| | |
saved_file.write(read_file.read) | |
end | |
end | |
UI.success "Successfully downloaded localization." | |
end | |
def self.description | |
"Download localization resource from Crowdin" | |
end | |
def self.authors | |
["horimislime"] | |
end | |
def self.available_options | |
[ | |
FastlaneCore::ConfigItem.new(key: :api_token, | |
env_name: "CROWDIN_API_TOKEN", | |
description: "API Token for Crowdin Access", | |
optional: false, | |
type: String, | |
verify_block: proc do |value| | |
UI.user_error!("No API token given, pass using `api_token: 'token'`") if value.to_s.length == 0 | |
end), | |
FastlaneCore::ConfigItem.new(key: :project_identifier, | |
env_name: "CROWDIN_PROJECT_IDENTIFIER", | |
description: "Public identifier of the Crowdin project", | |
optional: false, | |
type: String, | |
verify_block: proc do |value| | |
UI.user_error!("No public identifier given, pass using `public_identifier: 'public_identifier'`") if value.to_s.length == 0 | |
end), | |
FastlaneCore::ConfigItem.new(key: :language, | |
env_name: "CROWDIN_LANGUAGE_CODE", | |
description: "Language code of localization you want to download", | |
optional: true, | |
type: String, | |
default_value: 'en'), | |
FastlaneCore::ConfigItem.new(key: :download_path, | |
env_name: "CROWDIN_RESOURCE_DOWNLOAD_PATH", | |
description: "The location you want to save Crowdin resource in", | |
optional: false, | |
type: String), | |
FastlaneCore::ConfigItem.new(key: :file_to_download, | |
env_name: "CROWDIN_RESOURCE_DOWNLOAD_FILE", | |
description: "The localization file you want to download", | |
optional: false, | |
type: String) | |
] | |
end | |
def self.is_supported?(platform) | |
[:ios, :tvos, :osx, :watchos].include?(platform) | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment