Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add prettier setup to eslint config. #247

Merged
merged 2 commits into from
Aug 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 8 additions & 7 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,24 @@ module.exports = {
plugins: ['node'],
extends: [
'eslint:recommended',
'plugin:node/recommended'
'plugin:node/recommended',
'plugin:prettier/recommended',
],
parserOptions: {
sourceType: 'script',
ecmaVersion: 2017
ecmaVersion: 2017,
},
env: {
browser: false,
node: true
node: true,
},
overrides: [
// test files
{
files: ['tests/**/*.js'],
env: {
qunit: true
}
}
]
qunit: true,
},
},
],
};
3 changes: 3 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"singleQuote": true
}
206 changes: 119 additions & 87 deletions commands/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ const USAGE_MESSAGE = strip`

To list all available features, run ${chalk.bold('ember feature:list')}.
To enable a feature, run ${chalk.bold('ember feature:enable some-feature')}.
To disable a feature, run ${chalk.bold('ember feature:disable some-feature')}.
To disable a feature, run ${chalk.bold(
'ember feature:disable some-feature'
)}.
`;

const SHARED = {
Expand All @@ -33,7 +35,7 @@ const SHARED = {

try {
return this.project.resolveSync(configPath);
} catch(err) {
} catch (err) {
if (err.code !== 'MODULE_NOT_FOUND') {
throw err;
}
Expand All @@ -50,14 +52,24 @@ const SHARED = {
let feature = FEATURES[name];

if (feature === undefined) {
console.log(chalk.red(`Error: ${chalk.bold(name)} is not a valid feature.\n`));
console.log(
chalk.red(`Error: ${chalk.bold(name)} is not a valid feature.\n`)
);
return LIST_FEATURES.run.apply(this);
}

let configPath = this._ensureConfigFile();
let configJSON = JSON.parse(fs.readFileSync(configPath, { encoding: 'UTF-8' }));
let configJSON = JSON.parse(
fs.readFileSync(configPath, { encoding: 'UTF-8' })
);
if (!this._isFeatureAvailable(feature)) {
console.log(chalk.red(`Error: ${chalk.bold(name)} is only available in Ember ${feature.since} or above.`));
console.log(
chalk.red(
`Error: ${chalk.bold(name)} is only available in Ember ${
feature.since
} or above.`
)
);
return;
}

Expand All @@ -67,114 +79,134 @@ const SHARED = {

let config = {};

Object.keys(FEATURES).forEach(feature => {
Object.keys(FEATURES).forEach((feature) => {
if (feature === name) {
config[feature] = value;
} else if(configJSON[feature] !== undefined) {
} else if (configJSON[feature] !== undefined) {
config[feature] = configJSON[feature];
}
});

fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', { encoding: 'UTF-8' });
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', {
encoding: 'UTF-8',
});

let state = value ? 'Enabled' : 'Disabled';

console.log(chalk.green(`${state} ${chalk.bold(name)}. Be sure to commit ${chalk.underline('config/optional-features.json')} to source control!`));
}
console.log(
chalk.green(
`${state} ${chalk.bold(name)}. Be sure to commit ${chalk.underline(
'config/optional-features.json'
)} to source control!`
)
);
},
};

const USAGE = Object.assign({
name: 'feature',
description: 'Prints the USAGE.',
works: 'insideProject',
run() {
console.log(USAGE_MESSAGE);
}
}, SHARED);
const USAGE = Object.assign(
{
name: 'feature',
description: 'Prints the USAGE.',
works: 'insideProject',
run() {
console.log(USAGE_MESSAGE);
},
},
SHARED
);

/* This forces strip`` to start counting the indentaiton */
const INDENT_START = '';

const LIST_FEATURES = Object.assign({
name: 'feature:list',
description: 'List all available features.',
works: 'insideProject',
run() {
console.log(USAGE_MESSAGE);
console.log('Available features:');
const LIST_FEATURES = Object.assign(
{
name: 'feature:list',
description: 'List all available features.',
works: 'insideProject',
run() {
console.log(USAGE_MESSAGE);
console.log('Available features:');

let hasFeatures = false;
let hasFeatures = false;

Object.keys(FEATURES).forEach(key => {
let feature = FEATURES[key];
Object.keys(FEATURES).forEach((key) => {
let feature = FEATURES[key];

if (this._isFeatureAvailable(feature)) {
console.log(strip`
if (this._isFeatureAvailable(feature)) {
console.log(strip`
${INDENT_START}
${chalk.bold(key)} ${chalk.cyan(`(Default: ${feature.default})`)}
${feature.description}
${chalk.gray(`More information: ${chalk.underline(feature.url)}`)}`);

hasFeatures = true;
}
});

if (hasFeatures) {
console.log();
} else {
console.log(chalk.gray(strip`
${chalk.gray(
`More information: ${chalk.underline(feature.url)}`
)}`);

hasFeatures = true;
}
});

if (hasFeatures) {
console.log();
} else {
console.log(
chalk.gray(strip`
${INDENT_START}
No optional features available for your current Ember version.
`));
}
}
}, SHARED);

const ENABLE_FEATURE = Object.assign({
name: 'feature:enable',
description: 'Enable feature.',
works: 'insideProject',
availableOptions: [
{
name: 'run-codemod',
type: Boolean,
description: 'run any associated codemods without prompting'
// intentionally not setting a default, when the value is undefined the
// command will prompt the user
`)
);
}
},
],
anonymousOptions: [
'<feature-name>'
],
run(commandOptions, args) {
return this._setFeature(args[0], true, commandOptions.runCodemod);
}
}, SHARED);

const DISABLE_FEATURE = Object.assign({
name: 'feature:disable',
description: 'Disable feature.',
works: 'insideProject',
availableOptions: [
{
name: 'run-codemod',
type: Boolean,
description: 'run any associated codemods without prompting'
// intentionally not setting a default, when the value is undefined the
// command will prompt the user
},
SHARED
);

const ENABLE_FEATURE = Object.assign(
{
name: 'feature:enable',
description: 'Enable feature.',
works: 'insideProject',
availableOptions: [
{
name: 'run-codemod',
type: Boolean,
description: 'run any associated codemods without prompting',
// intentionally not setting a default, when the value is undefined the
// command will prompt the user
},
],
anonymousOptions: ['<feature-name>'],
run(commandOptions, args) {
return this._setFeature(args[0], true, commandOptions.runCodemod);
},
],
anonymousOptions: [
'<feature-name>'
],
run(commandOptions, args) {
return this._setFeature(args[0], false, commandOptions.runCodemod);
}
}, SHARED);
},
SHARED
);

const DISABLE_FEATURE = Object.assign(
{
name: 'feature:disable',
description: 'Disable feature.',
works: 'insideProject',
availableOptions: [
{
name: 'run-codemod',
type: Boolean,
description: 'run any associated codemods without prompting',
// intentionally not setting a default, when the value is undefined the
// command will prompt the user
},
],
anonymousOptions: ['<feature-name>'],
run(commandOptions, args) {
return this._setFeature(args[0], false, commandOptions.runCodemod);
},
},
SHARED
);

module.exports = {
'feature': USAGE,
feature: USAGE,
'feature:list': LIST_FEATURES,
'feature:enable': ENABLE_FEATURE,
'feature:disable': DISABLE_FEATURE
}
'feature:disable': DISABLE_FEATURE,
};
4 changes: 2 additions & 2 deletions config/environment.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'use strict';

module.exports = function(/* environment, appConfig */) {
return { };
module.exports = function (/* environment, appConfig */) {
return {};
};
2 changes: 1 addition & 1 deletion ember-cli-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const EmberAddon = require('ember-cli/lib/broccoli/ember-addon');

module.exports = function(defaults) {
module.exports = function (defaults) {
let app = new EmberAddon(defaults, {
// Add options here
});
Expand Down
13 changes: 8 additions & 5 deletions features.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ const path = require('path');
const FEATURES_PATH = path.resolve(__dirname, './features');
const FEATURES = {};

glob.sync('*.js', { cwd: FEATURES_PATH }).sort().forEach(filename => {
let key = filename.slice(0, -3);
let value = Object.assign({}, require(`./features/${key}`));
glob
.sync('*.js', { cwd: FEATURES_PATH })
.sort()
.forEach((filename) => {
let key = filename.slice(0, -3);
let value = Object.assign({}, require(`./features/${key}`));

FEATURES[key] = Object.freeze(value);
});
FEATURES[key] = Object.freeze(value);
});

module.exports = Object.freeze(FEATURES);