var minimist = require('minimist'); module.exports = function parse (args, opts) { var level = 0, index; var args_ = []; for (var i = 0; i < args.length; i++) { if (typeof args[i] === 'string' && /^\[/.test(args[i])) { if (level ++ === 0) { index = i; } } if (typeof args[i] === 'string' && /\]$/.test(args[i])) { if (-- level > 0) continue; var sub = args.slice(index, i + 1); if (typeof sub[0] === 'string') { sub[0] = sub[0].replace(/^\[/, ''); } if (sub[0] === '') sub.shift(); var n = sub.length - 1; if (typeof sub[n] === 'string') { sub[n] = sub[n].replace(/\]$/, ''); } if (sub[n] === '') sub.pop(); args_.push(parse(sub)); } else if (level === 0) args_.push(args[i]); } var argv = minimist(args_, opts); return argv; };