From e4a670be1dd949637463fdaf2a2078568d786712 Mon Sep 17 00:00:00 2001 From: jupiter Date: Tue, 17 Feb 2015 10:15:10 +0000 Subject: [PATCH] Added database option --- bin/cli.js | 9 +++++---- bin/dump.js | 28 +++++++++++++++++++++------- package.json | 3 ++- src/cli.coffee | 6 ++++-- src/dump.coffee | 7 ++++--- 5 files changed, 36 insertions(+), 17 deletions(-) diff --git a/bin/cli.js b/bin/cli.js index bbebae5..c15e9c6 100644 --- a/bin/cli.js +++ b/bin/cli.js @@ -1,5 +1,5 @@ (function() { - var argv, doDump, dump, fs, package, params, path, _ref, _ref2, _ref3, _ref4; + var argv, doDump, dump, fs, params, path, pkg, _ref, _ref1, _ref2, _ref3, _ref4; fs = require('fs'); @@ -9,13 +9,14 @@ dump = require('./dump'); - package = JSON.parse(fs.readFileSync(path.normalize(__dirname + '/../package.json'), 'utf8')); + pkg = JSON.parse(fs.readFileSync(path.normalize(__dirname + '/../package.json'), 'utf8')); if (argv.help) { - console.log("" + package.name + " " + package.version + "\n\nUsage: redis-dump [OPTIONS]\n -h Server hostname (default: 127.0.0.1)\n -p Server port (default: 6379)\n -f Query filter (default: *)\n --convert Convert from json to redis commands\n --help Output this help and exit\n --json Output result as json\n --pretty Make pretty indented output (use with --json)\n\nExamples:\n redis-dump\n redis-dump -p 6500\n redis-dump -f 'mydb:*' > mydb.dump.txt\n redis-dump --json > mydb.json\n cat mydb.json | redis-dump --convert\n\nThe output is a valid list of redis commands.\nThat means the following will work:\n redis-dump > dump.txt # Dump redis database\n cat dump.txt | redis-cli # Import redis database from generated file\n"); + console.log(pkg.name + " " + pkg.version + "\n\nUsage: redis-dump [OPTIONS]\n -h Server hostname (default: 127.0.0.1)\n -p Server port (default: 6379)\n -d Database number (default: 0)\n -f Query filter (default: *)\n --convert Convert from json to redis commands\n --help Output this help and exit\n --json Output result as json\n --pretty Make pretty indented output (use with --json)\n\nExamples:\n redis-dump\n redis-dump -p 6500\n redis-dump -f 'mydb:*' > mydb.dump.txt\n redis-dump --json > mydb.json\n cat mydb.json | redis-dump --convert\n\nThe output is a valid list of redis commands.\nThat means the following will work:\n redis-dump > dump.txt # Dump redis database\n cat dump.txt | redis-cli # Import redis database from generated file\n"); } else { params = { filter: (_ref = argv.f) != null ? _ref : '*', + db: (_ref1 = argv.d) != null ? _ref1 : 0, port: (_ref2 = argv.p) != null ? _ref2 : 6379, host: (_ref3 = argv.h) != null ? _ref3 : '127.0.0.1', format: argv.json ? 'json' : 'redis', @@ -25,7 +26,7 @@ return dump(params, function(err, result) { var _ref5; if (err != null) { - return process.stderr.write("" + ((_ref5 = err.message) != null ? _ref5 : err) + "\n"); + return process.stderr.write(((_ref5 = err.message) != null ? _ref5 : err) + "\n"); } if ((result != null) && ("" + result).replace(/^\s+/, '').replace(/\s+$/, '') !== '') { console.log(result); diff --git a/bin/dump.js b/bin/dump.js index 8dae262..9e5261e 100644 --- a/bin/dump.js +++ b/bin/dump.js @@ -8,11 +8,24 @@ module.exports = function(params, callback) { var dumper; - if (params.port == null) params.port = 6379; - if (params.host == null) params.host = '127.0.0.1'; - if (params.filter == null) params.filter = '*'; - if (params.format == null) params.format = 'redis'; - if (params.convert == null) params.convert = null; + if (params.port == null) { + params.port = 6379; + } + if (params.host == null) { + params.host = '127.0.0.1'; + } + if (params.db == null) { + params.db = '0'; + } + if (params.filter == null) { + params.filter = '*'; + } + if (params.format == null) { + params.format = 'redis'; + } + if (params.convert == null) { + params.convert = null; + } dumper = new RedisDumper(params); return dumper.dump(params, function() { var params; @@ -43,9 +56,9 @@ }; RedisDumper.prototype.dump = function(_arg, callback) { - var convert, filter, format, keys, pretty, ttls, types, values, + var convert, filter, db, format, keys, pretty, ttls, types, values, _this = this; - filter = _arg.filter, format = _arg.format, convert = _arg.convert, pretty = _arg.pretty; + filter = _arg.filter, db = _arg.db, format = _arg.format, convert = _arg.convert, pretty = _arg.pretty; keys = []; types = []; values = []; @@ -57,6 +70,7 @@ return callback(e); } } + _this.db.select(db); return run([ function(next) { var k; diff --git a/package.json b/package.json index 3f50045..9e79f7e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "optimist": ">=0.3.1" }, "devDependencies": { - "coffee-script": ">=1.2.0" + "coffee-script": ">=1.2.0", + "findit": "1" }, "repository": { "type": "git", diff --git a/src/cli.coffee b/src/cli.coffee index df9e242..7322d4c 100644 --- a/src/cli.coffee +++ b/src/cli.coffee @@ -3,16 +3,17 @@ fs = require 'fs' path = require 'path' argv = require('optimist').argv dump = require './dump' -package = JSON.parse fs.readFileSync path.normalize(__dirname+'/../package.json'), 'utf8' +pkg = JSON.parse fs.readFileSync path.normalize(__dirname+'/../package.json'), 'utf8' # Display help if requested if argv.help console.log """ - #{package.name} #{package.version} + #{pkg.name} #{pkg.version} Usage: redis-dump [OPTIONS] -h Server hostname (default: 127.0.0.1) -p Server port (default: 6379) + -d Database number (default: 0) -f Query filter (default: *) --convert Convert from json to redis commands --help Output this help and exit @@ -35,6 +36,7 @@ if argv.help else params = filter: argv.f ? '*' + db: argv.d ? 0 port: argv.p ? 6379 host: argv.h ? '127.0.0.1' format: if argv.json then 'json' else 'redis' diff --git a/src/dump.coffee b/src/dump.coffee index 6a402a1..173b107 100644 --- a/src/dump.coffee +++ b/src/dump.coffee @@ -5,6 +5,7 @@ redis = require 'redis' module.exports = (params, callback) -> params.port ?= 6379 params.host ?= '127.0.0.1' + params.db ?= '0' params.filter ?= '*' params.format ?= 'redis' params.convert ?= null @@ -28,8 +29,8 @@ class RedisDumper return "#{value}" else return "'"+"#{value}".split('\\').join('\\\\').split('\'').join('\\\'')+"'" - - dump: ({filter, format, convert, pretty}, callback) -> + + dump: ({db, filter, format, convert, pretty}, callback) -> keys = [] types = [] values = [] @@ -39,7 +40,7 @@ class RedisDumper convert = JSON.parse convert catch e return callback e - + @db.select db run [ # Get keys matching filter (next) =>