diff --git a/xcode/commonFastfile b/xcode/commonFastfile index e36fee4..21fc50e 100644 --- a/xcode/commonFastfile +++ b/xcode/commonFastfile @@ -1,6 +1,7 @@ $appName = File.basename(Dir['../*.xcworkspace'].first, '.*') require_relative 'fastlane/touchlane/lib/touchlane' +require_relative File.expand_path "../build-scripts/xcode/managers/managers" # ugly hack to add support for custom storage @@ -114,9 +115,12 @@ private_lane :generateFeaturesFile do |options| builder_features_list = options[:features] .split(",").map { |feature_name| feature_name.strip } # [ "Feature1", "Feature2", "Feature3" ] - .reject { |feature_name| feature_name.empty? } - Touchlane::Features.generate_features_file_in_project(builder_features_list, build_settings_file_path, project_features_file_path) + build_settings_features_list = Managers::FileManager.load_from_file_YAML(build_settings_file_path)["features"] + + features_hash = Touchlane::Features.generate_features_hash(builder_features_list, build_settings_features_list) + + Managers::FileManager.save_data_to_file_in_json(project_features_file_path, features_hash) end private_lane :buildConfiguration do |options| diff --git a/xcode/fastlane/touchlane/lib/touchlane/features.rb b/xcode/fastlane/touchlane/lib/touchlane/features.rb index 62d1b10..e6e65c5 100644 --- a/xcode/fastlane/touchlane/lib/touchlane/features.rb +++ b/xcode/fastlane/touchlane/lib/touchlane/features.rb @@ -1,12 +1,7 @@ -require 'json' - -require_relative File.expand_path "../build-scripts/xcode/managers/managers" - module Touchlane class Features - def self.generate_features_file_in_project(builder_features_list, build_settings_file_path, project_features_file_path) - build_settings_features_list = Managers::FileManager.load_from_file_YAML(build_settings_file_path)["features"] + def self.generate_features_hash(builder_features_list, build_settings_features_list) # Check is entered features contains in configuration file features_diff = builder_features_list - build_settings_features_list @@ -15,12 +10,10 @@ module Touchlane raise "Unexpected features: " + features_diff.join(', ') end - # Generate JSON from feature names - feature_bodies = builder_features_list.map { |feature_name| { :name => feature_name, :enabled => true} } + # Generate hash from feature names + feature_bodies = builder_features_list.map { |feature_name| { :name => feature_name, :enabled => true } } features_full_body = { :features => feature_bodies } - features_json = JSON.pretty_generate(features_full_body) - - Managers::FileManager.save_data_to_file(project_features_file_path, features_json) + features_full_body.to_hash() end private_class_method :new diff --git a/xcode/managers/lib/file_manager.rb b/xcode/managers/lib/file_manager.rb index 72381f5..45bdda8 100644 --- a/xcode/managers/lib/file_manager.rb +++ b/xcode/managers/lib/file_manager.rb @@ -1,4 +1,5 @@ require 'yaml' +require 'json' module Managers class FileManager @@ -20,6 +21,11 @@ module Managers YAML.load_file(path) end end + + def self.save_data_to_file_in_json(path, data) + json_data = JSON.pretty_generate(data) + save_data_to_file(path, json_data) + end private_class_method :new