46 lines
1.0 KiB
Ruby
Executable File
46 lines
1.0 KiB
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"]
|
|
|
|
if build_settings_features_list.nil? or build_settings_features_list.empty?
|
|
raise "There are no features in " + build_settings_file_path
|
|
end
|
|
|
|
# Generate enum Feature Toggles
|
|
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)
|