From 2d98328efcd05d35c3cf339b922a79bb04c0cbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Fran=C3=A7ois?= Date: Tue, 29 Mar 2016 15:11:32 +0000 Subject: [PATCH] Now use Q-IO to be async git diffgit diff --- bin/jsio.js | 30 +++++++++++++++++++++++++----- lib/jsiojs_core.js | 40 +++++++++++++++++++++++++++++----------- package.json | 3 ++- test/jsiojs_core_test.js | 36 ++++++++++++++++++++++-------------- 4 files changed, 78 insertions(+), 31 deletions(-) diff --git a/bin/jsio.js b/bin/jsio.js index 36df894..94b19d3 100644 --- a/bin/jsio.js +++ b/bin/jsio.js @@ -12,19 +12,35 @@ var params = args.slice(3) try { switch(command){ case "create": - jsiojs.createFile(params[0]) + var fileName = params[0] + jsiojs.createFile(fileName).then(function(){ + success('File '+fileName+' created with success !') + }) break case "delete": - jsiojs.deleteFile(params[0]) + var fileName = params[0] + jsiojs.deleteFile(fileName).then(function(){ + success('File '+fileName+' deleted with success !') + }) break case "rename": - jsiojs.renameFile(params[0], params[1]) + var oldName = params[0] + var newName = params[1] + jsiojs.renameFile(params[0], params[1]).then(function(){ + success('File '+oldName+' moved to '+newName+' with success !') + }) break case "copy": - jsiojs.copyFile(params[0], params[1]) + var source = params[0] + var destination = params[1] + jsiojs.copyFile(source, destination).then(function(){ + success('File '+source+' copied to '+destination+' with success !') + }) break case "show": - jsiojs.showFile(params[0]) + jsiojs.showFile(params[0]).then(function(content){ + console.log(content) + }) break default: console.error("Invalid command" .red) @@ -32,4 +48,8 @@ try { } } catch(err){ console.error(err .red); +} + +function success(message){ + console.info(message .green) } \ No newline at end of file diff --git a/lib/jsiojs_core.js b/lib/jsiojs_core.js index ab40ef1..59998b4 100644 --- a/lib/jsiojs_core.js +++ b/lib/jsiojs_core.js @@ -2,21 +2,20 @@ var fs = require("fs") var colors = require('colors') +var FS = require("q-io/fs") var exports = module.exports = {}; exports.createFile = function(fileName){ checkJsFile(fileName) checkFileNotExist(fileName) - fs.writeFile(fileName, '// Generated by JsIo.js\n'); - success('File '+fileName+' created with success !') + return FS.write(fileName, '// Generated by JsIo.js\n'); } exports.deleteFile = function(fileName){ checkJsFile(fileName) checkFileExist(fileName) - fs.unlinkSync(fileName); - success('File '+fileName+' deleted with success !' .green) + return FS.remove(fileName) } exports.renameFile = function(oldName, newName){ @@ -24,8 +23,7 @@ exports.renameFile = function(oldName, newName){ checkJsFile(newName) checkFileExist(oldName) checkFileNotExist(newName) - fs.renameSync(oldName, newName) - success('File '+oldName+' moved to '+newName+' with success !' .green) + return FS.rename(oldName, newName) } exports.copyFile = function(source, destination){ @@ -33,14 +31,13 @@ exports.copyFile = function(source, destination){ checkJsFile(destination) checkFileExist(source) checkFileNotExist(destination) - fs.createReadStream(source).pipe(fs.createWriteStream(destination)); - success('File '+source+' copied to '+destination+' with success !' .green) - } - + return FS.copy(source, destination); + } + exports.showFile = function(fileName){ checkJsFile(fileName) checkFileExist(fileName) - fs.createReadStream(fileName).pipe(process.stdout); + return FS.read(fileName, "r") } function checkJsFile(fileName){ @@ -59,6 +56,27 @@ function checkFileExist(fileName){ if(!fs.existsSync(fileName)) throw fileName+" does not exist" } +/* Coming soon +function checkFileNotExist(fileName){ + return FS.exists(fileName).then(function(result){ + if(result) + throw fileName+" already exists" + else + return true + }) +} + +function checkFileExist(fileName){ + return FS.exists(fileName).then(function(result){ + if(!result) + throw fileName+" already exists" + else + return true + }) + throw fileName+" does not exist" +} + +*/ function success(message){ console.info(message .green) diff --git a/package.json b/package.json index 59e6242..5ddf862 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "node": ">= 0.10.0" }, "dependencies": { - "colors" : "~1.1.2" + "colors" : "~1.1.2", + "q-io": "~1.13.2 " }, "devDependencies": { "mocha": "~1.17.1", diff --git a/test/jsiojs_core_test.js b/test/jsiojs_core_test.js index 2ccd4d2..5eb885f 100644 --- a/test/jsiojs_core_test.js +++ b/test/jsiojs_core_test.js @@ -1,6 +1,9 @@ var chai = require('chai') var jsiojs = require('../lib/jsiojs_core') var fs = require("fs") +var MockFs = require("q-io/fs-mock"); + +var mockFs = MockFs() chai.should() var expect = chai.expect @@ -16,9 +19,10 @@ describe('jsiojs', function() { var fileName = generateFileName() fs.existsSync(fileName).should.be.false // When - jsiojs.createFile(fileName) - // Then - fs.existsSync(fileName).should.be.true + jsiojs.createFile(fileName).then(function(){ + // Then + fs.existsSync(fileName).should.be.true + }) }) }) @@ -66,9 +70,11 @@ describe('jsiojs', function() { fs.writeFileSync(fileName,"") fs.existsSync(fileName).should.be.true // When - jsiojs.deleteFile(fileName) - // Then - fs.existsSync(fileName).should.be.false + jsiojs.deleteFile(fileName).then(function(){ + // Then + fs.existsSync(fileName).should.be.false + }) + }) }) @@ -117,10 +123,11 @@ describe('jsiojs', function() { var newName = generateFileName() fs.existsSync(newName).should.be.false // When - jsiojs.renameFile(oldName, newName) - // Then - fs.existsSync(oldName).should.be.false - fs.existsSync(newName).should.be.true + jsiojs.renameFile(oldName, newName).then(function(){ + // Then + fs.existsSync(oldName).should.be.false + fs.existsSync(newName).should.be.true + }) }) }) @@ -208,10 +215,11 @@ describe('jsiojs', function() { var dest = generateFileName() fs.existsSync(dest).should.be.false // When - jsiojs.copyFile(src, dest) - // Then - fs.existsSync(src).should.be.true - fs.existsSync(dest).should.be.true + jsiojs.copyFile(src, dest).then(function function_name(argument) { + // Then + fs.existsSync(src).should.be.true + fs.existsSync(dest).should.be.true + }) }) })