Skip to content

Commit

Permalink
Allow usage as JSCS preset.
Browse files Browse the repository at this point in the history
Also, add blueprint and blueprint test.

Now:

```
ember install ember-suave
```

Will auto-generate a `.jscsrc` with `{ "preset": "ember-suave" }`.
  • Loading branch information
rwjblue committed Oct 15, 2015
1 parent 834e574 commit 9128ed2
Show file tree
Hide file tree
Showing 13 changed files with 76 additions and 214 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
language: node_js
node_js:
- "0.12"
- "stable"

sudo: false

Expand Down
30 changes: 24 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,26 @@ Ember style guide rules.
* [JavaScript Style Guide](https://github.com/dockyard/styleguides/blob/master/javascript.md)
* [Ember Style Guide](https://github.com/dockyard/styleguides/blob/master/ember.md)

## Installation

```bash
ember install ember-suave
```

## Usage

* ember-cli >= 0.2.3 `ember install ember-suave`
* ember-cli < 0.2.3 `ember install:addon ember-suave`
`ember-suave` is used as a JSCS preset, and can be enabled by adding a `preset` to your `.jscsrc` file.

```
{
"preset": "ember-suave"
}
```

`ember-sauve` integrates well with ember-cli, but can also be used as a standalone JSCS preset. This allows custom
editor integration, and non-ember-cli projects to utilize our curated set of rules.

When used from within ember-cli, your test suite will automatically fail if any of the rules are broken.

## JSCS Rules

Expand All @@ -25,18 +41,20 @@ so that all you need to do is install the addon and start writing stylish code.
### Customization

If `ember-suave` isn't suave enough for you and you'd like to override
certain rules, simply provide your own `.jscsrc` file at the root of
your Ember CLI project. Those rules will be merged with the ones in the
default config.
certain rules, simply add your own rules to `.jscsrc` at the root of
your Ember CLI project. Those rules will take precedence over the ones in the
default preset.

You can specify any of the [rules](http://jscs.info/rules.html) that are
built into JSCS, or even provide your own custom ones.
built into JSCS, provide your own custom ones, or even override the ones we
have enabled by default.

To disable a rule, set its value to `null`.

```json
// .jscsrc
{
"preset": "ember-suave",
"additionalRules": ["lib/rules/*.js"],
"myAwesomeCustomRule": true,
"disallowDanglingUnderscores": true,
Expand Down
6 changes: 6 additions & 0 deletions blueprints/.jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"predef": [
"console"
],
"strict": false
}
3 changes: 3 additions & 0 deletions blueprints/ember-suave/files/.jscsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"preset": "ember-suave"
}
9 changes: 9 additions & 0 deletions blueprints/ember-suave/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module.exports = {
description: 'ember-suave install generator',

normalizeEntityName: function() {
// this prevents an error when the entityName is
// not specified (since that doesn't actually matter
// to us
}
};
2 changes: 0 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
/* jshint node: true */
'use strict';
var JSCSFilter = require('broccoli-jscs');
var jscsrcBuilder = require('./lib/jscsrc-builder');

module.exports = {
name: 'ember-suave',

lintTree: function (type, tree) {
var jscsOptions = this.app.options.jscsOptions || {};
jscsOptions.configPath = jscsrcBuilder(this.project);
return new JSCSFilter(tree, jscsOptions);
},

Expand Down
81 changes: 0 additions & 81 deletions lib/jscsrc-builder.js

This file was deleted.

4 changes: 4 additions & 0 deletions lib/jscsrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
"esnext": true,
"verbose": true,

"additionalRules": [
"./rules/*.js"
],

"disallowEmptyBlocks": true,
"disallowKeywordsOnNewLine": ["else"],
"disallowMultipleLineBreaks": true,
Expand Down
13 changes: 9 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,31 @@
"broccoli-asset-rev": "^2.1.1",
"chai": "^2.2.0",
"ember-cli": "1.13.7",
"ember-cli-blueprint-test-helpers": "^0.3.0",
"ember-cli-internal-test-helpers": "^0.4.0",
"ember-cli-release": "0.2.5",
"jscs": "^2.0.0",
"mocha": "^2.2.4",
"mocha-jshint": "^2.1.1",
"walk-sync": "0.1.3"
},
"keywords": [
"ember-addon"
"ember-addon",
"jscs-preset",
"preset"
],
"dependencies": {
"broccoli-jscs": "^1.0.0",
"ember-cli-babel": "^5.0.0",
"temp": "0.8.3"
},
"ember-addon": {
"configPath": "tests/dummy/config"
"configPath": "tests/dummy/config",
"main": "index.js"
},
"main": "index.js",
"main": "lib/jscsrc.json",
"bugs": {
"url": "https://github.com/dockyard/ember-suave/issues"
},
"homepage": "https://github.com/dockyard/ember-suave"
}
}
17 changes: 17 additions & 0 deletions tests/blueprint-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';

var setupTestHooks = require('ember-cli-blueprint-test-helpers/lib/helpers/setup');
var BlueprintHelpers = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');
var generateAndDestroy = BlueprintHelpers.generateAndDestroy;

describe('Acceptance: ember generate and destroy ember-suave', function() {
setupTestHooks(this);

it('ember-suave', function() {
return generateAndDestroy(['ember-suave'], {
files: [
{ file: '.jscsrc', contents: ['"preset": "ember-suave"'] }
]
});
});
});
1 change: 1 addition & 0 deletions tests/fixtures/.jscsrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "preset": "../../lib/jscsrc.json"}
119 changes: 0 additions & 119 deletions tests/jscsrc-builder-test.js

This file was deleted.

3 changes: 2 additions & 1 deletion tests/rules-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ var suaveLintTree = require('../index').lintTree;

describe('rules tests', function() {
var fixturePath = path.join(__dirname, 'fixtures');
var jscsrcPath = path.join(fixturePath, '.jscsrc');
var builder, originLog;

beforeEach(function() {
this.lintTree = suaveLintTree;
this.app = { options: {} };
this.app = { options: { jscsOptions: { configPath: jscsrcPath } } };

originLog = console.log;
console.log = function(contents) {
Expand Down

0 comments on commit 9128ed2

Please sign in to comment.