Socket
Socket
Sign inDemoInstall

axe

Package Overview
Dependencies
Maintainers
2
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

axe - npm Package Compare versions

Comparing version 0.2.4 to 0.2.5

lib/modules/default-vpc.js

103

lib/cli.js

@@ -12,7 +12,9 @@ 'use strict';

var stackFile = argv._[0] || process.cwd();
var cmd = argv._[0];
var stackFile = argv.stack || argv.s || process.cwd();
var name = argv.name || argv.n;
var action = argv.action || argv.a;
var env = argv.env || argv.e || process.env.NODE_ENV;
var envFile = argv['env-file'] || argv.f || '.env';
var output = argv.output || argv.o;
var region = argv.region || argv.r || 'us-east-1';

@@ -25,3 +27,9 @@ var profile = argv.profile || argv.p;

if (env) process.env.NODE_ENV = env;
if (envFile) _dotenv2.default.config({ path: envFile, silent: true });
if (envFile) {
var file = envFile;
if (!Array.isArray(file)) file = [file];
file.forEach(function (path) {
return _dotenv2.default.config({ path: path, silent: true });
});
}

@@ -32,6 +40,6 @@ if (region) process.env.AWS_REGION = region;

if (version) return console.log('Axe v' + _package2.default.version);
if (help) return helpMenu();
if (help || !cmd || cmd === 'help') return helpMenu();
if (String(process.env.NODE_ENV) === 'undefined') {
throw new Error('Please specify a NODE_ENV environment variable!');
throw new Error('Please specify an environment!');
}

@@ -54,36 +62,59 @@

if (action === 'delete') {
_inquirer2.default.prompt([{
type: 'confirm',
name: 'sure',
message: 'Are you sure you want to destroy everything for ' + name + '?'
}]).then(function (_ref) {
var sure = _ref.sure;
if (output) {
return console.log(JSON.stringify(template.stack || template, null, 2));
}
if (!sure) return;
var cloudFormation = new _awsSdk2.default.CloudFormation();
new _awsSdk2.default.CloudFormation().deleteStack({
StackName: name + '--' + process.env.NODE_ENV
}, function (err, res) {
if (err && !quiet) return console.error(err);
if (!quiet) console.log(res);
var payload = {
Capabilities: ['CAPABILITY_NAMED_IAM'],
StackName: name + '--' + process.env.NODE_ENV,
TemplateBody: JSON.stringify(template.stack || template),
Tags: _index2.default.defaultTags({ name: name }),
Parameters: Object.keys(template.parameters || {}).map(function (key) {
return {
ParameterKey: key,
ParameterValue: template.parameters[key]
};
})
};
var promise = Promise.resolve();
switch (cmd) {
case 'apply':
promise = cloudFormation.describeStacks({
StackName: payload.StackName
}).promise().then(function () {
return cloudFormation.updateStack(payload).promise();
}).catch(function (err) {
if (err.message.match(/does not exist/)) {
return cloudFormation.createStack(payload).promise();
}
throw err;
});
});
} else {
new _awsSdk2.default.CloudFormation()[action + 'Stack']({
Capabilities: ['CAPABILITY_NAMED_IAM'],
StackName: name + '--' + process.env.NODE_ENV,
TemplateBody: JSON.stringify(template.stack || template),
Tags: _index2.default.DefaultTags({ name: name }),
Parameters: Object.keys(template.parameters || {}).map(function (key) {
return {
ParameterKey: key,
ParameterValue: template.parameters[key]
};
})
}, function (err, res) {
if (err && !quiet) return console.error(err);
if (!quiet) console.log(res);
});
break;
case 'destroy':
promise = _inquirer2.default.prompt([{
type: 'confirm',
name: 'sure',
default: false,
message: 'Are you sure you want to destroy everything for ' + name + '?'
}]).then(function (_ref) {
var sure = _ref.sure;
if (!sure) return;
return cloudFormation.deleteStack({
StackName: name + '--' + process.env.NODE_ENV
}).promise();
});
break;
}
promise.then(function (res) {
return !quiet && res && console.log(res);
}).catch(function (err) {
return !quiet && err && console.error(err.message || err);
});
};

@@ -130,3 +161,3 @@

function helpMenu() {
console.log('\n axe [stack file] [options]\n\n --name, -n Name of the CloudFormation stack\n --action, -a CloudFormation action to use (create, update, delete)\n --env, -e Sets the stack environment name (default: NODE_ENV)\n --env-file, -f A file to read environment variables from (default: .env)\n --region, -r AWS region to create stack in (default: us-east-1)\n --profile, -p AWS credentials profile to use\n --quiet, -q Don\'t show any output\n --version, -v Show Axe version number\n --help, -h This one got you here ;)\n ');
console.log('\n Usage:\n\n axe <command> [options]\n\n Commands:\n\n apply Create or update your infrastructure\n destroy Delete everything in your infrastructure\n\n Options:\n\n --stack, -s File to require for creating the stack object\n --name, -n Name of the CloudFormation stack\n --env, -e Sets the stack environment name (default: NODE_ENV)\n --env-file, -f A file to read environment variables from (default: .env)\n --output, -o Output the CloudFormation stack instead of applying\n --region, -r AWS region to create stack in (default: us-east-1)\n --profile, -p AWS credentials profile to use\n --quiet, -q Don\'t show any output\n --version, -v Show Axe version number\n ');
}
'use strict';
var _deepAssign = require('deep-assign');
var _deepAssign2 = _interopRequireDefault(_deepAssign);
var _resources = require('./resources');

@@ -14,41 +18,67 @@

module.exports = {
AwsData: _awsData2.default,
Resources: _resources2.default,
awsData: _awsData2.default,
resources: _resources2.default,
Ref: function Ref(resource) {
ref: function ref(resource) {
return { Ref: resource.id || resource };
},
Get: function Get(key, value) {
get: function get(key, value) {
return { 'Fn::GetAtt': [key.id || key, value] };
},
Import: function Import(key) {
import: function _import(key) {
return { 'Fn::ImportValue': key };
},
Join: function Join(keys) {
join: function join(keys) {
var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return { 'Fn::Join': [delim, keys] };
},
Sub: function Sub(str, keys) {
sub: function sub(str, keys) {
return { 'Fn::Sub': keys ? [str, keys] : str };
},
Base64: function Base64(val) {
base64: function base64(val) {
return { 'Fn::Base64': val };
},
AccountId: function AccountId() {
accountId: function accountId() {
return { Ref: 'AWS::AccountId' };
},
StackId: function StackId() {
stackId: function stackId() {
return { Ref: 'AWS::StackId' };
},
StackName: function StackName() {
stackName: function stackName() {
return { Ref: 'AWS::StackName' };
},
Region: function Region() {
region: function region() {
return { Ref: 'AWS::Region' };
},
Build: function Build(stack) {
modules: function modules() {
return {
defaultVpc: require('./modules/default-vpc'),
dockerApp: require('./modules/docker-app'),
route53Redirect: require('./modules/route53-redirect')
};
},
build: function build(stack) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (Array.isArray(stack)) {
(function () {
var composedStack = { Resources: {} };
stack.forEach(function (s) {
/* ensure keys are unique */
Object.keys(s.Resources || {}).forEach(function (key) {
if (composedStack.Resources[key]) {
throw new Error('"' + key + '" is defined more than once!');
}
});
(0, _deepAssign2.default)(composedStack, s);
});
stack = composedStack;
})();
}
return {

@@ -60,3 +90,3 @@ stack: stack,

DefaultTags: function DefaultTags() {
defaultTags: function defaultTags() {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

@@ -63,0 +93,0 @@

@@ -11,12 +11,11 @@ 'use strict';

return function (Properties) {
var more = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var More = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (more.Environment) {
if (more.Environment !== process.env.NODE_ENV) return;else delete more.Environment;
if (More.environment) {
if (Array.isArray(More.environment) && More.environment.indexOf(process.env.NODE_ENV) === -1 || More.environment !== process.env.NODE_ENV) return;
delete More.environment;
}
return _extends({
Type: Type,
Properties: Properties
}, more);
return _extends({ Type: Type, Properties: Properties }, More);
};

@@ -23,0 +22,0 @@ };

{
"name": "axe",
"version": "0.2.4",
"version": "0.2.5",
"description": "Painlessly build and apply AWS CloudFormation stacks",

@@ -43,2 +43,3 @@ "author": "Jason Maurer",

"aws-sdk": "2.6.6",
"deep-assign": "2.0.0",
"dotenv": "2.0.0",

@@ -45,0 +46,0 @@ "inquirer": "1.2.1",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc