{"action":"opened","issue":{"url":"https://api.github.com/repos/frc-frecon/frecon/issues/77","labels_url":"https://api.github.com/repos/frc-frecon/frecon/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/frc-frecon/frecon/issues/77/comments","events_url":"https://api.github.com/repos/frc-frecon/frecon/issues/77/events","html_url":"https://github.com/frc-frecon/frecon/issues/77","id":107298838,"number":77,"title":"Modularize the Configuration and Environment.","user":{"login":"rye","id":1566689,"avatar_url":"https://avatars.githubusercontent.com/u/1566689?v=3","gravatar_id":"","url":"https://api.github.com/users/rye","html_url":"https://github.com/rye","followers_url":"https://api.github.com/users/rye/followers","following_url":"https://api.github.com/users/rye/following{/other_user}","gists_url":"https://api.github.com/users/rye/gists{/gist_id}","starred_url":"https://api.github.com/users/rye/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rye/subscriptions","organizations_url":"https://api.github.com/users/rye/orgs","repos_url":"https://api.github.com/users/rye/repos","events_url":"https://api.github.com/users/rye/events{/privacy}","received_events_url":"https://api.github.com/users/rye/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-09-19T00:25:07Z","updated_at":"2015-09-19T00:25:07Z","closed_at":null,"body":"# How it is now\r\n\r\nWe have a raw `Symbol` being stored in `lib/frecon/base/variables.rb` that is used as our environment configuration.  There are corresponding getter/setter methods, but nothing overly special.  Furthermore, a completely separate configuration system is used for retrieving and comprehending configurations.\r\n\r\n# How It Should Be&#8482;\r\n\r\nWe should really have a single system, `lib/frecon/environment.rb` that is used to go out and do the hunting for configuration.  A new *`Environment`* class will be created, and it will handle the business logic.  It'll be `Hash`-like, but pre-filled and basically static.  This `Environment` class will be used to (i) parse the various configurations around the place; (ii) handle any changes that are made by CLI arguments; and (iii) spit out stuff intelligently."}}