Git Product home page Git Product logo

fliptheswitch's People

Contributors

fraur avatar garriguv avatar jberkel avatar michaelengland avatar nerdsrob avatar qmoya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

fliptheswitch's Issues

Adding support for subfeature

Do we think it's available to add subfeatures

feature_a:
  enabled: true
  feature_b:
     enabled: true
  feature_c:
     enabled: true
feature_d:
  enabled: true

which would make appropriate if statements in generated code,

i.e

isFeatureBEnabled === [[FlipTheSwitch sharedInstance] isFeatureEnabled:@"feature_a"] && [[FlipTheSwitch sharedInstance] isFeatureEnabled:@"feature_b"];

Auto-create category for features

Add a binary with usageflip-the-switch category.

This call auto-generates a FlipTheSwitch+Features.{h,m} files for enabled/disabled features such as:

/* AUTO-GENERATED. DO NOT ALTER */

@interface FlipTheSwitch (Features)
+ (BOOL)isAmazingThingEnabled;
+ (void)enableAmazingThing;
+ (void)disableAmazingThing;
+ (void)setAmazingThingEnabled:(BOOL)enabled;
@end

By default, this should read a yaml file (if exists) at the current location, and generate the FlipTheSwitch+Features.{h,m} files from it.
Extra options are:

  • input specifies the location directory of the features.yml file to read
  • output specifies the location directory of the FlipTheSwitch+Features.{h,m} files to create
  • enabled specifies extra features to be set as enabled
  • disabled specifies extra features to be set as disabled

Create README.md

Create proper README explaining all the points (including the initial plist).

Fix podspec for Mac & iOS

Currently the podspec is available for both, but actually it would fail on Mac. We need to fix the podspec so that it'll be correct for both.

Notifications on Feature Status

It would be nice to get notifications on feature status changes, so they can be enabled/disabled separate to what they trigger.

Alpha & Beta Defaults

Both Alpha and Beta should have configuration options available for individual feature flags.

Both should default to the assumed set of feature toggles indicative of the next release (ie pulled from master).

A user can override these defaults locally.

Flags toggled to a state different than the default by a user should persist when upgrading to a new version.

Nice to have: There should be a button which resets the toggles to the state provided from master.

Layered Inheritance Not Working

If I have a feature file:

{
  "development": {
    "dev_second_screen": {
      "enabled": true,
      "description": "Second screen (or Apple TV with mirroring turned off) sees a special player"
    }
  },
  "alpha": {
    "inherits_from": "development"
  },
  "beta": {
    "inherits_from": "alpha"
  }
}

Then it will fail to get the items, and generate empty feature plist files.

Use environments for features

features.yml file should allow multiple environment settings e.g.:

default: &DEFAULT
  some_basic_feature: Yes
  some_development_feature: No

development:
  <<: *DEFAULT
  some_development_feature: Yes

beta:
  <<: *DEFAULT

and should be set as option in CLI --environment with alias -e.

Allow in-app feature setting & unsetting

[[FlipTheSwitch sharedInstance] enableFeature:@"my_feature"];
[[FlipTheSwitch sharedInstance] disableFeature:@"my_feature"];
[[FlipTheSwitch sharedInstance] setFeature:@"my_feature" enabled:YES];

Carthage integration

❤️ this library but only has support for CocoaPods. Would it be possible to support Carthage?

Persist through app close

When I relaunch the app, any features that were enabled previously should be enabled by storing in NSUserDefaults.

Auto-create plist file for features

Add a binary with usageflip-the-switch plist.

This call auto-generates a Features.plist file for enabled/disabled features such as:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>amazing_thing</key>
    <true/>
</dict>
</plist>

By default, this should read a yaml file (if exists) at the current location, and generate a plist file from it.
Extra options are:

  • input specifies the location directory of the features.yml file to read
  • output specifies the location directory of the Features.plist file to create
  • enabled specifies extra features to be set as enabled
  • disabled specifies extra features to be set as disabled

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.