Standard coding style.

This commit is contained in:
Julien Fontanet 2015-10-27 12:27:57 +01:00
parent a2f5f1cb0e
commit b1ee4bdc09
3 changed files with 190 additions and 190 deletions

View File

@ -1,54 +1,54 @@
'use strict';
'use strict'
//====================================================================
// ===================================================================
var promisify = require('bluebird').promisify;
var promisify = require('bluebird').promisify
var readFile = promisify(require('fs').readFile);
var writeFile = promisify(require('fs').writeFile);
var readFile = promisify(require('fs').readFile)
var writeFile = promisify(require('fs').writeFile)
var assign = require('lodash.assign');
var l33t = require('l33teral');
var mkdirp = promisify(require('mkdirp'));
var xdgBasedir = require('xdg-basedir');
var assign = require('lodash.assign')
var l33t = require('l33teral')
var mkdirp = promisify(require('mkdirp'))
var xdgBasedir = require('xdg-basedir')
//====================================================================
// ===================================================================
var configPath = xdgBasedir.config +'/xo-cli';
var configFile = configPath +'/config.json';
var configPath = xdgBasedir.config + '/xo-cli'
var configFile = configPath + '/config.json'
//====================================================================
// ===================================================================
var load = exports.load = function () {
return readFile(configFile).then(JSON.parse).catch(function () {
return {};
});
};
return {}
})
}
exports.get = function (path) {
return load().then(function (config) {
return l33t(config).tap(path);
});
};
return l33t(config).tap(path)
})
}
var save = exports.save = function (config) {
return mkdirp(configPath).then(function () {
return writeFile(configFile, JSON.stringify(config));
});
};
return writeFile(configFile, JSON.stringify(config))
})
}
exports.set = function (data) {
return load().then(function (config) {
return save(assign(config, data));
});
};
return save(assign(config, data))
})
}
exports.unset = function (paths) {
return load().then(function (config) {
var l33tConfig = l33t(config);
[].concat(paths).forEach(function (path) {
l33tConfig.purge(path, true);
});
return save(config);
});
};
var l33tConfig = l33t(config)
;[].concat(paths).forEach(function (path) {
l33tConfig.purge(path, true)
})
return save(config)
})
}

View File

@ -1,114 +1,109 @@
#!/usr/bin/env node
'use strict';
'use strict'
//====================================================================
var Bluebird = require('bluebird')
Bluebird.longStackTraces()
var promisify = Bluebird.promisify
var Bluebird = require('bluebird');
Bluebird.longStackTraces();
var promisify = Bluebird.promisify;
var createReadStream = require('fs').createReadStream
var createWriteStream = require('fs').createWriteStream
var resolveUrl = require('url').resolve
var stat = promisify(require('fs').stat)
var createReadStream = require('fs').createReadStream;
var createWriteStream = require('fs').createWriteStream;
var resolveUrl = require('url').resolve;
var stat = promisify(require('fs').stat);
var chalk = require('chalk')
var eventToPromise = require('event-to-promise')
var filter = require('lodash.filter')
var forEach = require('lodash.foreach')
var getKeys = require('lodash.keys')
var got = require('got')
var humanFormat = require('human-format')
var isObject = require('lodash.isobject')
var multiline = require('multiline')
var nicePipe = require('nice-pipe')
var pairs = require('lodash.pairs')
var prettyMs = require('pretty-ms')
var progressStream = require('progress-stream')
var sent = promisify(require('sent'))
var Xo = require('xo-lib')
var chalk = require('chalk');
var eventToPromise = require('event-to-promise');
var filter = require('lodash.filter');
var forEach = require('lodash.foreach');
var getKeys = require('lodash.keys');
var got = require('got');
var humanFormat = require('human-format');
var isObject = require('lodash.isobject');
var multiline = require('multiline');
var nicePipe = require('nice-pipe');
var pairs = require('lodash.pairs');
var prettyMs = require('pretty-ms');
var progressStream = require('progress-stream');
var sent = promisify(require('sent'));
var Xo = require('xo-lib');
// -------------------------------------------------------------------
//--------------------------------------------------------------------
var config = require('./config')
var config = require('./config');
// ===================================================================
//====================================================================
function connect() {
function connect () {
return config.load().bind({}).then(function (config) {
if (!config.server)
{
throw 'no server to connect to!';
if (!config.server) {
throw new Error('no server to connect to!')
}
if (!config.token)
{
throw 'no token available';
if (!config.token) {
throw new Error('no token available')
}
var xo = new Xo(config.server);
var xo = new Xo(config.server)
return xo.call('session.signInWithToken', {
token: config.token,
}).return(xo);
});
token: config.token
}).return(xo)
})
}
function parseParameters (args) {
var params = {};
var params = {}
forEach(args, function (arg) {
var matches;
var matches
if (!(matches = arg.match(PARAM_RE))) {
throw 'invalid arg: '+arg;
throw new Error('invalid arg: ' + arg)
}
var name = matches[1];
var value = matches[2];
var name = matches[1]
var value = matches[2]
if (name === '@') {
params['@'] = value;
return;
params['@'] = value
return
}
if (value === 'true') {
value = true;
}
else if (value === 'false') {
value = false;
value = true
} else if (value === 'false') {
value = false
}
params[name] = value;
});
params[name] = value
})
return params
}
function printProgress(progress) {
function printProgress (progress) {
if (progress.length) {
console.warn('%s% of %s @ %s/s - ETA %s',
Math.round(progress.percentage),
humanFormat(progress.length),
humanFormat(progress.speed),
prettyMs(progress.eta * 1e3)
);
)
} else {
console.warn('%s @ %s/s',
humanFormat(progress.transferred),
humanFormat(progress.speed)
);
)
}
}
function wrap(val) {
return function wrappedValue() {
return val;
};
function wrap (val) {
return function wrappedValue () {
return val
}
}
//====================================================================
// ===================================================================
var help = wrap((function (pkg) {
return multiline.stripIndent(function () {/*
return multiline.stripIndent(function () { /*
Usage:
$name --register [<XO-Server URL>] [<username>] [<password>]
@ -126,124 +121,122 @@ var help = wrap((function (pkg) {
$name v$version
*/}).replace(/<([^>]+)>|\$(\w+)/g, function (_, arg, key) {
if (arg) {
return '<'+ chalk.yellow(arg) +'>';
return '<' + chalk.yellow(arg) + '>'
}
if ('name' === key) {
return chalk.bold(pkg[key]);
if (key === 'name') {
return chalk.bold(pkg[key])
}
return pkg[key];
});
})(require('./package')));
return pkg[key]
})
})(require('./package')))
//--------------------------------------------------------------------
// -------------------------------------------------------------------
function main(args) {
if (!args || !args.length || '-h' === args[0]) {
return help();
function main (args) {
if (!args || !args.length || args[0] === '-h') {
return help()
}
var fnName = args[0].replace(/^--|-\w/g, function (match) {
if (match === '--')
{
return '';
if (match === '--') {
return ''
}
return match[1].toUpperCase();
});
return match[1].toUpperCase()
})
if (fnName in exports) {
return exports[fnName](args.slice(1));
return exports[fnName](args.slice(1))
}
return exports.call(args);
return exports.call(args)
}
exports = module.exports = main;
exports = module.exports = main
//--------------------------------------------------------------------
// -------------------------------------------------------------------
exports.help = help;
exports.help = help
function register(args) {
var xo;
function register (args) {
var xo
return Bluebird.try(function () {
xo = new Xo(args[0]);
xo = new Xo(args[0])
return xo.call('session.signInWithPassword', {
email: args[1],
password: args[2],
});
password: args[2]
})
}).then(function (user) {
console.log('Successfully logged with', user.email);
console.log('Successfully logged with', user.email)
return xo.call('token.create');
return xo.call('token.create')
}).then(function (token) {
return config.set({
server: xo._url,
token: token,
});
});
token: token
})
})
}
exports.register = register;
exports.register = register
function unregister() {
function unregister () {
return config.unset([
'server',
'token',
]);
'token'
])
}
exports.unregister = unregister;
exports.unregister = unregister
function listCommands(args) {
return connect().then(function getMethodsInfo(xo) {
return xo.call('system.getMethodsInfo');
}).then(function formatMethodsInfo(methods) {
if (args.indexOf('--json') !== -1)
{
return methods;
function listCommands (args) {
return connect().then(function getMethodsInfo (xo) {
return xo.call('system.getMethodsInfo')
}).then(function formatMethodsInfo (methods) {
if (args.indexOf('--json') !== -1) {
return methods
}
methods = pairs(methods);
methods = pairs(methods)
methods.sort(function (a, b) {
a = a[0];
b = b[0];
a = a[0]
b = b[0]
if (a < b) {
return -1;
return -1
}
return +(a > b);
});
return +(a > b)
})
var str = [];
var str = []
forEach(methods, function (method) {
var name = method[0];
var info = method[1];
str.push(chalk.bold.blue(name));
var name = method[0]
var info = method[1]
str.push(chalk.bold.blue(name))
forEach(info.params || [], function (info, name) {
str.push(' ');
str.push(' ')
if (info.optional) {
str.push('[');
str.push('[')
}
str.push(name, '=<', info.type || 'unknown', '>');
str.push(name, '=<', info.type || 'unknown', '>')
if (info.optional) {
str.push(']');
str.push(']')
}
});
str.push('\n');
})
str.push('\n')
if (info.description) {
str.push(' ', info.description, '\n');
str.push(' ', info.description, '\n')
}
});
return str.join('');
});
})
return str.join('')
})
}
exports.listCommands = listCommands;
exports.listCommands = listCommands
function listObjects(args) {
function listObjects (args) {
var sieve = args.length
? parseParameters(args)
: null
return connect().then(function getXoObjects(xo) {
return connect().then(function getXoObjects (xo) {
return xo.call('xo.getAllObjects')
}).then(function filterObjects (objects) {
return filter(objects, sieve)
@ -251,72 +244,72 @@ function listObjects(args) {
}
exports.listObjects = listObjects
var PARAM_RE = /^([^=]+)=(.*)$/;
function call(args) {
var PARAM_RE = /^([^=]+)=(.*)$/
function call (args) {
if (!args.length) {
throw 'missing command name';
throw new Error('missing command name')
}
var method = args.shift();
var params = parseParameters(args);
var method = args.shift()
var params = parseParameters(args)
var file = params['@'];
delete params['@'];
var file = params['@']
delete params['@']
var baseUrl;
var baseUrl
return connect().then(function (xo) {
baseUrl = xo._url;
return xo.call(method, params);
}).then(function handleResult(result) {
var keys, key, url;
if ((
baseUrl = xo._url
return xo.call(method, params)
}).then(function handleResult (result) {
var keys, key, url
if (
isObject(result) &&
(keys = getKeys(result)).length === 1
)) {
key = keys[0];
) {
key = keys[0]
if (key === '$getFrom') {
url = resolveUrl(baseUrl, result[key]);
var output = createWriteStream(file);
url = resolveUrl(baseUrl, result[key])
var output = createWriteStream(file)
return eventToPromise(nicePipe([
got(url),
progressStream({ time: 1e3 }, printProgress),
output,
]), 'finish');
output
]), 'finish')
}
if (key === '$sendTo') {
url = resolveUrl(baseUrl, result[key]);
url = resolveUrl(baseUrl, result[key])
return stat(file).then(function (stats) {
var length = stats.size;
var length = stats.size
var input = nicePipe([
createReadStream(file),
progressStream({
length: length,
time: 1e3,
}, printProgress),
]);
time: 1e3
}, printProgress)
])
return sent(url, input, {
headers: {
'content-length': length,
'content-length': length
},
method: 'POST'
}).get(0);
});
}).get(0)
})
}
}
return result;
});
return result
})
}
exports.call = call;
exports.call = call
//====================================================================
// ===================================================================
if (!module.parent) {
require('exec-promise')(exports);
require('exec-promise')(exports)
}

View File

@ -45,5 +45,12 @@
"sent": "^1.1.0",
"xdg-basedir": "^1.0.0",
"xo-lib": "^0.2.0"
},
"devDependencies": {
"standard": "^5.3.1"
},
"scripts": {
"lint": "standard",
"posttest": "npm run lint"
}
}