Skip to content

Commit

Permalink
Merge pull request #2 from kenjones-cisco/task/basic-project
Browse files Browse the repository at this point in the history
chore(project): Project files and testing
  • Loading branch information
rjz committed Jan 16, 2016
2 parents 4bcd0dd + c9c4df7 commit 007249c
Show file tree
Hide file tree
Showing 12 changed files with 256 additions and 175 deletions.
19 changes: 19 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# .editorconfig
# More info: editorconfig.org

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[package.json]
# package.json adhere to --save-dev manipulation styles
indent_style = space
indent_size = 2
6 changes: 5 additions & 1 deletion .jshintrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
{
"node": true,
"jasmine": true
"jasmine": true,
"eqeqeq": true,
"strict": true,
"undef": true,
"unused": true
}

11 changes: 5 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@ language: node_js
node_js:
- 0.10
- 0.12
- 4.1

sudo: false

env:
global:
- NODE_ENV=test

before_script:
- export PATH=$PATH:$PWD/node_modules/.bin

script: npm run cover

after_success: ./tasks/travis_after_success.sh
script:
- npm run cover

after_script:
- npm run coveralls
46 changes: 46 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
'use strict';

var gulp = require('gulp');
var coveralls = require('gulp-coveralls');
var istanbul = require('gulp-istanbul');
var jasmine = require('gulp-jasmine');
var jshint = require('gulp-jshint');
var docs = require('./tasks');

var SOURCE_CODE = ['index.js', 'lib/*.js'];
var TEST_CODE = ['test/*.js'];

gulp.task('lint', function() {
return gulp.src(SOURCE_CODE.concat(TEST_CODE))
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

gulp.task('pre-test', function () {
return gulp.src(SOURCE_CODE)
// Covering files
.pipe(istanbul())
// Force `require` to return covered files
.pipe(istanbul.hookRequire());
});

gulp.task('test', ['lint'], function () {
return gulp.src(TEST_CODE)
.pipe(jasmine());
});

gulp.task('cover', ['lint', 'pre-test'], function () {
return gulp.src(TEST_CODE)
.pipe(jasmine())
// Creating the reports after tests ran
.pipe(istanbul.writeReports());
});

gulp.task('coveralls', function () {
return gulp.src('coverage/lcov.info')
.pipe(coveralls());
});

gulp.task('docs', function () {
docs(SOURCE_CODE);
});
3 changes: 0 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
'use strict';

var fs = require('fs'),
path = require('path');

var transforms = require('./lib/transforms');

/**
Expand Down
25 changes: 10 additions & 15 deletions lib/transforms.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
'use strict';

var fs = require('fs'),
path = require('path'),
assign = require('object-assign'),
deprecate = require('util').deprecate;
assign = require('object-assign'),
deprecate = require('util').deprecate;

var transforms = module.exports;

Expand Down Expand Up @@ -43,8 +42,7 @@ transforms.loadJSON = function (files) {

try {
return assign(config, JSON.parse(fs.readFileSync(result)));
}
catch (e) {
} catch (e) {
throw e;
}
};
Expand Down Expand Up @@ -72,11 +70,10 @@ transforms.loadEnvironment = function (map, opts) {

function translate(val) {
if (opts && opts.resolveBooleans) {
if (val === 'true') {
return true;
}
else if (val === 'false') {
return false;
try {
return JSON.parse(val);
} catch (e) {
return val;
}
}
return val;
Expand All @@ -93,10 +90,9 @@ transforms.loadEnvironment = function (map, opts) {
};
};

transforms.mapEnvironment = function (map) {
deprecate('mapEnvironment is deprecated; please use loadEnvironment instead');
transforms.mapEnvironment = deprecate(function (map) { // jshint ignore:line
return transforms.loadEnvironment.apply(this, arguments);
};
}, 'mapEnvironment is deprecated; please use loadEnvironment instead');

/**
* Merge an object with the existing config, replacing any existing keys with
Expand All @@ -113,7 +109,7 @@ transforms.mapEnvironment = function (map) {
* @param {Object} obj2... - additional objects to merge into the config
* @return Function
*/
transforms.assign = function (obj) {
transforms.assign = function (obj) { // jshint ignore:line

var objects = [].concat([].slice.call(arguments));

Expand Down Expand Up @@ -192,4 +188,3 @@ transforms.freeze = function () {
return config;
};
};

23 changes: 16 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@
"version": "0.0.9",
"description": "fabulous configuration!",
"main": "index.js",
"files": [
"index.js",
"lib"
],
"scripts": {
"pretest": "jshint .",
"test": "NODE_ENV=test jasmine-node test/",
"cover": "./tasks/coverage.sh",
"docs": "node -e 'require(\"./tasks\").docs([\"index.js\",\"lib/*.js\"])'"
"lint": "gulp lint",
"test": "gulp test",
"cover": "gulp cover",
"coveralls": "gulp coveralls",
"docs": "gulp docs"
},
"repository": {
"type": "git",
Expand All @@ -30,10 +35,14 @@
"devDependencies": {
"coveralls": "~2.11.1",
"glob": "~4.0.0",
"gulp": "^3.9.0",
"gulp-coveralls": "^0.1.4",
"gulp-istanbul": "^0.10.3",
"gulp-jasmine": "^2.1.0",
"gulp-jshint": "^2.0.0",
"hogan.js": "~2.0.0",
"istanbul": "~0.3.0",
"jasmine-node": "^1.14.5",
"jshint": "~2.5.2",
"jshint": "~2.8.0",
"lodash": "^3.10.0",
"scrawl": "~0.0.5"
}
}
21 changes: 0 additions & 21 deletions tasks/coverage.sh

This file was deleted.

32 changes: 15 additions & 17 deletions tasks/index.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
var path = require('path'),
fs = require('fs');
fs = require('fs');

function fatalOr (orElse) {
function fatalOr(orElse) {
return function (err, result) {
if (err) {
process.stderr.write(err.toString() + '\n');
process.exit(1);
}
else {
} else {
orElse.apply(this, [].slice.call(arguments, 1));
}
};
}

function indexBy (arr, key) {
function indexBy(arr, key) {
var indexed = {};

arr.forEach(function (item) {
Expand All @@ -29,15 +28,15 @@ function indexBy (arr, key) {
//
// $ npm run-script docs
//
module.exports.docs = function (patterns) {
module.exports = function (patterns) {

function transformComment (file, comment) {
function transformComment(file, comment) {
if (!comment.group) comment.group = packageJson.name;
comment.file = path.relative(path.resolve(__dirname, '..'), file);
return comment;
}

function transformFiles (files) {
function transformFiles(files) {
var indexedMethods = indexBy(files, 'group');
return Object.keys(indexedMethods).map(function (group) {
return {
Expand All @@ -48,11 +47,11 @@ module.exports.docs = function (patterns) {
}

var glob = require('glob'),
hogan = require('hogan.js'),
scrawl = require('scrawl');
hogan = require('hogan.js'),
scrawl = require('scrawl');

var packageJson = require(path.resolve(__dirname, '../package.json')),
templateFiles = glob.sync(path.resolve(__dirname, './*.hogan'));
templateFiles = glob.sync(path.resolve(__dirname, './*.hogan'));

var files = patterns.reduce(function (memo, pattern) {
var srcFiles = glob.sync(path.resolve(__dirname, '..', pattern));
Expand All @@ -70,11 +69,11 @@ module.exports.docs = function (patterns) {
}, {});

var tmpl = templates.template.render({
groups : transformFiles(files),
repository : packageJson.repository.url,
name : packageJson.name,
license : packageJson.license,
description : packageJson.description
groups: transformFiles(files),
repository: packageJson.repository.url,
name: packageJson.name,
license: packageJson.license,
description: packageJson.description
}, templates);

if (!fs.existsSync('./docs')) {
Expand All @@ -86,4 +85,3 @@ module.exports.docs = function (patterns) {

fs.writeFileSync('./docs/index.html', tmpl);
};

13 changes: 0 additions & 13 deletions tasks/travis_after_success.sh

This file was deleted.

0 comments on commit 007249c

Please sign in to comment.