/** * Copyright 2013, 2014 IBM Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ var fs = require('fs'); var when = require('when'); var nodeFn = require('when/node/function'); var keys = require('when/keys'); var util = require('util'); var fspath = require("path"); var mkdirp = require("mkdirp"); var promiseDir = nodeFn.lift(mkdirp); var settings; var flowsFile; var flowsFullPath; var flowsPrev; var credentialsFile; var oldCredentialsFile; var userDir; var libDir; var libFlowsDir; function listFiles(dir) { var dirs = {}; var files = []; var dirCount = 0; return nodeFn.call(fs.readdir, dir).then(function (contents) { contents.sort().forEach(function(fn) { var stats = fs.lstatSync(dir+"/"+fn); if (stats.isDirectory()) { dirCount += 1; dirs[fn] = listFiles(dir+"/"+fn) } else { files.push(fn.split(".")[0]); } }) var result = {}; if (dirCount > 0) { result.d = keys.all(dirs); } if (files.length > 0) { result.f = when.resolve(files); } return keys.all(result); }) } function getFileMeta(root,path) { var fn = fspath.join(root,path); var fd = fs.openSync(fn,"r"); var size = fs.fstatSync(fd).size; var meta = {}; var scanning = true; var read = 0; var length = 10; var offset = 0; var remaining = ""; var buffer = Buffer(length); while(read < size) { read+=fs.readSync(fd,buffer,0,length); var data = remaining+buffer.toString(); var parts = data.split("\n"); remaining = parts.splice(-1); for (var i=0;i