Skip to content

Commit

Permalink
style: apply eslint-config-strict
Browse files Browse the repository at this point in the history
  • Loading branch information
keithamus committed Jan 11, 2016
1 parent c037619 commit 648ee66
Show file tree
Hide file tree
Showing 5 changed files with 174 additions and 142 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8
indent_style = space
indent_size = 4
indent_size = 2
8 changes: 5 additions & 3 deletions bin/npm-assets
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
#!/usr/bin/env node
'use strict';
/* eslint-disable no-console, no-process-exit */
if (process.argv.length !== 3) {
console.error('Usage: npm-assets <dest>');
process.exit(1);
}

require('../')(process.cwd(), process.argv[2], function done(err) {
if (err) {
console.error('Error occurred while copying assets:');
console.error(err.toString());
process.exit(1);
console.error('Error occurred while copying assets:');
console.error(err.toString());
process.exit(1);
}
process.exit(0);
});
190 changes: 96 additions & 94 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,132 +1,134 @@
var fs = require('fs'),
path = require('path'),
findModules = require('find-modules'),
async = require('async'),
mkdirp = require('mkdirp');

'use strict';
var fs = require('fs');
var path = require('path');
var findModules = require('find-modules');
var async = require('async');
var mkdirp = require('mkdirp');
module.exports = copyAssets;
copyAssets.find = findAssets;

function copyAssets(root, dest, callback) {
var assets;
findAssets(root, found);

function found(err, a) {
if (err) {
return callback(err);
}
var assets = null;
findAssets(root, found);

assets = a;
assets.forEach(function(asset) {
asset.dest = path.join(dest, asset.name);
});
assets = assets.filter(function(asset, i, total) {
for (var n = 0; n < total.length; n+=1) {
if(total[n].dest === asset.dest) {
return n === i;
}
}
});
createDirs(assets, created);
function found(err, foundAssets) {
if (err) {
return callback(err);
}

function created(err) {
if (err) {
return callback(err);
assets = foundAssets;
assets.forEach(function addDestToAssetObject(asset) {
asset.dest = path.join(dest, asset.name);
});
assets = assets.filter(function uniqueDests(asset, i, total) {
for (var n = 0; n < total.length; n += 1) {
if (total[n].dest === asset.dest) {
return n === i;
}

copyFiles(assets, callback);
}
});
createDirs(assets, created);
}

function created(err) {
if (err) {
return callback(err);
}

copyFiles(assets, callback);
}
}

function createDirs(assets, callback) {
var dirs = assets
.map(function(a) { return path.dirname(a.dest); })
.filter(function (value, i, total) { return total.indexOf(value) === i; });

async.forEach(dirs, mkdirp, callback);
var dirs = assets
.map(function getDestinationDir(asset) {
return path.dirname(asset.dest);
})
.filter(function uniqueDests(value, i, total) {
return total.indexOf(value) === i;
});
async.forEach(dirs, mkdirp, callback);
}

function copyFiles(assets, callback) {
async.forEach(assets, copy, callback);
async.forEach(assets, copy, callback);
}

function copy(asset, callback) {
var isDone = false,
input = fs.createReadStream(asset.path),
output = fs.createWriteStream(asset.dest);
input.pipe(output);
input.on('error', done);
output.on('error', done);
output.on('finish', done);

function done(err) {
if (!isDone) {
isDone = true;
callback(err);
}
var isDone = false;
var input = fs.createReadStream(asset.path);
var output = fs.createWriteStream(asset.dest);
input.pipe(output);
input.on('error', done);
output.on('error', done);
output.on('finish', done);

function done(err) {
if (!isDone) {
isDone = true;
return callback(err);
}
}
}

function findAssets(dir, callback) {
findModules(dir, foundModules);
findModules(dir, foundModules);

function foundModules(err, modules) {
if (err) {
return callback(err);
}

modules.push(dir);
async.map(modules, getAssets, done);
function foundModules(err, modules) {
if (err) {
return callback(err);
}

function done(err, assets) {
if (err) {
return callback(err);
}
modules.push(dir);
async.map(modules, getAssets, done);
}

assets = assets.reduce(
function(all, a) { return all.concat(a); }, []);
callback(null, assets);
function done(err, assets) {
if (err) {
return callback(err);
}

assets = assets.reduce(function reduceAssets(all, currentSet) {
return all.concat(currentSet);
}, []);
callback(null, assets);
}
}

function getAssets(dir, callback) {
var pkg = path.join(dir, 'package.json');
var pkg = path.join(dir, 'package.json');
fs.exists(pkg, checked);

fs.exists(pkg, checked);
function checked(exists) {
if (!exists) {
return callback(null, []);
}

function checked(exists) {
if (!exists) {
return callback(null, []);
}
fs.readFile(pkg, 'utf8', read);
}

fs.readFile(pkg, 'utf8', read);
function read(err, contents) {
if (err) {
return callback(err);
}

function read(err, contents) {
if (err) {
return callback(err);
}

try {
contents = JSON.parse(contents);
} catch (e) {
return callback(new Error('Error parsing "' + pkg + '"'));
}
try {
contents = JSON.parse(contents);
} catch (error) {
return callback(new Error('Error parsing "' + pkg + '"'));
}

var assets = contents.assets;
if (!Array.isArray(assets)) {
return callback(null, []);
}
var assets = contents.assets;
if (!Array.isArray(assets)) {
return callback(null, []);
}

assets = assets.map(function(name) {
return {
name: name,
path: path.join(dir, name)
};
});
assets = assets.map(function mapAssetDescription(name) {
return {
name: name,
path: path.join(dir, name),
};
});

callback(null, assets);
}
callback(null, assets);
}
}
28 changes: 28 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"url": "git+ssh://github.com/conradz/npm-assets.git"
},
"scripts": {
"pretest": "eslint .",
"semantic-release": "semantic-release pre && npm publish && semantic-release post",
"test": "tap test.js"
},
Expand All @@ -33,17 +34,44 @@
"commit-msg": "validate-commit-msg"
}
},
"eslintConfig": {
"extends": [
"strict/es5"
],
"rules": {
"no-magic-numbers": 0,
"id-length": [
2,
{
"min": 2,
"max": 20,
"exceptions": [
"i",
"n",
"t"
]
}
],
"no-use-before-define": 0
}
},
"dependencies": {
"async": "^1.5.1",
"find-modules": "~0.2.0",
"mkdirp": "^0.5.1"
},
"devDependencies": {
"eslint": "^1.10.3",
"eslint-config-strict": "^7.0.4",
"eslint-plugin-filenames": "^0.2.0",
"ghooks": "^1.0.1",
"rimraf": "^2.5.0",
"semantic-release": "^4.3.5",
"tap": "^5.0.0",
"travis-after-all": "^1.4.4",
"validate-commit-msg": "^1.0.0"
},
"engines": {
"node": ">=0.12"
}
}
Loading

0 comments on commit 648ee66

Please sign in to comment.