diff --git a/.editorconfig b/.editorconfig index 192641a..991900b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,15 +3,20 @@ root = true [*] indent_style = space -indent_size = 2 end_of_line = lf charset = utf-8 +indent_size = 2 trim_trailing_whitespace = true insert_final_newline = true [*.md] trim_trailing_whitespace = false +insert_final_newline = false -[test/fixtures/*] +[test/**] +trim_trailing_whitespace = false insert_final_newline = false + +[templates/**] trim_trailing_whitespace = false +insert_final_newline = false diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..5b78706 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,275 @@ +{ + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true + }, + "env": { + "browser": false, + "es6": true, + "node": true, + "mocha": true + }, + "globals": { + "document": false, + "navigator": false, + "window": false + }, + "rules": { + "accessor-pairs": 2, + "arrow-spacing": [ + 2, + { + "before": true, + "after": true + } + ], + "block-spacing": [ + 2, + "always" + ], + "brace-style": [ + 2, + "1tbs", + { + "allowSingleLine": true + } + ], + "comma-dangle": [ + 2, + "never" + ], + "comma-spacing": [ + 2, + { + "before": false, + "after": true + } + ], + "comma-style": [ + 2, + "last" + ], + "constructor-super": 2, + "curly": [ + 2, + "multi-line" + ], + "dot-location": [ + 2, + "property" + ], + "eol-last": 2, + "eqeqeq": [ + 2, + "allow-null" + ], + "generator-star-spacing": [ + 2, + { + "before": true, + "after": true + } + ], + "handle-callback-err": [ + 2, + "^(err|error)$" + ], + "indent": [ + 2, + 2, + { + "SwitchCase": 1 + } + ], + "key-spacing": [ + 2, + { + "beforeColon": false, + "afterColon": true + } + ], + "keyword-spacing": [ + 2, + { + "before": true, + "after": true + } + ], + "new-cap": [ + 2, + { + "newIsCap": true, + "capIsNew": false + } + ], + "new-parens": 2, + "no-array-constructor": 2, + "no-caller": 2, + "no-class-assign": 2, + "no-cond-assign": 2, + "no-const-assign": 2, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty-character-class": 2, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": [ + 2, + "functions" + ], + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inner-declarations": [ + 2, + "functions" + ], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [ + 2, + { + "max": 1 + } + ], + "no-native-reassign": 0, + "no-negated-in-lhs": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-return-assign": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 0, + "no-undef": 2, + "no-undef-init": 2, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": [ + 2, + { + "defaultAssignment": false + } + ], + "no-unreachable": 2, + "no-unused-vars": [ + 2, + { + "vars": "all", + "args": "none" + } + ], + "no-useless-call": 0, + "no-with": 2, + "one-var": [ + 0, + { + "initialized": "never" + } + ], + "operator-linebreak": [ + 0, + "after", + { + "overrides": { + "?": "before", + ":": "before" + } + } + ], + "padded-blocks": [ + 0, + "never" + ], + "quotes": [ + 2, + "single", + "avoid-escape" + ], + "radix": 2, + "semi": [ + 2, + "always" + ], + "semi-spacing": [ + 2, + { + "before": false, + "after": true + } + ], + "space-before-blocks": [ + 2, + "always" + ], + "space-before-function-paren": [ + 2, + "never" + ], + "space-in-parens": [ + 2, + "never" + ], + "space-infix-ops": 2, + "space-unary-ops": [ + 2, + { + "words": true, + "nonwords": false + } + ], + "spaced-comment": [ + 0, + "always", + { + "markers": [ + "global", + "globals", + "eslint", + "eslint-disable", + "*package", + "!", + "," + ] + } + ], + "use-isnan": 2, + "valid-typeof": 2, + "wrap-iife": [ + 2, + "any" + ], + "yoda": [ + 2, + "never" + ] + } +} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 31eb603..0000000 --- a/.jshintrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "asi": false, - "boss": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "esnext": true, - "immed": true, - "latedef": true, - "laxcomma": false, - "newcap": true, - "noarg": true, - "node": true, - "sub": true, - "undef": "var", - "unused": true, - "mocha": true -} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index f9cffe6..09768f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,12 @@ sudo: false language: node_js node_js: - - "0.10" + - "stable" + - "5" + - "4" - "0.12" - - "iojs" -git: - depth: 10 + - "0.10" +matrix: + fast_finish: true + allow_failures: + - node_js: "0.10" diff --git a/.verb.md b/.verb.md index 6044618..f9104ff 100644 --- a/.verb.md +++ b/.verb.md @@ -2,6 +2,8 @@ > {%= description %} +## Install + {%= include("install-npm", {save: true}) %} ## Usage @@ -49,7 +51,7 @@ Config object will be something like: ## Other useful projects -{%= related(['parse-github-url', 'parse-gitignore', 'parse-author', 'parse-authors']) %} +{%= related(verb.related.list) %} ## Run tests {%= include("tests") %} @@ -62,7 +64,7 @@ Config object will be something like: ## License {%= copyright() %} -{%= license() %} +{%= license %} *** diff --git a/LICENSE b/LICENSE index 33754da..1e49edf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015 Jon Schlinkert +Copyright (c) 2015-2016, Jon Schlinkert. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/index.js b/index.js index 3b133c0..01814ca 100644 --- a/index.js +++ b/index.js @@ -11,15 +11,10 @@ var fs = require('fs'); var path = require('path'); var ini = require('ini'); -/** - * Expose `config` - */ - -module.exports = git; - -function git(options, cb) { +function parseGitConfig(options, cb) { if (typeof options === 'function') { - cb = options; options = null; + cb = options; + options = null; } var fp = resolve(options); @@ -28,7 +23,7 @@ function git(options, cb) { throw new TypeError('parse-git-config async expects a callback function.'); } - read(fp, function (err, buffer) { + read(fp, function(err, buffer) { if (err) { cb(err); return; @@ -37,7 +32,7 @@ function git(options, cb) { }); } -git.sync = function configSync(options) { +parseGitConfig.sync = function parseGitConfigSync(options) { var fp = resolve(options); if (!fs.existsSync(fp)) { return null; @@ -47,7 +42,7 @@ git.sync = function configSync(options) { function read(fp, cb) { try { - fs.readFile(fp, function (err, config) { + fs.readFile(fp, function(err, config) { if (err) { return cb(err); } @@ -68,4 +63,10 @@ function resolve(options) { * Expose `resolve` */ -module.exports.resolve = resolve; +parseGitConfig.resolve = resolve; + +/** + * Expose `parseGitConfig` + */ + +module.exports = parseGitConfig; diff --git a/package.json b/package.json index 051dc8f..8d730de 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,8 @@ "description": "Parse `.git/config` into a JavaScript object. sync or async.", "version": "0.3.1", "homepage": "https://github.com/jonschlinkert/parse-git-config", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "repository": { - "type": "git", - "url": "git://github.com/jonschlinkert/parse-git-config.git" - }, + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "jonschlinkert/parse-git-config", "bugs": { "url": "https://github.com/jonschlinkert/parse-git-config/issues" }, @@ -36,5 +30,15 @@ "config", "git", "parse" - ] + ], + "verb": { + "related": { + "list": [ + "parse-github-url", + "parse-gitignore", + "parse-author", + "parse-authors" + ] + } + } } diff --git a/test.js b/test.js index fbebc0a..f1d1545 100644 --- a/test.js +++ b/test.js @@ -11,33 +11,32 @@ require('should'); var git = require('./'); - -describe('sync:', function () { - it('should return an object', function () { +describe('sync:', function() { + it('should return an object', function() { git.sync().should.have.properties(['core']); git.sync().should.not.have.properties(['foo']); git.sync().should.not.throw; }); }); -describe('async:', function () { - it('should throw a callback is not passed:', function (cb) { - (function () { +describe('async:', function() { + it('should throw a callback is not passed:', function(cb) { + (function() { git(); }).should.throw('parse-git-config async expects a callback function.') cb(); }); - it('should throw an error when .git/config does not exist:', function (cb) { - git(function (err, config) { + it('should throw an error when .git/config does not exist:', function(cb) { + git(function(err, config) { config.should.have.property('core'); config.should.not.have.property('foo'); cb(); }); }); - it('should throw an error when .git/config does not exist:', function (cb) { - git({path: 'foo'}, function (err, config) { + it('should throw an error when .git/config does not exist:', function(cb) { + git({path: 'foo'}, function(err, config) { err.should.be.an.instanceof(Error); err.message.should.match(/ENOENT.*parse-git-config/); cb(); @@ -45,20 +44,20 @@ describe('async:', function () { }); }); -describe('resolve:', function () { - it('should resolve the git config in the cwd by default', function () { +describe('resolve:', function() { + it('should resolve the git config in the cwd by default', function() { var sep = require('path').sep; git.resolve().should.equal(process.cwd() + sep + '.git' + sep + 'config'); }) - it('should allow override path', function () { + it('should allow override path', function() { var path = require('path').resolve(process.env.HOME, '.gitconfig') git.resolve({path: path}).should.equal(path); }) - it('should resolve relative path to cwd', function () { + it('should resolve relative path to cwd', function() { git.resolve({path: '.config'}) .should.equal(require('path').resolve(process.cwd(), '.config')); }) - it('should allow override of cwd', function () { + it('should allow override of cwd', function() { git.resolve({path: '.config', cwd: '/opt/config'}) .should.equal(require('path').resolve('/opt/config','.config')) })