Comparing version 0.7.30-193 to 0.7.31-195
@@ -47,4 +47,5 @@ exports.login = require('./lib/login.js'); | ||
exports.restart = require('./lib/restart.js'); | ||
exports.env = require('./lib/env.js'); | ||
@@ -188,2 +188,50 @@ // Misc common functions.. | ||
exports.createTableForAppEnvVars = function(appEnvVars, envValue){ | ||
var maxId=24, maxTS = 20, maxName = 25, maxDevValue = 25, maxLiveValue = 25; | ||
for(var i=0;i<appEnvVars.length;i++){ | ||
var appEnvVar = appEnvVars[i].fields; | ||
if(strlen(appEnvVar.name) > maxName) maxName = strlen(appEnvVar.name); | ||
if(strlen(appEnvVar.devValue) > maxDevValue) maxDevValue = strlen(appEnvVar.devValue); | ||
if(strlen(appEnvVar.liveValue) > maxLiveValue) maxLiveValue = strlen(appEnvVar.liveValue); | ||
} | ||
if(maxName > exports.maxTableCell) maxName = exports.maxTableCell; | ||
if(maxDevValue > exports.maxTableCell) maxDevValue = exports.maxTableCell; | ||
if(maxLiveValue > exports.maxTableCell) maxLiveValue = exports.maxTableCell; | ||
var tableHeaders = ['Guid', 'Modified', 'Name']; | ||
var tableColWidths = [maxId+2, maxTS+2, maxName+2]; | ||
if(!envValue){ | ||
tableHeaders.push("Dev Value"); | ||
tableHeaders.push("Live Value"); | ||
tableColWidths.push(maxDevValue+2); | ||
tableColWidths.push(maxLiveValue+2); | ||
} else { | ||
if("dev" === envValue){ | ||
tableHeaders.push("Dev Value"); | ||
tableColWidths.push(maxDevValue+2) | ||
} else { | ||
tableHeaders.push("Live Value"); | ||
tableColWidths.push(maxLiveValue+2) | ||
} | ||
} | ||
var table = new Table({ | ||
head: tableHeaders, | ||
colWidths: tableColWidths, | ||
style: exports.style() | ||
}); | ||
for(var p=0;p<appEnvVars.length;p++){ | ||
var appVar = appEnvVars[p].fields; | ||
var dataRow = [ appVar.guid, moment(appVar.sysCreated, 'YYYY-MM-DD h:mm:ss:SSS').fromNow(), appVar.name]; | ||
if(appVar.devValue){ | ||
dataRow.push(appVar.devValue); | ||
} | ||
if(appVar.liveValue){ | ||
dataRow.push(appVar.liveValue); | ||
} | ||
table.push(dataRow); | ||
} | ||
return table; | ||
} | ||
function bytesToSize(bytes) { | ||
@@ -341,3 +389,40 @@ var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; | ||
// Env Var functions | ||
function postEnv(action, payload, errorMsg,cb) { | ||
exports.doApiCall(fhreq.getFeedHenryUrl(), "box/srv/1.1/app/envvariable/" + action, payload, errorMsg, cb); | ||
}; | ||
exports.createAppEnv= function(appId, varName,devValue,liveValue,cb) { | ||
postEnv("create", {appId:appId,name:varName, devValue: devValue, liveValue: liveValue}, "Error creating env var: ", cb); | ||
}; | ||
exports.readAppEnv= function(appId, envVarId, envValue, cb) { | ||
postEnv("read", {appId:appId, envVarId:envVarId, env: envValue}, "Error reading env var: ", cb); | ||
}; | ||
exports.updateAppEnv= function(appId, envVarId, varName,devValue,liveValue,cb) { | ||
postEnv("update", {appId:appId,envVarId:envVarId,name:varName,devValue:devValue, liveValue: liveValue}, "Error updating env var: ", cb); | ||
}; | ||
exports.deleteAppEnv= function(appId, envVarId, envValue, cb) { | ||
postEnv("delete", {appId:appId,envVarId:envVarId, env: envValue}, "Error deleting env var: ", cb); | ||
}; | ||
exports.listAppEnv= function(appId, env,cb) { | ||
postEnv("list", {appId:appId,env:env}, "Error listing env var: ", cb); | ||
}; | ||
exports.unsetAppEnv= function(params, cb){ | ||
postEnv("unset", params, "Error unseting env var:", cb); | ||
} | ||
exports.pushAppEnv = function(appId, env, cb){ | ||
postEnv("push", {appId: appId, env: env}, "Error pushing env vars:", cb); | ||
} | ||
exports.listDeployedAppEnv = function(appId, env, cb){ | ||
postEnv("listDeployed", {appId: appId, env: env}, "Error listing deployed env vars:", cb); | ||
} | ||
//parse <key>=<value> format | ||
@@ -376,2 +461,1 @@ function parseArgs(args) { | ||
exports.parseArgs = parseArgs; | ||
@@ -87,2 +87,3 @@ process.title = "fhc"; | ||
,'embed' | ||
,'env' | ||
,'ota' | ||
@@ -89,0 +90,0 @@ ,'configuration' |
module.exports = initlocal; | ||
initlocal.initlocal = initlocal; | ||
initlocal.getEnvVars = getEnvVariables; | ||
@@ -21,2 +22,3 @@ initlocal.usage = "fhc initlocal <app-id>"; | ||
var cheerio = require('cheerio'); | ||
var env = require('./env.js'); | ||
@@ -178,2 +180,56 @@ var localDirectory = ".fhclocal"; | ||
function loadEnvVariables(localdir, appId, cb){ | ||
env.list(appId, "dev", function(err, data){ | ||
if(err) return cb(err); | ||
var envVars = {}; | ||
if(data.list && data.list.length > 0){ | ||
for(var i=0;i<data.list.length;i++){ | ||
var fields = data.list[i].fields; | ||
envVars[fields.name] = fields.devValue; | ||
} | ||
} | ||
writeFileToLocalDirectory(localdir, "envvar.json", JSON.stringify(envVars), function(err, result){ | ||
if(err) return cb(err); | ||
return cb(null, envVars); | ||
}); | ||
}); | ||
} | ||
function getEnvVariables(appId, cb){ | ||
if(!appId){ | ||
appId = getAppId(); | ||
} | ||
var envvarFilePath = path.join(localDirectory, "envvar.json"); | ||
//will always try load data from remote first | ||
loadEnvVariables(localDirectory, appId, function(err, envVars){ | ||
if(err){ | ||
//can not load from remote, try read the local file | ||
if(fs.existsSync(envvarFilePath)){ | ||
fs.readFile(envvarFilePath, "utf8", function(err, data){ | ||
if(err) return cb(err); | ||
return cb(null, JSON.parse(data)); | ||
}); | ||
} else { | ||
console.log("No environment variables set."); | ||
return cb(null, {}); | ||
} | ||
} else { | ||
return cb(null, envVars); | ||
} | ||
}); | ||
} | ||
function getAppId(){ | ||
var container, appId; | ||
var p = localDirectory + "/container.html"; | ||
if(fs.existsSync(p)){ | ||
container = fs.readFileSync(p, "utf8"); | ||
var re = new RegExp('"appid"\\s*:\\s*"(.{24})"'); | ||
if(re.test(container)){ | ||
appId = re.exec(container)[1]; | ||
} | ||
} | ||
return appId; | ||
} | ||
function doInitLocal (appId, cb) { | ||
@@ -180,0 +236,0 @@ if (!appId) return cb("No appId specified! Usage:\n" + initlocal.usage); |
@@ -228,2 +228,5 @@ "use strict"; | ||
appid = args.splice(0,1); | ||
if(appid){ | ||
appid = appid.toString(); | ||
} | ||
} | ||
@@ -241,2 +244,3 @@ argObj = common.parseArgs(args); | ||
} | ||
var appEnvironment = {}; | ||
if(!fs.existsSync(fhcLocalDir)) { | ||
@@ -264,2 +268,9 @@ if(!argObj.appid) { | ||
function(callback) { | ||
initlocal.getEnvVars(appid, function(err, envVars){ | ||
if(err) return callback(err); | ||
appEnvironment = envVars; | ||
return callback(); | ||
}); | ||
}, | ||
function(callback) { | ||
packages = getPackagesList(argObj.packages); | ||
@@ -271,8 +282,6 @@ | ||
// parameters are passed to the app in the process environment | ||
var appEnvironment = { | ||
'NODE_PATH': (process.platform === 'win32') ? './cloud;./shared' : './cloud:./shared', | ||
'FH_PORT': argObj.cloudPort, | ||
'FH_REDIS_HOST': argObj.redisHost, | ||
'FH_REDIS_PORT': argObj.redisPort | ||
}; | ||
appEnvironment['NODE_PATH'] = (process.platform === 'win32') ? './cloud;./shared' : './cloud:./shared'; | ||
appEnvironment['FH_PORT'] = argObj.cloudPort; | ||
appEnvironment['FH_REDIS_HOST'] = argObj.redisHost; | ||
appEnvironment['FH_REDIS_PORT'] = argObj.redisPort; | ||
@@ -279,0 +288,0 @@ if (argObj.redisPassword) { |
@@ -5,3 +5,3 @@ { | ||
"keywords" : [ "cli", "feedhenry" ], | ||
"version": "0.7.30-193", | ||
"version": "0.7.31-195", | ||
"preferGlobal" : true, | ||
@@ -24,9 +24,9 @@ "homepage" : "http://git.io/fh-fhc", | ||
"nopt" : "1", | ||
"async" : "*", | ||
"async" : "0.2.6", | ||
"request" : "~2.11", | ||
"vmcjs" : "*", | ||
"cheerio" : "*", | ||
"moment": "*", | ||
"vmcjs" : "0.1.11", | ||
"cheerio" : "0.10.8", | ||
"moment": "2.0.0", | ||
"cli-table" : "0.0.2", | ||
"mime": "*" | ||
"mime": "1.2.9" | ||
}, | ||
@@ -33,0 +33,0 @@ "devDependencies" : { |
@@ -1,1 +0,1 @@ | ||
0.7.30-193 | ||
0.7.31-195 |
Non-existent author
Supply chain riskThe package was published by an npm account that no longer exists.
Found 1 instance in 1 package
Wildcard dependency
QualityPackage has a dependency with a floating version range. This can cause issues if the dependency publishes a new major version.
Found 5 instances in 1 package
392373
151
10089
2
1
88
29
+ Addedasync@0.2.6(transitive)
+ Addedcheerio@0.10.8(transitive)
+ Addeddomelementtype@1.3.1(transitive)
+ Addeddomhandler@2.0.3(transitive)
+ Addeddomutils@1.0.1(transitive)
+ Addedentities@0.5.0(transitive)
+ Addedhtmlparser2@2.6.0(transitive)
+ Addedmime@1.2.9(transitive)
+ Addedmoment@2.0.0(transitive)
+ Addedunderscore@1.4.4(transitive)
+ Addedvmcjs@0.1.11(transitive)
- Removedasync@3.2.6(transitive)
- Removedcheerio@1.0.0(transitive)
- Removedencoding-sniffer@0.2.0(transitive)
- Removedhtmlparser2@9.1.0(transitive)
- Removediconv-lite@0.6.3(transitive)
- Removedmime@4.0.4(transitive)
- Removedmoment@2.30.1(transitive)
- Removedparse5@7.2.0(transitive)
- Removedparse5-htmlparser2-tree-adapter@7.1.0(transitive)
- Removedparse5-parser-stream@7.1.2(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedundici@6.20.1(transitive)
- Removedvmcjs@0.1.12(transitive)
- Removedwhatwg-encoding@3.1.1(transitive)
- Removedwhatwg-mimetype@4.0.0(transitive)
Updatedasync@0.2.6
Updatedcheerio@0.10.8
Updatedmime@1.2.9
Updatedmoment@2.0.0
Updatedvmcjs@0.1.11