class WebTranslateIt::Configuration
Handles the configuration of your project, both via the the configuration file and via the API. Implementation example, assuming you have a valid .wti file:
configuration = WebTranslateIt::Configuration.new
Attributes
after_pull[RW]
after_push[RW]
api_key[RW]
before_pull[RW]
before_push[RW]
files[RW]
ignore_files[RW]
ignore_locales[RW]
logger[RW]
needed_locales[RW]
path[RW]
path_to_config_file[RW]
project_name[RW]
source_locale[RW]
target_locales[RW]
Public Class Methods
new(root_path = Rails.root, path_to_config_file = '.wti')
click to toggle source
Load configuration file from the path.
# File lib/web_translate_it/configuration.rb, line 16 def initialize(root_path = Rails.root, path_to_config_file = '.wti') # rubocop:todo Metrics/AbcSize, Metrics/MethodLength self.path_to_config_file = path_to_config_file self.path = root_path self.logger = logger if File.exist?(File.expand_path(path_to_config_file, path)) self.api_key = ENV.fetch('WTI_PROJECT_API_KEY') { configuration['api_key'] } self.before_pull = configuration['before_pull'] self.after_pull = configuration['after_pull'] self.before_push = configuration['before_push'] self.after_push = configuration['after_push'] self.ignore_files = configuration['ignore_files'] project_info = JSON.parse WebTranslateIt::Project.fetch_info(api_key) self.ignore_locales = locales_to_ignore(configuration) self.needed_locales = locales_needed(configuration) self.files = files_from_project(project_info['project']) self.source_locale = source_locale_from_project(project_info['project']) self.target_locales = target_locales_from_project(project_info['project']) self.project_name = project_info['project']['name'] else puts StringUtil.failure("\nNo configuration file found in #{File.expand_path(path_to_config_file, path)}") exit(1) end end
Public Instance Methods
api_url()
click to toggle source
Convenience method which returns the endpoint for fetching a list of locales for a project.
# File lib/web_translate_it/configuration.rb, line 97 def api_url "/api/projects/#{api_key}" end
configuration()
click to toggle source
# File lib/web_translate_it/configuration.rb, line 110 def configuration @configuration ||= YAML.safe_load(parse_erb_in_configuration) end
files_from_project(project)
click to toggle source
Set the project files from the Project
API. Implementation example:
configuration = WebTranslateIt::Configuration.new files = configuration.files # returns an array of TranslationFile
# File lib/web_translate_it/configuration.rb, line 67 def files_from_project(project) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength array_files = [] project['project_files'].each do |project_file| if project_file['name'].nil? || (project_file['name'].strip == '') puts "File #{project_file['id']} not set up" elsif ignore_files&.any? { |glob| File.fnmatch(glob, project_file['name']) } puts "Ignoring #{project_file['name']}" else array_files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], api_key, project_file['updated_at'], project_file['hash_file'], project_file['master_project_file_id'], project_file['fresh']) end end array_files end
locales_needed(configuration)
click to toggle source
Returns an array of locales to specifically pull from the configuration file, if set
# File lib/web_translate_it/configuration.rb, line 87 def locales_needed(configuration) Array(configuration['needed_locales']).map(&:to_s) end
locales_to_ignore(configuration)
click to toggle source
Returns an array of locales to ignore from the configuration file, if set.
# File lib/web_translate_it/configuration.rb, line 82 def locales_to_ignore(configuration) Array(configuration['ignore_locales']).map(&:to_s) end
reload()
click to toggle source
Reload project data
# File lib/web_translate_it/configuration.rb, line 42 def reload # rubocop:todo Metrics/AbcSize project_info = JSON.parse WebTranslateIt::Project.fetch_info(api_key) self.ignore_locales = locales_to_ignore(configuration) self.needed_locales = locales_needed(configuration) self.files = files_from_project(project_info['project']) self.source_locale = source_locale_from_project(project_info['project']) self.target_locales = target_locales_from_project(project_info['project']) self.project_name = project_info['project']['name'] end
source_locale_from_project(project)
click to toggle source
Returns the source locale from the Project
API.
# File lib/web_translate_it/configuration.rb, line 53 def source_locale_from_project(project) project['source_locale']['code'] end
target_locales_from_project(project)
click to toggle source
Returns the target locales from the Project
API.
# File lib/web_translate_it/configuration.rb, line 58 def target_locales_from_project(project) project['target_locales'].map { |locale| locale['code'] } end
Private Instance Methods
parse_erb_in_configuration()
click to toggle source
# File lib/web_translate_it/configuration.rb, line 116 def parse_erb_in_configuration ERB.new(File.read(File.expand_path(path_to_config_file, path))).result end