Commit Graph

344 Commits

Author SHA1 Message Date
Hannah Wolfe
f5fe772c09 Temp add minification in grunt for prod JS files
no issue

- This is required due to a bug in ember-cli, see: ember-cli/ember-cli#5795
2016-04-14 10:34:14 +01:00
Jason Williams
7559bb7b26 Fix test conflicts
Closes #6710
- Restore config to baseline before testing.
- Don't mutate fixture data.
2016-04-13 11:27:26 -05:00
Hannah Wolfe
6b74e1a34a Dev tooling clean up
- remove old casper.js tests
- cleanup mochacli groups that are less useful than `grunt test:path`
- improve inline Gruntfile.js docs
- fixup coverage for new internal apps
- add new coverage-all task which works for all our tests
- reverse order of master-warn messages to make this clearer
- remove bluebird from greenkeeper ignores
2016-04-13 13:21:33 +01:00
Austin Burdine
1181707a9d move private-blogging functionality into an internal app
closes #5914, #6589
- moves all private-blogging related code & tests into /server/apps/private-blogging/
- rework Grunt to run private-blogging tests
- modify server apps code to have a place for internal apps
2016-04-11 08:58:41 -05:00
Jason Williams
9fe573a0c5 Refactor content deletion
- Simplify the `init` method in `models/index.js` so that it no longer
  returns a promise. Easier to use.
- Eliminates the `deleteAllContent` method from `models/index.js` as it
  can all be handled at the API layer in a single spot.
- Optimize `destroyAllContent` in `api/db.js`. Eliminates
  double-fetching every post from the database and converting it to
  JSON. Also only fetches ids from the database instead of the entire
  model.
- Eliminates the custom static method `destroy` in the Post model in
  favor of handling detaching tag relations in a single place (the
  `destroying` event). This also eliminates a big source of unneeded
  database round trips--needing to get post ids to feed into
  `Post.destroy()` which then re-fetches the post again.
2016-03-22 10:10:09 -05:00
Hannah Wolfe
398b07c9c2 Fetch about page images properly
- Apparently I really didn't test this very well...
... turns out I was looking at the built assets folder instead of the client/public folder
... and this wasn't working at all
😭
2016-02-18 13:49:42 +00:00
Hannah Wolfe
c301510cd1 Refactor gravatarLookup, remove request dependency
no issue

- request is quite a heavy dependency
- we were only using request in 3 places: a test, storing contrib images in the gruntfile & the gravatar lookup
- all 3 are relatively simple to do with the http/https module
- refactored all 3, removed request
2016-02-16 11:12:01 +00:00
JT Turner
1f4c01d207 Started moving meta data fetching to functions.
issue #6186
- Moved asset helper logic to a asset url function.
- Created author image function to be used in ghost_head helper.
- Created author url function to be used in the ghost_head helper.
- Created canonical url function to be used in the ghost_head helper.
- Moved meta_description helper logic to a function.
- Moved excerpt helper logic to a function.
- Created an index in data/meta to be used in ghost_head helper to get all data.
- Created keyword function to be used in the ghost_head helper.
- Created modified data function to be used in the ghost_head helper.
- Created next url function to be used in the ghost_head helper.
- Created ogType function to be used in the ghost_head helper.
- Created previous url function to be used in the ghost_head helper.
- Created published data function to be used in the ghost_head helper.
- Created rss url function to be used in the ghost_head helper.
- Created schema function to be used in the ghost_head helper.
- Created structured data function to be used in the ghost_head helper.
- Moved meta_title helper logic to a title function.
- Moved url helper logic to a url function.
- Wrote tests for all the new functions

This is just the first step. I plan on refactoring the ghost head to use these new functions.
2016-01-23 13:58:21 -08:00
Hannah Wolfe
323b57b439 Release should run all prod tasks
refs #6150

For some reason, release was only set to do the ember prod task, not all prod tasks
This ensures ghost-url gets minified and included as well as future proofing any other prod tasks
2015-12-15 21:33:10 +00:00
Austin Burdine
8f89997deb minify ghost.url.api in production
closes #6150
- clean up ghost.url.api script
- switch to inlining config and making the ghost-url.js file an external request
- add minification in production
2015-12-10 08:46:58 -06:00
Hannah Wolfe
739c7d36ed Streamline when grunt init is called in tests
- test-server only needs submodules to be updated
2015-12-04 19:53:50 +00:00
Kevin Ansfield
4a32098b64 Install client dependencies when running TEST_SUITE=lint build
refs #6161
- run the client initialization tasks as part of the `TEST_SUITE=lint` to fix problems with missing `ember-suave` jscs preset
2015-12-04 09:58:03 +00:00
Kevin Ansfield
a102eff0ed Separate the server/client/lint test suites on Travis
no issue
- add separate grunt tasks for validating all/client/server test suites
- modify `grunt validate` to respect the `TEST_SUITE` env var if present
- default to `TEST_SUITE=server` on Travis
- add an individual builds to the Travis matrix that test the client and run linting as separate jobs
- don't run `ensureConfig` task if we're performing client-only tests

Previously we were duplicating the client tests and linting for every node and database version in our build matrix. Duplicating those tasks a waste of time/resources as the client tests are now completely isolated from the server and so different node/database versions have no effect. This PR is an attempt at removing the duplication to speed up our Travis runs.
2015-11-30 15:21:08 +00:00
Kevin Ansfield
3d6856614f Use es6 across client and add ember-suave to enforce rules
no issue
- add ember-suave dependency
- upgrade grunt-jscs dependency
- add a new .jscsrc for the client's tests directory that extends from client's base .jscsrc
- separate client tests in Gruntfile jscs task so they pick up the test's .jscsrc
- standardize es6 usage across client
2015-11-30 10:41:01 +00:00
Sebastian Gierlinger
ac53fc9c3f Merge pull request #6119 from boennemann/chore-grunt-release
Dynamically build file patterns for release task
2015-11-24 11:14:08 +01:00
Stephan Bönnemann
c22c866e93 Dynamically build file patterns for release task
- converted release task to function task
- dynamically setting config for copy task by reading `.npmignore` on demand
- speeds up all other tasks because `.npmignore` is no longer read from filesystem
2015-11-23 22:45:48 +01:00
Hannah Wolfe
2aa16514a3 Rename post_count to count.posts
refs  #6009

- This is a straight rename, no functionality is added
- The dot syntax requires pre/post processing to convert the name
- This PR also includes several updates to the tests, as they weren't being run as part of Travis!
2015-11-20 14:59:58 +00:00
Austin Burdine
250edf2b06 add themes ajax helper
closes #5942
- adds helper script for calling the api in themes
- adds tests for said helper script
2015-11-19 07:13:54 -06:00
Hannah Wolfe
9c691f6d05 Don't run Casper.js tests by default
- remove casper tests from `grunt validate`
- the tests are still in the codebase & runnable manually for now
2015-10-12 18:01:52 +01:00
Gabor Javorszky
309356e90c Make grunt test fail if no filename provided
Closes #5885

Instead of hiding a notice in a sea of printed stack traces among the
eventual error, this change will cause grunt test to halt and output an
error message with some helpful info as to what went wrong.
2015-09-27 18:30:59 +01:00
Sebastian Gierlinger
cae46e9efe Optimize release dependencies
no issue
- added a new grunt task for npm dedupe
- added shell:dedupe to realease task
2015-09-23 15:21:11 +02:00
Austin Burdine
6c5fea40ca Remove auto-inclusion of jQuery via ghost_foot
closes #5298
- remove all harcoded instances of jQuery throughout the front-end of the blog
- add migration function to add cdn link to ghost_foot code injection when migrating up from version 003
- migration version bump
2015-09-02 13:39:22 +01:00
Jason Williams
f2c2d4ff24 Merge pull request #5616 from ErisDS/issue-5495
Don't escape path for ember
2015-08-03 15:05:03 -05:00
cobbspur
45d1541666 Increase api integration coverage for posts
No Issue

- adds integration tests for posts endpoint - read and browse
- adds grunt coverage-integration task
2015-07-30 17:54:14 +01:00
Hannah Wolfe
cb8c2a5235 Don't escape path for ember
closes #5495

- we have to escape paths for bower, but ember already does this
2015-07-29 21:52:14 +01:00
cobbspur
33b9343942 Update top-gh-contribs dependency
refs #5503

- updates package.json to using 2.0.2 version of top-gh-conribs
- updates gruntfile, using moment to calculate time period to observe
- new version of top-gh-contribs is not related to top 100 contributors therefore returns more users
- observed timepsan is reverted to 90 days now that top-gh-contribs fetches enough contributors
2015-07-20 17:03:38 +01:00
Jason Williams
40f59e2e4b Fix watch task paths
Closes #5322
2015-06-22 22:12:19 -05:00
Roy van Kaathoven
d23b67737b output stderror instead of stdout to show detailed errors when spawnCasperJS fails 2015-06-12 20:37:23 +02:00
Austin Burdine
5e7ff40318 updates Ember-CLI to 0.2.7
No issue
- moves the authentication initializer to be an instance initializer
- updates dependencies
- fixes error with asset-delivery not copying
- fixes problem with testing by re-building ember before casper tests
2015-06-08 09:18:50 -04:00
Jason Williams
58ab576455 Update grunt watch task with new file and option names 2015-06-05 14:48:04 -05:00
Hannah Wolfe
06959661c0 Misc grunt /dev updates
- Updated all dev dependencies in the root package.json
- Added `--colors` to mocha when called from grunt test:... so that works better
- Removed non-unit tests from coverage, because they're just not useful
- Updated docker config to generate useful docs again - as a statement of intent, I also updated docs in key files
- Setup grunt watch-docs task for documentation writing easyness
2015-05-28 20:25:14 +01:00
John O'Nolan
13ec196f2e Refactor about page 2015-05-22 19:05:15 +01:00
John O'Nolan
3e6cf30cfd Automate CSScomb 2015-05-22 19:05:11 +01:00
John O'Nolan
208999a77f Introduce CSScomb 2015-05-22 19:05:10 +01:00
John O'Nolan
1daee7cff1 New onboarding markup and styles 2015-05-22 17:50:13 +01:00
Hannah Wolfe
da8752cc88 Merge pull request #5290 from josephwegner/chalk-colors-swap
replace colors with chalk everywhere
2015-05-21 16:28:41 +01:00
Joe Wegner
f26179ae6a replace colors with chalk everywhere
issue #5259
- removes the colors dependency
- adds in chalk dependency, and migrates everything to use that
- reduces some specs now that the log calls are cleaner
2015-05-19 11:07:40 -05:00
Hannah Wolfe
050b03d2bd Cache control middleware refactor
refs #5286

- split cache control middleware into its own file
- split out cache control tests
- add new mochacli command for running just middleware tests
2015-05-18 22:20:26 +01:00
Hannah Wolfe
8e8f4125f4 Improve grunt clean & add grunt test-ember
no issue
- old grunt testem task didn't work - has been renamed and fixed
- grunt clean task updated to clear out dependencies, making it more useful for helping fix cludged envs
2015-05-17 22:41:49 +01:00
Sebastian Gierlinger
a0330b2418 Remove task from test-all
no issue
- listing takes like forever and stalls running the tests during
development
- grunt test-all only runs tests, make sure to run grunt validate
before submitting a PR
2015-04-22 22:39:35 +02:00
Hannah Wolfe
7c1159616b Fix issue with npm-shrinkwrap in release
- wrong order of commands prevented shrinkwrap file from being correctly included in zip file
2015-04-22 17:46:26 +01:00
Hannah Wolfe
6d04ead9f2 Switch test coverage to use Istanbul
closes #4644

- Switch from using blanket to istanbul
- Rename some test files for consistency (and so that they will run)
2015-04-19 15:54:05 +01:00
Hannah Wolfe
e1258f4002 Fixing ember build
- removing --silent so we can see errors
- pinning dependencies
- the error with normalize is resolved by pinning ember-cli-sass to 3.1.0, and breaks if upgrading to 3.1.1 as a result of issues with libsass
2015-03-31 10:50:13 +02:00
cobbspur
511d69cd1c Fix ember-cli commands to work with windows 2015-03-19 18:48:41 +00:00
Matt Enlow
58635b3e0a Serve files to core/built/assets/
- see core/client/lib/assets-delivery/index.js for how this is done
- Turn off ember-cli fingerprinting
- ember-cli 0.2.0; Update .npmignore
- Fallback to old version of ember-cli-sass due to lib-sass errors
- Keep ember-data at beta-14.1 until we find the dep that's breaking on snapshot.attr
- Fix release task to ignore blank lines in .npmignore
2015-03-12 15:59:02 -06:00
Matt Enlow
c7535c42cf Remove client/docs 2015-03-11 12:37:42 -06:00
Jason Williams
5b72a0eb18 fix routes test. ember-mocha@0.4.2 2015-03-11 12:37:42 -06:00
Jason Williams
e492c43067 Fix up ember-cli generated files and misc jscs/jshint errors 2015-03-11 12:37:42 -06:00
Jason Williams
184da01702 Change grunt jshint and jscs tasks 2015-03-11 12:37:42 -06:00
Jason Williams
0b96765321 Set up tests for ember-cli 2015-03-11 12:37:41 -06:00
Matt Enlow
9e7658f98d grunt init, dev
- added grunt-bg-shell
- reorganized asset tasks into one location
- turn off ember-cli analytics
- remove app/config-dev and config-prod
- remove qunit from bower.json
- remove express from package.json
2015-03-11 12:37:41 -06:00
Hannah Wolfe
fa9335290d No more source maps in grunt prod
refs #4955

- needed to build on ubuntu 14.14 with node 12 (DO image)
- barely used anyway, as release task has it disabled
2015-03-09 17:38:08 +00:00
Hannah Wolfe
65fe7374f9 Adding npm shrinkwrap during release 2015-02-27 17:15:38 +00:00
Sebastian Gierlinger
2032410690 Merge pull request #4924 from ErisDS/issue-2990-grunt-testem
Add grunt testem alias + some DRY in Gruntfile.js
2015-02-18 19:53:52 +01:00
Hannah Wolfe
196cd8971e Add grunt testem alias + some DRY in Gruntfile.js
refs #2990

- add an alias for grunt testem
- add test-setup task to dry up some tasks
2015-02-17 19:12:29 +00:00
Paul Adam Davis
68eb6b67b0 Drag & Drop Navigation Reordering
Closes #4540

- Implements drag & drop to reorder navigation items
- Adds a `sort` property to navigation items
- Adds a tiny library to enable touch events for drag & drop. It hooks onto jQuery UI.
- Sort nav items before being saved
- Adds `settings-view-navigation` to route for body class
2015-02-12 17:02:46 +00:00
Jason Williams
2a91a1071e Update Ember to 1.10.0
No issue.
- Ember@1.10.0
- Update grunt-ember-templates to version that supports HTMLBars.
- Update Gruntfile.js to compile templates with HTMLBars.
- Convert Handlebars code to its HTMLBars equivalent.
2015-02-09 16:20:16 +00:00
Jason Williams
e0e39aa160 Retry API request when buildAboutPage gets 202
No Issue.
- top-gh-contribs@1.0.0.
- Enable 'retry' option which will retry the GitHub API request
  in the event it receives a status of 202 (retry momentarily).
2015-02-05 18:52:53 +00:00
Paul Adam Davis
f492502f33 Update grunt-sass to 0.17.0
No issue

- Allows us to use Sass Maps
- Fixes the 'compressed' output style, so we can have minified code
again!
2015-02-03 10:33:25 +00:00
Hannah Wolfe
fb46b7d356 Misc test cleanup
refs #4644

- Changes tests using assert style to use should style for consistency
- Updates moment().subtract() to remove deprecation warning
- Changes test and test-coverage grunt commands to run in a way which is
  compatible with both *nix and win envs
- refs #4644 as this is a step towards getting coverage working properly
  again
2015-01-10 11:39:18 +00:00
Jason Williams
1b8796b993 Make authenticated GitHub API requests from Travis
No Issue
- top-gh-contribs@0.0.5
- Add oauth key to .travis.yml with public-only access
2015-01-08 16:21:22 +00:00
Jason Williams
11c7d75b1b Show info on about page task failure
No Issue.
- gh-top-contribs@0.0.4
- package now provides information when a failure occurs.
2015-01-07 17:28:03 +00:00
Robert Jackson
a1ed9adf92
Remove ObjectController proxying behavior.
Ember.ObjectController (and Ember.ArrayController) will be deprecated in
Ember 1.11 (and removed from core in Ember 2.0). The reasoning is
detailed in the Ember 2.0 RFC.

This PR does the following:

* Updates templates/controllers/views to explicitly reference model
  properties (instead of relying on proxying behavior).
* Clearly delineate where certain properties are being set or retrieved
  from (for example it was not clear exactly where `scratch` and
  `titleScratch` were stored).
* Remove usage of `Ember.ObjectController`.
* Add JSCS rule to prevent future PR's from adding regressions.
2015-01-01 21:51:20 -05:00
Jason Williams
8af41b8aee Fail buildAboutPage task on error
No Issue
- If buildAboutPage encounters a problem, fail the task so
  the entire test suite doesn't run only to fail because the
  template partial is missing.
- Cleaned up task.
2014-12-25 16:50:52 +00:00
Hannah Wolfe
13caeaa65e grunt test task - easily run single test files
no issue
- adds a new grunt test task, which takes a file option representing the path to the test file you want to run
E.g. grunt test --file=unit/config_spec.js OR grunt test --file=integration/import_spec.js
- can run any unit, integration or route task
- can easily be expanded to handle running other tests in future
2014-12-24 13:51:16 +00:00
Jason Williams
837446c570 Move testem.json into client tests directory. 2014-12-05 14:53:45 +00:00
Hannah Wolfe
9783f16e76 Adds markdown highlight support
closes #4574

- adds highlight showdown extension with tests
2014-12-04 13:37:29 +00:00
Hannah Wolfe
13757041d9 Merge pull request #4270 from mispy/footnotes2
Footnotes extension for Showdown
2014-12-03 13:38:47 +00:00
Nazar Gargol
df5a598718 Cleans up HTML data attributes on body in default.hbs
closes #4485

- removes data attributes used on body in default.hbs
- introduces new way to generate configuration through meta tags
- config initializer consumes configurations from the meta tags using parser
- moves blog_title helper/value to be a property in a configuration api
2014-11-29 17:09:43 +01:00
Robert Jackson
ef71d932f3
Add initial client unit test. 2014-11-26 23:20:50 -05:00
Hannah Wolfe
d3f70e3b24 Update showdown to showdown-ghost 0.3.4
closes #2675

- update showdown to the newly published showdown-ghost module which has a fix for the lack of language support in codeblocks
2014-11-15 16:37:35 +00:00
Jaiden Mispy
31eea94b18 Add footnotes extension to showdown
refs 1318
- based on Markdown Extra https://michelf.ca/projects/php-markdown/extra/
- allows [^n] for automatic numbering based on sequence
2014-11-11 19:24:04 +11:00
Paul Adam Davis
df69b6ea82 Use nested output style for Sass
References #4389

As a result of https://github.com/TryGhost/Ghost/pull/4389#issuecomment-61637323 the best way to keep everything working nicely is to use the `nested` outputStyle for now.
2014-11-04 14:35:08 +00:00
Paul Adam Davis
4930e9fd65 Update Sass Grunt task output style
No issue

A recent update to NodeSass changed the keyword for output style from `style` to `outputStyle`.
This updates that, thus making the minfied CSS, actually minfied.
2014-11-03 14:13:19 +00:00
Hannah Wolfe
20fbcc1e59 Merge pull request #4335 from jaswilli/jscs
Enable JSCS checking on client.
2014-10-25 19:44:16 +03:00
Jason Williams
0f17378b26 Enable JSCS checking on client.
Refs #4001
- grunt-jscs@0.8.1 which provides ES6 support.
2014-10-25 16:13:04 +00:00
Robert Jackson
a3456b7e1c Remove lodash from admin client.
* Adds `bind`, `isFinite`, and `isNumber` utility functions from lodash.
* Use new util funtions instead of lodash throughout the codebase.
* Remove lodash from vendor builds.
2014-10-23 18:27:09 +00:00
Jason Williams
b28206c899 Output spaces instead of tabs in buildAbout task
No Issue
2014-10-21 16:27:48 +00:00
Paul Adam Davis
6fd27796f4 Implement popovers 2014-10-20 22:09:45 +01:00
Hannah Wolfe
5199a007b5 frontend functional tests -> frontend route tests
no issue

- Some of the tests were duplicated and all of these tests are faster and easier to do with super test as we aren't testing interactions
- Introduced a new test util to toggle permalinks which allows us to test the different structures
- Using cheerio in route tests to test the HTML / XML output is well formed
2014-10-19 21:10:13 +02:00
Hannah Wolfe
2c6d43a0c0 Refactor helpers & tests into individual files
no issue

- Split theme helpers into individual files for each
- Do the same for tests
- Have utils to share some things between them
- Move assetHash onto config
2014-10-14 22:52:40 +02:00
Hannah Wolfe
00ef9cfcb1 Custom showdown extensions should be linted
ref #4243

- Removing /lib/ from the list of things which aren't linted, as this is
  all custom code
- Fixing up the two files to pass linting, erring on the side of caution
  with disabling regexp rules vs fixing regexes!
2014-10-12 15:28:19 +02:00
Mattias Cibien
f2b2cf2519 Clean up hardcoded ghost paths
closes #4144
- made contributors template use the `gh-path` helper
- Removing blogRoot from application.js
- made error image use the `gh-path` helper
2014-10-06 16:33:58 +02:00
Hannah Wolfe
efea8dc502 Moving nanoscroller to be managed by bower 2014-10-05 22:08:36 +01:00
Fabian Becker
40254adc92 Implements module tests
closes #2521
- Add new module tests
- Implements new `test-module` task to specifically run module tests
2014-09-29 22:33:09 +02:00
Hannah Wolfe
0127dd9e6c Adding size param to contrib images
no issue
- reduces filesize significantly, whilst not impacting quality
2014-09-25 10:53:20 +01:00
Matt Enlow
d4bf80430c Update top-gh-contribs to get contributors within last 90 days
Closes #4130
2014-09-24 22:57:45 -06:00
Fabian Becker
a6cf795029 Fixes sass:compress
no ref
- Use absolute path for compress/sourceMap
2014-09-22 01:21:46 +02:00
Hannah Wolfe
94feb8616a Adds grunt lint task for code style checking
no issue

- convenience function runs both jshint and jscs
2014-09-19 15:52:48 +01:00
Harry Wolff
469aaa398c Add jscs task to grunt file and clean up files to adhere to jscs rules.
resolves #1920

- updates all files to conform to style settings.
2014-09-17 21:44:29 -04:00
Julien Gilli
454abc51ce Support --reporter and --reporter-output when running tests.
When running any Grunt task that runs tests with Mocha, the two
following command line options are now supported:
- --reporter: allows to specify a reporter, default is 'spec'.
- --reporter-output: allows to specify a file where Mocha's output will
  be stored.

These two command line options make it easier to retrieve and parse test
results when tests are run on a continuous integration platform like
Jenkins.

Fixes #4038.
2014-09-17 15:46:39 -07:00
Paul Adam Davis
9b94e71805 Static nanoscroller integration
References #1892

A static integration of https://github.com/jamesflorentino/nanoScrollerJS



This is WIP with the goal of getting feedback on and deciding how we should integrate this into Ghost.
2014-09-14 17:15:57 +01:00
Matt Enlow
12cb93e333 Merge pull request #3953 from halfdan/2666-jshint-test
Apply JSHint to test files.
2014-09-03 13:40:01 -06:00
Fabian Becker
bc558cf0d2 Apply JSHint to test files.
closes #2666
- Add new jshint:test task
- Fix jshint errors
2014-09-03 20:33:58 +02:00
Hannah Wolfe
95a7e36c84 Merge pull request #3945 from novaugust/smart-contributors
Smarter `buildAboutPage` task
2014-09-03 18:19:32 +01:00
Matt Enlow
891e55c265 Smarter buildAboutPage task
No issue
- Only run the buildAboutPage task if the `-contributors.hbs` template doesn't exist,
- ... or if the `--force` option is supplied on the CLI
- Adds the contributors img dir and the contributors template to `grunt clean:built` task
2014-09-03 08:10:42 -06:00
Matt Enlow
7ed7c6653b grunt dev calls default task
Closes #3942
2014-09-02 21:14:32 -06:00
Matt Enlow
737ea3f65e Implement About Ghost page
Closes #3568
- Deleted html placeholders in client
- Added new grunt task, buildAboutPage, which 1)creates -contributors.hbs partial and 2) downloads contributor avatars
- buildAboutPage is called by anything that does an emberTemplates task
- Removed unused code from ghostpaths
2014-09-02 13:49:01 -06:00
Hannah Wolfe
2a843c309e Adding Grunt tasks for Sass 2014-08-31 14:16:58 +01:00
Harry Wolff
583c7970d9 Move config module to be instance based and merge bootstrap into config.
helps with #827, otherwise no issue

- This is general code clean-up and unification.
- Merges code from bootstrap.js into config module as they were both
concerned with managing the config file and as such should be in one
location.
- Updates all relevant tests.
2014-08-23 15:54:43 -04:00