@jcoreio/aws-ecr-utils 1.0.0

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.
package/tagECRImage.js ADDED
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = tagECRImage;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _awsSdk = _interopRequireDefault(require("aws-sdk"));
17
+
18
+ var _parseECRImageUri2 = _interopRequireDefault(require("./parseECRImageUri"));
19
+
20
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
21
+
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+
24
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
+
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
+
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
29
+
30
+ function tagECRImage(_x) {
31
+ return _tagECRImage.apply(this, arguments);
32
+ }
33
+
34
+ function _tagECRImage() {
35
+ _tagECRImage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
36
+ var ecr, awsConfig, imageUri, tags, _parseECRImageUri, region, repositoryName, imageTag, imageManifest, _iterator, _step, tag;
37
+
38
+ return _regenerator["default"].wrap(function _callee$(_context) {
39
+ while (1) {
40
+ switch (_context.prev = _context.next) {
41
+ case 0:
42
+ ecr = _ref.ecr, awsConfig = _ref.awsConfig, imageUri = _ref.imageUri, tags = _ref.tags;
43
+ _parseECRImageUri = (0, _parseECRImageUri2["default"])(imageUri), region = _parseECRImageUri.region, repositoryName = _parseECRImageUri.repositoryName, imageTag = _parseECRImageUri.imageTag;
44
+ if (!ecr) ecr = new _awsSdk["default"].ECR(_objectSpread(_objectSpread({}, awsConfig), {}, {
45
+ region: region
46
+ }));
47
+ _context.next = 5;
48
+ return ecr.batchGetImage({
49
+ repositoryName: repositoryName,
50
+ imageIds: [{
51
+ imageTag: imageTag
52
+ }]
53
+ }).promise().then(function (r) {
54
+ var _r$images, _r$images$;
55
+
56
+ return r === null || r === void 0 ? void 0 : (_r$images = r.images) === null || _r$images === void 0 ? void 0 : (_r$images$ = _r$images[0]) === null || _r$images$ === void 0 ? void 0 : _r$images$.imageManifest;
57
+ });
58
+
59
+ case 5:
60
+ imageManifest = _context.sent;
61
+
62
+ if (imageManifest) {
63
+ _context.next = 8;
64
+ break;
65
+ }
66
+
67
+ throw new Error("failed to get image manifest for ".concat(imageUri));
68
+
69
+ case 8:
70
+ if (!imageManifest) {
71
+ _context.next = 34;
72
+ break;
73
+ }
74
+
75
+ // add other tags to ECR
76
+ _iterator = _createForOfIteratorHelper(tags);
77
+ _context.prev = 10;
78
+
79
+ _iterator.s();
80
+
81
+ case 12:
82
+ if ((_step = _iterator.n()).done) {
83
+ _context.next = 26;
84
+ break;
85
+ }
86
+
87
+ tag = _step.value;
88
+ // eslint-disable-next-line no-console
89
+ console.error("Adding tag ".concat(repositoryName, ":").concat(tag));
90
+ _context.prev = 15;
91
+ _context.next = 18;
92
+ return ecr.putImage({
93
+ repositoryName: repositoryName,
94
+ imageManifest: imageManifest,
95
+ imageTag: tag.substring(tag.indexOf(':') + 1)
96
+ }).promise();
97
+
98
+ case 18:
99
+ _context.next = 24;
100
+ break;
101
+
102
+ case 20:
103
+ _context.prev = 20;
104
+ _context.t0 = _context["catch"](15);
105
+
106
+ if (!((_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.code) !== 'ImageAlreadyExistsException')) {
107
+ _context.next = 24;
108
+ break;
109
+ }
110
+
111
+ throw _context.t0;
112
+
113
+ case 24:
114
+ _context.next = 12;
115
+ break;
116
+
117
+ case 26:
118
+ _context.next = 31;
119
+ break;
120
+
121
+ case 28:
122
+ _context.prev = 28;
123
+ _context.t1 = _context["catch"](10);
124
+
125
+ _iterator.e(_context.t1);
126
+
127
+ case 31:
128
+ _context.prev = 31;
129
+
130
+ _iterator.f();
131
+
132
+ return _context.finish(31);
133
+
134
+ case 34:
135
+ case "end":
136
+ return _context.stop();
137
+ }
138
+ }
139
+ }, _callee, null, [[10, 28, 31, 34], [15, 20]]);
140
+ }));
141
+ return _tagECRImage.apply(this, arguments);
142
+ }
@@ -0,0 +1,8 @@
1
+ // @flow
2
+
3
+ declare export default function tagECRImage(options: {|
4
+ ecr?: any,
5
+ awsConfig?: { ... },
6
+ imageUri: string,
7
+ tags: string[],
8
+ |}): Promise<void>