BuildScripts/xcode/build_phases/features_generator/features_generator.rb

41 lines
894 B
Ruby
Executable File

require 'yaml'
require 'erb'
require_relative 'managers/managers'
# Input files paths
build_settings_file_path = ARGV[0]
generated_features_enum_file_path = ARGV[1]
features_enum_template =
"
//MARK: - Feature toggles
public enum FeatureToggle: String, Codable, RawRepresentable, CaseIterable {
<% for @feature in @features %>
case <%= @feature %>
<% end %>
}
"
class FeatureUtils
include ERB::Util
attr_accessor :features
def initialize(features)
@features = features
end
def render(template)
ERB.new(template).result(binding)
end
end
build_settings_features_list = Managers::FileManager.load_from_file_YAML(build_settings_file_path)["features"]
utils = FeatureUtils.new(build_settings_features_list)
rendered_enum = utils.render(features_enum_template).strip
Managers::FileManager.save_data_to_file(generated_features_enum_file_path, rendered_enum)