@leverege/build-tools 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.publishrc +15 -0
  2. package/CHANGELOG.md +30 -0
  3. package/LICENSE.md +3 -0
  4. package/README.md +32 -0
  5. package/lib/server/auditate/help.js +119 -0
  6. package/lib/server/auditate/index.js +23 -0
  7. package/lib/server/auditate/report.js +61 -0
  8. package/lib/server/circleate +549 -0
  9. package/lib/server/decrypt-secrets +91 -0
  10. package/lib/server/dnsify/CloudflareAPI.js +103 -0
  11. package/lib/server/dnsify/accounts.json.enc +0 -0
  12. package/lib/server/dnsify/index.js +92 -0
  13. package/lib/server/dockreate +338 -0
  14. package/lib/server/encrypt-secrets +31 -0
  15. package/lib/server/getfbcfg +23 -0
  16. package/lib/server/getjson +48 -0
  17. package/lib/server/helmdn +103 -0
  18. package/lib/server/helmify +289 -0
  19. package/lib/server/helmup +87 -0
  20. package/lib/server/overwhelm +303 -0
  21. package/lib/server/packleate/Packleator.js +269 -0
  22. package/lib/server/packleate/index.js +98 -0
  23. package/lib/server/packleate/logo-ansi.js +17 -0
  24. package/lib/server/pkgck +136 -0
  25. package/lib/server/pkglint/index.js +19 -0
  26. package/lib/server/test.json +4 -0
  27. package/lib/web/auditate/help.js +158 -0
  28. package/lib/web/auditate/index.js +27 -0
  29. package/lib/web/auditate/report.js +91 -0
  30. package/lib/web/dnsify/CloudflareAPI.js +250 -0
  31. package/lib/web/dnsify/index.js +147 -0
  32. package/lib/web/packleate/Packleator.js +645 -0
  33. package/lib/web/packleate/index.js +157 -0
  34. package/lib/web/packleate/logo-ansi.js +3 -0
  35. package/lib/web/pkglint/index.js +19 -0
  36. package/package.json +74 -0
  37. package/src/auditate/help.js +83 -0
  38. package/src/auditate/index.js +25 -0
  39. package/src/auditate/report.js +54 -0
  40. package/src/circleate +549 -0
  41. package/src/decrypt-secrets +91 -0
  42. package/src/dnsify/CloudflareAPI.js +99 -0
  43. package/src/dnsify/accounts.json.enc +0 -0
  44. package/src/dnsify/index.js +82 -0
  45. package/src/dockreate +338 -0
  46. package/src/encrypt-secrets +31 -0
  47. package/src/getfbcfg +23 -0
  48. package/src/getjson +48 -0
  49. package/src/helmdn +103 -0
  50. package/src/helmify +289 -0
  51. package/src/helmup +87 -0
  52. package/src/overwhelm +303 -0
  53. package/src/packleate/Packleator.js +271 -0
  54. package/src/packleate/index.js +86 -0
  55. package/src/packleate/logo-ansi.js +16 -0
  56. package/src/pkgck +136 -0
  57. package/src/pkglint/index.js +21 -0
  58. package/src/test.json +4 -0
@@ -0,0 +1,136 @@
1
+ #!/bin/bash
2
+
3
+ C_off='\e[0m'
4
+ C_yellow='\e[93m'
5
+ C_red='\e[101m'
6
+ C_green='\e[92m'
7
+
8
+ good() {
9
+ printf "\e[32m✔${C_off}"
10
+ }
11
+
12
+ bad() {
13
+ printf "\e[31m✘${C_off}"
14
+ }
15
+
16
+ semver() {
17
+ local version=$1
18
+ local isSemver=`echo $version | egrep -e "^v\d+\.\d+\.\d+$"`
19
+ if [ -z "$version" ];
20
+ then
21
+ printf "UNTAGGD"
22
+ elif [ $isSemver ];
23
+ then
24
+ printf "$version"
25
+ else
26
+ printf "!SEMVER"
27
+ fi
28
+ }
29
+
30
+ check_babel () {
31
+ local C_stat=$(bad)
32
+ [ -f .babelrc ] && grep --silent @babel/plugin-proposal-optional-chaining .babelrc
33
+ [ $? -eq 0 ] && C_stat=$(good)
34
+ printf $C_stat
35
+ }
36
+
37
+ check_circle () {
38
+ local C_stat=$(bad)
39
+ [ -f ".circleci/config.yml" ] && C_stat=$(good)
40
+ printf $C_stat
41
+ }
42
+
43
+ check_eslint () {
44
+ local C_stat=$(bad)
45
+ [ -f .eslintrc ] && grep --silent @leverege/eslint-config-leverege .eslintrc
46
+ [ $? -eq 0 ] && C_stat=$(good)
47
+ printf $C_stat
48
+ }
49
+
50
+ check_license () {
51
+ local C_stat=$(bad)
52
+ local lic="`node -p \"require('./package.json').scripts.licenseCheck !== undefined\"`"
53
+ [ $lic == true ] && C_stat=$(good)
54
+ printf $C_stat
55
+ }
56
+
57
+ # Invoke as: version_ck $GITTAG $NPMVER
58
+ #
59
+ check_git_version() {
60
+ local tag=$1
61
+ local pkg=$2
62
+ local clr=$C_green
63
+
64
+ if [ "$tag" == 'UNTAGGD' ];
65
+ then
66
+ clr=$C_red
67
+ elif [ "$tag" != "$pkg" ];
68
+ then
69
+ clr=$C_yellow
70
+ fi
71
+
72
+ printf "$clr$tag$C_off"
73
+ }
74
+
75
+ check_nodemon() {
76
+ nodemon="`getjson --file ./package.json --key nodemon`"
77
+ }
78
+
79
+ check_scope() {
80
+ private="`node -p \"require('./package.json').private == true\"`"
81
+ scoped="`getjson --file ./package.json --key name --regex '^@\w{3}'`"
82
+ result="${C_red}PUBL${C_off}"
83
+ if [[ "$scoped" == "" ]] && [[ "$private" == "true" ]];
84
+ then
85
+ result="${C_yellow}PRVT"
86
+ elif [[ "$scoped" != "" ]];
87
+ then
88
+ result="${C_green}${scoped}"
89
+ elif [[ "$private" == "true" ]];
90
+ then
91
+ result="${C_green}prv"
92
+ fi
93
+ printf "${result}${C_off}"
94
+ }
95
+
96
+ repos=0
97
+ check_repo() {
98
+ local dir=$1
99
+ [ ! -d $dir/.git ] || [ ! -f $dir/package.json ] && return
100
+ cd $dir &> /dev/null
101
+ local gperrs=0
102
+ git pull -q &> /dev/null; [ $? -ne 0 ] && let "gperrs++"
103
+ git pull -q --tags &> /dev/null; [ $? -ne 0 ] && let "gperrs++"
104
+
105
+ # It is necessary to use the output from printf to set localmods in order
106
+ # to get the ANSI escape codes expanded.
107
+ local localmods=$(good)
108
+ [ $gperrs -ne 0 ] && localmods=$(bad)
109
+ pkgver=$(semver "v`node -p \"require('./package.json').version\"`")
110
+ gitver=$(semver `git describe --abbrev=0 2>/dev/null`)
111
+ [ $? -ne 0 ] && gitver='UNTAGGD'
112
+ local needspush=
113
+ if [ "$pkgver" == "$gitver" ];
114
+ then
115
+ git ls-remote --tags origin | grep $gitver &> /dev/null
116
+ [ $? -ne 0 ] && needspush='!tags'
117
+ fi
118
+ local babel7=$(check_babel)
119
+ local circle=$(check_circle)
120
+ local eslint=$(check_eslint)
121
+ local license=$(check_license)
122
+ local scoped=$(check_scope)
123
+ [ $(( $repos % 15)) -eq 0 ] && printf "\n%35s pkg git cln scop cir lic esl bl7\n"
124
+ printf "%32s: %-8s %-16s %s %8s %s %s %s %s %s\n" $dir $pkgver $(check_git_version $gitver $pkgver) $localmods $scoped $circle $license $eslint $babel7 "$needspush"
125
+ let "repos++"
126
+ cd - &> /dev/null
127
+ }
128
+
129
+ clear
130
+
131
+ pkgs="$@"
132
+ for dir in $@; do
133
+ check_repo $dir
134
+ done
135
+
136
+ printf "\ntotal repoitories checked: $repos\n\n"
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ const glob = require('glob');
5
+
6
+ const filesToCheck = ['README.md', 'LICENSE.md'];
7
+ const mdFiles = glob.sync('*.md'); // from https://github.com/lodash/lodash/issues/1743
8
+
9
+ function arrayContainsArray(superset, subset) {
10
+ if (subset.length === 0) {
11
+ return false;
12
+ }
13
+
14
+ return subset.every(value => {
15
+ return superset.indexOf(value) >= 0;
16
+ });
17
+ }
18
+
19
+ arrayContainsArray(mdFiles, filesToCheck) ? console.log('README and LICENSE files exist') : process.exit(1);
@@ -0,0 +1,4 @@
1
+ {
2
+ "name": "@leverege/packagename",
3
+ "main": "lib/index.js"
4
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es7.symbol.async-iterator");
4
+
5
+ require("core-js/modules/es6.symbol");
6
+
7
+ require("core-js/modules/es6.regexp.split");
8
+
9
+ require("core-js/modules/web.dom.iterable");
10
+
11
+ require("core-js/modules/es6.array.iterator");
12
+
13
+ require("core-js/modules/es6.object.to-string");
14
+
15
+ require("core-js/modules/es6.object.keys");
16
+
17
+ require("core-js/modules/es6.array.find");
18
+
19
+ require("core-js/modules/es6.object.assign");
20
+
21
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22
+
23
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+
25
+ var groupBy = require('lodash.groupby');
26
+
27
+ var keyBy = require('lodash.keyby');
28
+
29
+ var countBy = require('lodash.countby');
30
+
31
+ var orderBy = require('lodash.orderby');
32
+
33
+ var map = require('lodash.map');
34
+
35
+ var first = require('lodash.first');
36
+
37
+ module.exports = function () {
38
+ var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
39
+
40
+ function affectsProd(resolves) {
41
+ return !(config['prod-only'] && resolves.every(function (_ref) {
42
+ var dev = _ref.dev;
43
+ return dev;
44
+ }));
45
+ }
46
+
47
+ function requireAttention(auditResult) {
48
+ var actions = auditResult.actions,
49
+ advisories = auditResult.advisories;
50
+ var reviewActions = actions.filter(function (_ref2) {
51
+ var action = _ref2.action,
52
+ resolves = _ref2.resolves,
53
+ isMajor = _ref2.isMajor;
54
+ return (action === 'review' || isMajor) && affectsProd(resolves);
55
+ });
56
+ var reviewAdvisories = reviewActions.reduce(function (acc, _ref3) {
57
+ var resolves = _ref3.resolves;
58
+ var advisoriesToInclude = resolves.reduce(function (result, _ref4) {
59
+ var id = _ref4.id;
60
+ return Object.assign({}, result, _defineProperty({}, id, advisories[id]));
61
+ }, {});
62
+ return Object.assign({}, acc, advisoriesToInclude);
63
+ }, {});
64
+ return Object.assign({}, auditResult, {
65
+ actions: reviewActions,
66
+ advisories: reviewAdvisories
67
+ });
68
+ }
69
+
70
+ function getHighestSeverity(_ref5) {
71
+ var advisories = _ref5.advisories;
72
+
73
+ var _loop = function _loop() {
74
+ var severity = _arr[_i];
75
+
76
+ if (Object.keys(advisories).find(function (key) {
77
+ return advisories[key].severity === severity;
78
+ })) {
79
+ return {
80
+ v: severity
81
+ };
82
+ }
83
+ };
84
+
85
+ for (var _i = 0, _arr = ['critical', 'high', 'moderate', 'low']; _i < _arr.length; _i++) {
86
+ var _ret = _loop();
87
+
88
+ if (_typeof(_ret) === "object") return _ret.v;
89
+ }
90
+ }
91
+
92
+ function filterAuditResultsBySeverity(auditResult, highestSeverity) {
93
+ var actions = auditResult.actions,
94
+ advisories = auditResult.advisories;
95
+ var groupedAdvisories = groupBy(advisories, 'severity');
96
+ var advisoriesForSeverity = keyBy(groupedAdvisories[highestSeverity], 'id');
97
+ var actionsForSeverity = actions.reduce(function (acc, action) {
98
+ var resolvesSevereAdvisory = action.resolves.some(function (_ref6) {
99
+ var id = _ref6.id;
100
+ return advisoriesForSeverity[id];
101
+ });
102
+ return resolvesSevereAdvisory ? [].concat(acc, action) : acc;
103
+ }, []);
104
+ return Object.assign({}, auditResult, {
105
+ actions: actionsForSeverity,
106
+ advisories: advisories
107
+ });
108
+ }
109
+
110
+ function getAutoFixCount(auditResult) {
111
+ return auditResult.actions.filter(function (_ref7) {
112
+ var action = _ref7.action,
113
+ resolves = _ref7.resolves,
114
+ isMajor = _ref7.isMajor;
115
+ return action !== 'review' && !isMajor && affectsProd(resolves);
116
+ }).length;
117
+ }
118
+
119
+ function findRootLibs(resolves) {
120
+ return resolves.reduce(function (acc, resolve) {
121
+ return [].concat(acc, resolve.path.split('>')[0]);
122
+ }, []);
123
+ }
124
+
125
+ function getMostProblematicDependency(_ref8) {
126
+ var actions = _ref8.actions;
127
+ var rootLibraries = actions.reduce(function (libs, _ref9) {
128
+ var resolves = _ref9.resolves;
129
+ return [].concat(libs, findRootLibs(resolves));
130
+ }, []);
131
+ return first(orderBy(map(countBy(rootLibraries), function (count, lib) {
132
+ return {
133
+ count: count,
134
+ name: lib
135
+ };
136
+ }), function (_ref10) {
137
+ var count = _ref10.count;
138
+ return count;
139
+ }, ['desc']));
140
+ }
141
+
142
+ return function help(npmAuditResultJson) {
143
+ var npmAuditResult = JSON.parse(npmAuditResultJson);
144
+ var resultsThatRequireAttention = requireAttention(npmAuditResult);
145
+ var highestSeverity = getHighestSeverity(resultsThatRequireAttention);
146
+ var auditResult = filterAuditResultsBySeverity(resultsThatRequireAttention, highestSeverity);
147
+ var autoFixCount = getAutoFixCount(npmAuditResult);
148
+ var exitCode = config['exit-zero'] || !auditResult.actions.length && !autoFixCount ? 0 : 1;
149
+ return {
150
+ npmAuditResult: npmAuditResult,
151
+ auditResult: auditResult,
152
+ autoFixCount: autoFixCount,
153
+ mostProblematicDependency: getMostProblematicDependency(resultsThatRequireAttention),
154
+ highestSeverity: highestSeverity,
155
+ exitCode: exitCode
156
+ };
157
+ };
158
+ };
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ require("core-js/modules/es6.object.assign");
5
+
6
+ var getStdin = require('get-stdin');
7
+
8
+ var options = require('minimist')(process.argv.slice(2));
9
+
10
+ var help = require('./help');
11
+
12
+ var report = require('./report');
13
+
14
+ var defaults = {
15
+ 'exit-zero': false,
16
+ 'prod-only': false
17
+ };
18
+ var config = Object.assign({}, defaults, options);
19
+ getStdin().then(help(config)).then(function (result) {
20
+ return report(result).then(function (theReport) {
21
+ console.log(theReport);
22
+ process.exit(result.exitCode);
23
+ });
24
+ }).catch(function (error) {
25
+ console.error(error);
26
+ process.exit(1);
27
+ });
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es6.promise");
4
+
5
+ require("regenerator-runtime/runtime");
6
+
7
+ require("core-js/modules/web.dom.iterable");
8
+
9
+ require("core-js/modules/es6.array.iterator");
10
+
11
+ require("core-js/modules/es6.object.to-string");
12
+
13
+ require("core-js/modules/es6.object.keys");
14
+
15
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16
+
17
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
18
+
19
+ var auditReport = require('npm-audit-report');
20
+
21
+ var chalk = require('chalk');
22
+
23
+ function automaticFixes(autoFixCount) {
24
+ return autoFixCount ? "run ".concat(chalk.yellow('`npm audit fix`'), " to automatically fix ").concat(chalk.yellow(autoFixCount), " issues. These should all be non-breaking upgrades, so don't stress.") : '';
25
+ }
26
+
27
+ function fixesToReview(_ref, highestSeverity) {
28
+ var actions = _ref.actions,
29
+ advisories = _ref.advisories;
30
+ var advisoryIds = Object.keys(advisories);
31
+
32
+ if (!actions.length || !advisoryIds.length) {
33
+ return '';
34
+ }
35
+
36
+ return "Resolve the ".concat(chalk.green(actions.length), " ").concat(chalk.green(highestSeverity), " severity issues above and run this command again to move to the next severity.");
37
+ }
38
+
39
+ function mostProblematic(mostProblematicDependency) {
40
+ if (!mostProblematicDependency) {
41
+ return '';
42
+ }
43
+
44
+ var name = mostProblematicDependency.name,
45
+ count = mostProblematicDependency.count;
46
+ return count && count > 2 ? "The most problematic dependency seems to be ".concat(chalk.blue(name), " with ").concat(chalk.blue(count), " issue").concat(count ? 's' : '', " that need your attention.") : '';
47
+ }
48
+
49
+ module.exports =
50
+ /*#__PURE__*/
51
+ function () {
52
+ var _printFullReport = _asyncToGenerator(
53
+ /*#__PURE__*/
54
+ regeneratorRuntime.mark(function _callee(_ref2) {
55
+ var npmAuditResult, auditResult, autoFixCount, mostProblematicDependency, highestSeverity, _ref3, report, hints, help;
56
+
57
+ return regeneratorRuntime.wrap(function _callee$(_context) {
58
+ while (1) {
59
+ switch (_context.prev = _context.next) {
60
+ case 0:
61
+ npmAuditResult = _ref2.npmAuditResult, auditResult = _ref2.auditResult, autoFixCount = _ref2.autoFixCount, mostProblematicDependency = _ref2.mostProblematicDependency, highestSeverity = _ref2.highestSeverity;
62
+ _context.next = 3;
63
+ return auditReport(npmAuditResult, {
64
+ reporter: 'install',
65
+ withColor: true,
66
+ withUnicode: true
67
+ });
68
+
69
+ case 3:
70
+ _ref3 = _context.sent;
71
+ report = _ref3.report;
72
+ hints = [].concat(automaticFixes(autoFixCount)).concat(fixesToReview(auditResult, highestSeverity)).concat(mostProblematic(mostProblematicDependency)).filter(Boolean);
73
+ help = hints.length ? "\n\n".concat(chalk.green('=== A little bit of help ==='), "\n\nWhere to start:\n").concat(hints.reduce(function (acc, hint) {
74
+ return "".concat(acc, "\n- ").concat(hint, "\n");
75
+ }, ''), "\n") : '';
76
+ return _context.abrupt("return", "".concat(report).concat(help));
77
+
78
+ case 8:
79
+ case "end":
80
+ return _context.stop();
81
+ }
82
+ }
83
+ }, _callee);
84
+ }));
85
+
86
+ function printFullReport(_x) {
87
+ return _printFullReport.apply(this, arguments);
88
+ }
89
+
90
+ return printFullReport;
91
+ }();
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es7.symbol.async-iterator");
4
+
5
+ require("core-js/modules/es6.symbol");
6
+
7
+ require("core-js/modules/web.dom.iterable");
8
+
9
+ require("core-js/modules/es6.promise");
10
+
11
+ require("core-js/modules/es6.regexp.to-string");
12
+
13
+ require("core-js/modules/es6.object.to-string");
14
+
15
+ require("regenerator-runtime/runtime");
16
+
17
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
18
+
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
20
+
21
+ function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
22
+
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
+
25
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
26
+
27
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
28
+
29
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30
+
31
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
32
+
33
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
34
+
35
+ var ora = require('ora');
36
+
37
+ var fs = require('fs');
38
+
39
+ var path = require('path');
40
+
41
+ var _require = require('util'),
42
+ promisify = _require.promisify;
43
+
44
+ var CloudflareAPI =
45
+ /*#__PURE__*/
46
+ function () {
47
+ function CloudflareAPI(options) {
48
+ _classCallCheck(this, CloudflareAPI);
49
+
50
+ var args = options.args;
51
+ var url = args.url,
52
+ proxy = args.proxy,
53
+ ipaddress = args.ipaddress,
54
+ account = args.account;
55
+ this.url = url;
56
+ this.proxy = proxy;
57
+ this.ipaddress = ipaddress;
58
+ this.spinner = ora({
59
+ text: 'Creating DNS record...',
60
+ spinner: 'monkey'
61
+ });
62
+ this.account = account;
63
+ }
64
+
65
+ _createClass(CloudflareAPI, [{
66
+ key: "decrypt",
67
+ value: function () {
68
+ var _decrypt = _asyncToGenerator(
69
+ /*#__PURE__*/
70
+ regeneratorRuntime.mark(function _callee() {
71
+ var projectId,
72
+ keyRingId,
73
+ cryptoKeyId,
74
+ ciphertextFileName,
75
+ plaintextFileName,
76
+ kms,
77
+ client,
78
+ locationId,
79
+ readFile,
80
+ contentsBuffer,
81
+ name,
82
+ ciphertext,
83
+ _ref,
84
+ _ref2,
85
+ result,
86
+ writeFile,
87
+ _args = arguments;
88
+
89
+ return regeneratorRuntime.wrap(function _callee$(_context) {
90
+ while (1) {
91
+ switch (_context.prev = _context.next) {
92
+ case 0:
93
+ projectId = _args.length > 0 && _args[0] !== undefined ? _args[0] : 'leverege-docker-images';
94
+ keyRingId = _args.length > 1 && _args[1] !== undefined ? _args[1] : 'build-tools';
95
+ cryptoKeyId = _args.length > 2 && _args[2] !== undefined ? _args[2] : 'circle-ci';
96
+ ciphertextFileName = _args.length > 3 && _args[3] !== undefined ? _args[3] : './accounts.json.enc';
97
+ plaintextFileName = _args.length > 4 && _args[4] !== undefined ? _args[4] : './accounts.json';
98
+ // Import the library and create a client
99
+ kms = require('@google-cloud/kms');
100
+ client = new kms.KeyManagementServiceClient(); // The location of the crypto key's key ring, e.g. "global"
101
+
102
+ locationId = 'us-east4'; // Reads the file to be decrypted
103
+
104
+ readFile = promisify(fs.readFile);
105
+ _context.next = 11;
106
+ return readFile(path.resolve(__dirname, ciphertextFileName));
107
+
108
+ case 11:
109
+ contentsBuffer = _context.sent;
110
+ name = client.cryptoKeyPath(projectId, locationId, keyRingId, cryptoKeyId);
111
+ ciphertext = contentsBuffer.toString('base64'); // Decrypts the file using the specified crypto key
112
+
113
+ _context.next = 16;
114
+ return client.decrypt({
115
+ name: name,
116
+ ciphertext: ciphertext
117
+ });
118
+
119
+ case 16:
120
+ _ref = _context.sent;
121
+ _ref2 = _slicedToArray(_ref, 1);
122
+ result = _ref2[0];
123
+ // Writes the decrypted file to disk
124
+ writeFile = promisify(fs.writeFile);
125
+ _context.next = 22;
126
+ return writeFile(path.resolve(__dirname, plaintextFileName), Buffer.from(result.plaintext, 'base64'));
127
+
128
+ case 22:
129
+ case "end":
130
+ return _context.stop();
131
+ }
132
+ }
133
+ }, _callee);
134
+ }));
135
+
136
+ function decrypt() {
137
+ return _decrypt.apply(this, arguments);
138
+ }
139
+
140
+ return decrypt;
141
+ }()
142
+ }, {
143
+ key: "setAccountValues",
144
+ value: function setAccountValues() {
145
+ var accountJson = require(path.resolve(__dirname, './accounts.json'));
146
+
147
+ var accountInfo = accountJson[this.account];
148
+ var email = accountInfo.email,
149
+ key = accountInfo.key,
150
+ zone = accountInfo.zone;
151
+ this.cf = require('cloudflare')({
152
+ email: email,
153
+ key: key
154
+ });
155
+ this.zone = zone;
156
+ }
157
+ }, {
158
+ key: "deleteSecrets",
159
+ value: function () {
160
+ var _deleteSecrets = _asyncToGenerator(
161
+ /*#__PURE__*/
162
+ regeneratorRuntime.mark(function _callee2() {
163
+ var deleteFile;
164
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
165
+ while (1) {
166
+ switch (_context2.prev = _context2.next) {
167
+ case 0:
168
+ deleteFile = promisify(fs.unlink);
169
+ _context2.next = 3;
170
+ return deleteFile(path.resolve(__dirname, './accounts.json'));
171
+
172
+ case 3:
173
+ case "end":
174
+ return _context2.stop();
175
+ }
176
+ }
177
+ }, _callee2);
178
+ }));
179
+
180
+ function deleteSecrets() {
181
+ return _deleteSecrets.apply(this, arguments);
182
+ }
183
+
184
+ return deleteSecrets;
185
+ }()
186
+ }, {
187
+ key: "createDNSRecord",
188
+ value: function () {
189
+ var _createDNSRecord = _asyncToGenerator(
190
+ /*#__PURE__*/
191
+ regeneratorRuntime.mark(function _callee3() {
192
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
193
+ while (1) {
194
+ switch (_context3.prev = _context3.next) {
195
+ case 0:
196
+ _context3.prev = 0;
197
+ this.spinner.start();
198
+ this.spinner.text = 'Decrypting Cloudflare secrets...';
199
+ _context3.next = 5;
200
+ return this.decrypt();
201
+
202
+ case 5:
203
+ this.spinner.text = 'Initializing Cloudflare API...';
204
+ this.setAccountValues();
205
+ this.spinner.text = 'Adding A name record...';
206
+ _context3.next = 10;
207
+ return this.cf.dnsRecords.add(this.zone, {
208
+ type: 'A',
209
+ name: this.url,
210
+ content: this.ipaddress,
211
+ proxied: this.proxy
212
+ });
213
+
214
+ case 10:
215
+ this.spinner.text = 'Removing secrets...';
216
+ _context3.next = 13;
217
+ return this.deleteSecrets();
218
+
219
+ case 13:
220
+ this.spinner.stop();
221
+ _context3.next = 21;
222
+ break;
223
+
224
+ case 16:
225
+ _context3.prev = 16;
226
+ _context3.t0 = _context3["catch"](0);
227
+ this.spinner.stop();
228
+ console.log(_context3.t0);
229
+ throw _context3.t0;
230
+
231
+ case 21:
232
+ case "end":
233
+ return _context3.stop();
234
+ }
235
+ }
236
+ }, _callee3, this, [[0, 16]]);
237
+ }));
238
+
239
+ function createDNSRecord() {
240
+ return _createDNSRecord.apply(this, arguments);
241
+ }
242
+
243
+ return createDNSRecord;
244
+ }()
245
+ }]);
246
+
247
+ return CloudflareAPI;
248
+ }();
249
+
250
+ module.exports = CloudflareAPI;