Skip to content

Instantly share code, notes, and snippets.

@QuinnStephens
Last active June 20, 2019 18:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save QuinnStephens/b9c85737deff5092ac107caa71f52671 to your computer and use it in GitHub Desktop.
Save QuinnStephens/b9c85737deff5092ac107caa71f52671 to your computer and use it in GitHub Desktop.
@interface Environment: NSObject
@property (nonatomic, strong) NSString *domain;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *facebookKey;
-(id)initWithData:(NSDictionary *)data;
@end
@implementation Environment
-(id)initWithData:(NSDictionary *)data {
self = [super init];
self.domain = data[@"domain"];
self.name = data[@"name"];
self.facebookKey = data[@"facebook"];
return self;
}
@end
-(NSArray*)loadEnvironmentsFromDotEnv {
NSString *path = [[NSBundle mainBundle] pathForResource:@".env" ofType:nil];
NSString *rawEnv = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray *lines = [rawEnv componentsSeparatedByString:@"\n"];
NSMutableDictionary *envData = [NSMutableDictionary new];
for (NSString *line in lines) {
NSString *lineTrimmed = [line stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if ([lineTrimmed length] == 0) {
continue;
}
NSArray *lineComponents = [line componentsSeparatedByString:@"="];
NSString *key = lineComponents[0];
NSString *rawValue = lineComponents[1];
NSArray *valueComponents = [rawValue componentsSeparatedByString:@","];
if ([valueComponents count] > 1) {
[envData setObject:valueComponents forKey:key];
} else {
[envData setObject:rawValue forKey:key];
}
}
NSMutableArray *environments = [NSMutableArray new];
for (NSString *envKey in envData[@"environments"]) {
NSMutableDictionary *envDict = [NSMutableDictionary new];
for (NSString *key in envData) {
NSArray *keyComponents = [key componentsSeparatedByString:envKey];
if ([keyComponents count] > 1) {
[envDict setObject:envData[key] forKey:keyComponents[1]];
}
}
[environments addObject:[[Environment alloc] initWithData: envDict]];
}
return environments;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment