class FlipTheSwitch::Generator::Settings

Public Instance Methods

generate() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 7
def generate
  create_settings_bundle_if_not_exists
  read_settings
  delete_existing_settings_if_exist
  write_settings
end

Private Instance Methods

create_settings_bundle_if_not_exists() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 16
def create_settings_bundle_if_not_exists
  unless Dir.exists?(settings_bundle)
    Dir.mkdir(settings_bundle)
  end
end
current_plist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 103
def current_plist
  @current_plist ||= if File.exists?(root_plist)
    ::Plist::parse_xml(root_plist)
  else
    {}
  end
end
delete_existing_settings_if_exist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 26
def delete_existing_settings_if_exist
  delete_root_plist_if_exists
  delete_features_plist_if_exists
end
delete_features_plist_if_exists() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 40
def delete_features_plist_if_exists
  delete_file(features_plist)
end
delete_file(file) click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 52
def delete_file(file)
  File.delete(file) if File.exists?(file)
end
delete_root_plist_if_exists() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 36
def delete_root_plist_if_exists
  delete_file(root_plist)
end
existing_root_preferences() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 66
def existing_root_preferences
  current_plist['PreferenceSpecifiers'] || []
end
feature_properties() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 84
def feature_properties
  {'PreferenceSpecifiers' => feature_toggles}
end
feature_root_preferences() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 70
def feature_root_preferences
  [
    {
      'Title' => 'Features',
      'Type' => 'PSGroupSpecifier'
    },
    {
      'File' => 'Features',
      'Title' => 'Features',
      'Type' => 'PSChildPaneSpecifier'
    }
  ]
end
feature_title(feature) click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 99
def feature_title(feature)
    feature.name.gsub('_', ' ').capitalize
end
feature_toggles() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 88
def feature_toggles
  features.map { |feature|
    {
      'Type' => 'PSToggleSwitchSpecifier',
      'Title' => feature_title(feature),
      'Key' => "FTS_FEATURE_#{feature.name}",
      'DefaultValue' => feature.enabled
    }
  }
end
features_plist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 115
def features_plist
  File.join(settings_bundle, 'Features.plist')
end
read_settings() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 22
def read_settings
  current_plist
end
root() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 56
def root
  current_plist.merge('PreferenceSpecifiers' => root_preferences)
end
root_plist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 111
def root_plist
  File.join(settings_bundle, 'Root.plist')
end
root_preferences() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 60
def root_preferences
  existing_root_preferences.delete_if { |root_preference|
    root_preference['Title'] == 'Features'
  } + feature_root_preferences
end
settings_bundle() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 119
def settings_bundle
  File.join(output, 'Settings.bundle')
end
write_features_plist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 48
def write_features_plist
  ::Plist::Emit.save_plist(feature_properties, features_plist)
end
write_root_plist() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 44
def write_root_plist
  ::Plist::Emit.save_plist(root, root_plist)
end
write_settings() click to toggle source
# File lib/flip_the_switch/generator/settings.rb, line 31
def write_settings
  write_root_plist
  write_features_plist
end