From d5dee498f52241edfc3e028657ce101ea713703d Mon Sep 17 00:00:00 2001 From: tigerbot Date: Thu, 1 Jun 2017 13:06:52 -0600 Subject: [PATCH] made sure the var dir can be created if needed looks like the var directory is not present when goldilocks is npm installed --- lib/app.js | 8 +++++++- lib/mdns.js | 12 +++++++++--- lib/tunnel-manager.js | 11 +++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/lib/app.js b/lib/app.js index e150402..6eb72f2 100644 --- a/lib/app.js +++ b/lib/app.js @@ -94,7 +94,13 @@ module.exports = function (myDeps, conf, overrideHttp) { obj.id = id; owners[id] = obj; - return fs.writeFileAsync(ownersPath, JSON.stringify(owners), 'utf8'); + return fs.mkdirAsync(path.dirname(ownersPath)).catch(function (err) { + if (err.code !== 'EEXIST') { + console.error('failed to mkdir', path.dirname(ownersPath), err.toString()); + } + }).then(function () { + return fs.writeFileAsync(ownersPath, JSON.stringify(owners), 'utf8'); + }); } }; diff --git a/lib/mdns.js b/lib/mdns.js index 5447f92..7da687a 100644 --- a/lib/mdns.js +++ b/lib/mdns.js @@ -2,7 +2,8 @@ var PromiseA = require('bluebird'); var fs = PromiseA.promisifyAll(require('fs')); -var idFilename = require('path').join(__dirname, '..', 'var', 'mdns-id'); +var path = require('path'); +var idFilename = path.join(__dirname, '..', 'var', 'mdns-id'); var queryName = '_cloud._tcp.local'; var randomId = { @@ -18,10 +19,15 @@ var randomId = { } , set: function (value) { - return fs.writeFileAsync(idFilename, value) - .then(function () { + return fs.mkdirAsync(path.dirname(idFilename)).catch(function (err) { + if (err.code !== 'EEXIST') { + console.error('failed to mkdir', path.dirname(idFilename), err.toString()); + } + }).then(function () { + return fs.writeFileAsync(idFilename, value).then(function () { return value; }); + }); } }; diff --git a/lib/tunnel-manager.js b/lib/tunnel-manager.js index 30330d8..1b099a4 100644 --- a/lib/tunnel-manager.js +++ b/lib/tunnel-manager.js @@ -6,7 +6,8 @@ module.exports.create = function (deps, config) { var stunnel = require('stunnel'); var activeTunnels = {}; - var tokensPath = require('path').join(__dirname, '..', 'var', 'tokens.json'); + var path = require('path'); + var tokensPath = path.join(__dirname, '..', 'var', 'tokens.json'); var storage = { _read: function () { var tokens; @@ -18,7 +19,13 @@ module.exports.create = function (deps, config) { return tokens; } , _write: function (tokens) { - return fs.writeFileAsync(tokensPath, JSON.stringify(tokens), 'utf8'); + return fs.mkdirAsync(path.dirname(tokensPath)).catch(function (err) { + if (err.code !== 'EEXIST') { + console.error('failed to mkdir', path.dirname(tokensPath), err.toString()); + } + }).then(function () { + return fs.writeFileAsync(tokensPath, JSON.stringify(tokens), 'utf8'); + }); } , all: function () {