diff --git a/red/storage/localfilesystem.js b/red/storage/localfilesystem.js index ac0223c00..42b2af0a9 100644 --- a/red/storage/localfilesystem.js +++ b/red/storage/localfilesystem.js @@ -28,7 +28,7 @@ var promiseDir = nodeFn.lift(mkdirp); var settings; var flowsFile; var flowsFullPath; -var flowsPrev; +var flowsFileBackup; var credentialsFile; var oldCredentialsFile; var userDir; @@ -153,10 +153,17 @@ var localfilesystem = { flowsFile = 'flows_'+require('os').hostname()+'.json'; flowsFullPath = fspath.join(userDir,flowsFile); } - var fsext = fspath.extname(flowsFile); - credentialsFile = fspath.join(userDir,fspath.basename(flowsFile,fsext)+"_cred"+fsext); + var ffExt = fspath.extname(flowsFullPath); + var ffName = fspath.basename(flowsFullPath); + var ffBase = fspath.basename(flowsFullPath,ffExt); + var ffDir = fspath.dirname(flowsFullPath); + + credentialsFile = fspath.join(userDir,ffBase+"_cred"+ffExt); + credentialsFileBackup = fspath.join(userDir,"."+ffBase+"_cred"+ffExt+".backup"); + oldCredentialsFile = fspath.join(userDir,"credentials.json"); - flowsPrev = fspath.join(userDir,"flows.backup"); + + flowsFileBackup = fspath.join(ffDir,"."+ffName+".backup"); libDir = fspath.join(userDir,"lib"); libFlowsDir = fspath.join(libDir,"flows"); @@ -185,7 +192,7 @@ var localfilesystem = { saveFlows: function(flows) { if (fs.existsSync(flowsFullPath)) { - fs.renameSync(flowsFullPath,flowsPrev); + fs.renameSync(flowsFullPath,flowsFileBackup); } var flowData; @@ -221,6 +228,9 @@ var localfilesystem = { }, saveCredentials: function(credentials) { + if (fs.existsSync(credentialsFile)) { + fs.renameSync(credentialsFile,credentialsFileBackup); + } var credentialData; if (settings.flowFilePretty) { credentialData = JSON.stringify(credentials,null,4); diff --git a/test/red/storage/localfilesystem_spec.js b/test/red/storage/localfilesystem_spec.js index a13117090..fe2ec629f 100644 --- a/test/red/storage/localfilesystem_spec.js +++ b/test/red/storage/localfilesystem_spec.js @@ -62,7 +62,7 @@ describe('LocalFileSystem', function() { localfilesystem.init({userDir:userDir}).then(function() { var flowFile = 'flows_'+require('os').hostname()+'.json'; var flowFilePath = path.join(userDir,flowFile); - var flowFileBackupPath = path.join(userDir,"flows.backup"); + var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup"); fs.existsSync(flowFilePath).should.be.false; fs.existsSync(flowFileBackupPath).should.be.false; localfilesystem.saveFlows(testFlow).then(function() { @@ -114,7 +114,7 @@ describe('LocalFileSystem', function() { var defaultFlowFilePath = path.join(userDir,defaultFlowFile); var flowFile = 'test.json'; var flowFilePath = path.join(userDir,flowFile); - var flowFileBackupPath = path.join(userDir,"flows.backup"); + var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup"); localfilesystem.init({userDir:userDir, flowFile:flowFilePath}).then(function() { fs.existsSync(defaultFlowFilePath).should.be.false;