michaelengland / fliptheswitch Goto Github PK
View Code? Open in Web Editor NEWA feature flipping library for ObjectiveC.
License: MIT License
A feature flipping library for ObjectiveC.
License: MIT License
[[FlipTheSwitch sharedInstance] enableFeature:@"my_feature"];
[[FlipTheSwitch sharedInstance] disableFeature:@"my_feature"];
[[FlipTheSwitch sharedInstance] setFeature:@"my_feature" enabled:YES];
Add valid .travis.yml
file and use to install xctool & run tests
Sub Features are not showing up in the settings controller and are thus not switchable.
They should be settable.
Currently, the README no longer reflects all the features, and how it all works. Would be good to update.
When I relaunch the app, any features that were enabled previously should be enabled by storing in NSUserDefaults
.
It would be nice to get notifications on feature status changes, so they can be enabled/disabled separate to what they trigger.
Some kind of interface to reset all generated feature flags to their default state
Allow reading from .flip.yml
file that sets default options for flip-the-switch
CLI.
Thank you
Create proper README explaining all the points (including the initial plist).
❤️ this library but only has support for CocoaPods. Would it be possible to support Carthage?
Read from a features.plist file for the initial enabled/disabled state of the features
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.
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.
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.
Add the unit tests to the Rakefile
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 readoutput
specifies the location directory of the Features.plist
file to createenabled
specifies extra features to be set as enableddisabled
specifies extra features to be set as disabledDepending on the feature description size, change the cell layout and height.
Handle those cases:
Currently the layout is borked. Needs da fix.
Add badges for project including:
Allow writing to/create settings bundle as per this article
in order to allow feature switching through the app's settings
When passing override to the command-line, should automatically override the user-set enablement of 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
.
Add Code Climate badge and investigate simplicity of adding coveralls info for both C++ & Ruby together.
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"];
App should be settings table view screen showing the enabled/disabled state of the feature.
Should be iOS app. (First version)
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 readoutput
specifies the location directory of the FlipTheSwitch+Features.{h,m}
files to createenabled
specifies extra features to be set as enableddisabled
specifies extra features to be set as disabledThe sub feature disabled_subfeature
in ExpectedFeatures.plist
is one level too high in the hierarchy. So the test is passing for the wrong reason.
Related to #51
Create a skeleton for the flip_the_switch
gem.
Add Frank Cucumber acceptance tests using the example app.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.