@jcoreio/aws-ecr-utils 1.1.1 → 1.2.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/checkECRRepositoryPolicy.d.ts +20 -0
- package/checkECRRepositoryPolicy.js +132 -0
- package/checkECRRepositoryPolicy.mjs +100 -0
- package/copyECRImage.js +79 -104
- package/copyECRImage.mjs +67 -0
- package/ecrImageExists.js +51 -74
- package/ecrImageExists.mjs +31 -0
- package/index.d.ts +2 -0
- package/index.js +20 -13
- package/index.mjs +8 -0
- package/loginToECR.js +44 -65
- package/loginToECR.mjs +38 -0
- package/package.json +25 -104
- package/parseECRImageUri.d.ts +3 -2
- package/parseECRImageUri.js +6 -10
- package/parseECRImageUri.mjs +11 -0
- package/parseECRRepositoryHostname.d.ts +6 -0
- package/parseECRRepositoryHostname.js +22 -0
- package/parseECRRepositoryHostname.mjs +10 -0
- package/tagECRImage.js +81 -115
- package/tagECRImage.mjs +50 -0
- package/upsertECRRepository.js +45 -64
- package/upsertECRRepository.mjs +33 -0
- package/es/copyECRImage.d.ts +0 -13
- package/es/copyECRImage.js +0 -76
- package/es/ecrImageExists.d.ts +0 -9
- package/es/ecrImageExists.js +0 -45
- package/es/index.d.ts +0 -6
- package/es/index.js +0 -56
- package/es/loginToECR.d.ts +0 -8
- package/es/loginToECR.js +0 -56
- package/es/parseECRImageUri.d.ts +0 -6
- package/es/parseECRImageUri.js +0 -19
- package/es/tagECRImage.d.ts +0 -10
- package/es/tagECRImage.js +0 -65
- package/es/upsertECRRepository.d.ts +0 -6
- package/es/upsertECRRepository.js +0 -45
- /package/{es/copyECRImage.js.flow → copyECRImage.mjs.flow} +0 -0
- /package/{es/ecrImageExists.js.flow → ecrImageExists.mjs.flow} +0 -0
- /package/{es/index.js.flow → index.mjs.flow} +0 -0
- /package/{es/loginToECR.js.flow → loginToECR.mjs.flow} +0 -0
- /package/{es/parseECRImageUri.js.flow → parseECRImageUri.mjs.flow} +0 -0
- /package/{es/tagECRImage.js.flow → tagECRImage.mjs.flow} +0 -0
- /package/{es/upsertECRRepository.js.flow → upsertECRRepository.mjs.flow} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = parseECRRepositoryHostname;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
function parseECRRepositoryHostname(hostname) {
|
|
10
|
+
var match = /^([^.]+)\.dkr\.ecr\.([^.]+)\.amazonaws\.com\/([^:]+)/.exec(hostname);
|
|
11
|
+
if (!match) throw new Error("invalid ECR repository hostname: ".concat(hostname));
|
|
12
|
+
var _match = (0, _slicedToArray2["default"])(match, 4),
|
|
13
|
+
registryId = _match[1],
|
|
14
|
+
region = _match[2],
|
|
15
|
+
repositoryName = _match[3];
|
|
16
|
+
return {
|
|
17
|
+
registryId: registryId,
|
|
18
|
+
region: region,
|
|
19
|
+
repositoryName: repositoryName
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
module.exports = exports.default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default function parseECRRepositoryHostname(hostname) {
|
|
2
|
+
const match = /^([^.]+)\.dkr\.ecr\.([^.]+)\.amazonaws\.com\/([^:]+)/.exec(hostname);
|
|
3
|
+
if (!match) throw new Error(`invalid ECR repository hostname: ${hostname}`);
|
|
4
|
+
const [, registryId, region, repositoryName] = match;
|
|
5
|
+
return {
|
|
6
|
+
registryId,
|
|
7
|
+
region,
|
|
8
|
+
repositoryName
|
|
9
|
+
};
|
|
10
|
+
}
|
package/tagECRImage.js
CHANGED
|
@@ -1,142 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = tagECRImage;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
-
|
|
16
11
|
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
17
|
-
|
|
18
|
-
var _parseECRImageUri2 = _interopRequireDefault(require("./parseECRImageUri"));
|
|
19
|
-
|
|
12
|
+
var _parseECRImageUri2 = _interopRequireDefault(require("./parseECRImageUri.js"));
|
|
20
13
|
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
14
|
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
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
15
|
+
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; }
|
|
16
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
|
|
18
|
+
* @prettier
|
|
19
|
+
*/
|
|
30
20
|
function tagECRImage(_x) {
|
|
31
21
|
return _tagECRImage.apply(this, arguments);
|
|
32
22
|
}
|
|
33
|
-
|
|
34
23
|
function _tagECRImage() {
|
|
35
24
|
_tagECRImage = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
|
|
36
25
|
var ecr, awsConfig, imageUri, tags, _parseECRImageUri, region, repositoryName, imageTag, imageManifest, _iterator, _step, tag;
|
|
37
|
-
|
|
38
26
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
39
|
-
while (1) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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;
|
|
27
|
+
while (1) switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
ecr = _ref.ecr, awsConfig = _ref.awsConfig, imageUri = _ref.imageUri, tags = _ref.tags;
|
|
30
|
+
_parseECRImageUri = (0, _parseECRImageUri2["default"])(imageUri), region = _parseECRImageUri.region, repositoryName = _parseECRImageUri.repositoryName, imageTag = _parseECRImageUri.imageTag;
|
|
31
|
+
if (!ecr) ecr = new _awsSdk["default"].ECR(_objectSpread(_objectSpread({}, awsConfig), {}, {
|
|
32
|
+
region: region
|
|
33
|
+
}));
|
|
34
|
+
_context.next = 5;
|
|
35
|
+
return ecr.batchGetImage({
|
|
36
|
+
repositoryName: repositoryName,
|
|
37
|
+
imageIds: [{
|
|
38
|
+
imageTag: imageTag
|
|
39
|
+
}]
|
|
40
|
+
}).promise().then(function (r) {
|
|
41
|
+
var _r$images;
|
|
42
|
+
return r === null || r === void 0 || (_r$images = r.images) === null || _r$images === void 0 || (_r$images = _r$images[0]) === null || _r$images === void 0 ? void 0 : _r$images.imageManifest;
|
|
43
|
+
});
|
|
44
|
+
case 5:
|
|
45
|
+
imageManifest = _context.sent;
|
|
46
|
+
if (imageManifest) {
|
|
47
|
+
_context.next = 8;
|
|
100
48
|
break;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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;
|
|
49
|
+
}
|
|
50
|
+
throw new Error("failed to get image manifest for ".concat(imageUri));
|
|
51
|
+
case 8:
|
|
52
|
+
if (!imageManifest) {
|
|
53
|
+
_context.next = 34;
|
|
115
54
|
break;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
55
|
+
}
|
|
56
|
+
// add other tags to ECR
|
|
57
|
+
_iterator = _createForOfIteratorHelper(tags);
|
|
58
|
+
_context.prev = 10;
|
|
59
|
+
_iterator.s();
|
|
60
|
+
case 12:
|
|
61
|
+
if ((_step = _iterator.n()).done) {
|
|
62
|
+
_context.next = 26;
|
|
119
63
|
break;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
64
|
+
}
|
|
65
|
+
tag = _step.value;
|
|
66
|
+
// eslint-disable-next-line no-console
|
|
67
|
+
console.error("Adding tag ".concat(repositoryName, ":").concat(tag));
|
|
68
|
+
_context.prev = 15;
|
|
69
|
+
_context.next = 18;
|
|
70
|
+
return ecr.putImage({
|
|
71
|
+
repositoryName: repositoryName,
|
|
72
|
+
imageManifest: imageManifest,
|
|
73
|
+
imageTag: tag.substring(tag.indexOf(':') + 1)
|
|
74
|
+
}).promise();
|
|
75
|
+
case 18:
|
|
76
|
+
_context.next = 24;
|
|
77
|
+
break;
|
|
78
|
+
case 20:
|
|
79
|
+
_context.prev = 20;
|
|
80
|
+
_context.t0 = _context["catch"](15);
|
|
81
|
+
if (!((_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.code) !== 'ImageAlreadyExistsException')) {
|
|
82
|
+
_context.next = 24;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
throw _context.t0;
|
|
86
|
+
case 24:
|
|
87
|
+
_context.next = 12;
|
|
88
|
+
break;
|
|
89
|
+
case 26:
|
|
90
|
+
_context.next = 31;
|
|
91
|
+
break;
|
|
92
|
+
case 28:
|
|
93
|
+
_context.prev = 28;
|
|
94
|
+
_context.t1 = _context["catch"](10);
|
|
95
|
+
_iterator.e(_context.t1);
|
|
96
|
+
case 31:
|
|
97
|
+
_context.prev = 31;
|
|
98
|
+
_iterator.f();
|
|
99
|
+
return _context.finish(31);
|
|
100
|
+
case 34:
|
|
101
|
+
case "end":
|
|
102
|
+
return _context.stop();
|
|
138
103
|
}
|
|
139
104
|
}, _callee, null, [[10, 28, 31, 34], [15, 20]]);
|
|
140
105
|
}));
|
|
141
106
|
return _tagECRImage.apply(this, arguments);
|
|
142
|
-
}
|
|
107
|
+
}
|
|
108
|
+
module.exports = exports.default;
|
package/tagECRImage.mjs
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prettier
|
|
3
|
+
*/
|
|
4
|
+
import AWS from 'aws-sdk';
|
|
5
|
+
import parseECRImageUri from "./parseECRImageUri.mjs";
|
|
6
|
+
export default async function tagECRImage({
|
|
7
|
+
ecr,
|
|
8
|
+
awsConfig,
|
|
9
|
+
imageUri,
|
|
10
|
+
tags
|
|
11
|
+
}) {
|
|
12
|
+
const {
|
|
13
|
+
region,
|
|
14
|
+
repositoryName,
|
|
15
|
+
imageTag
|
|
16
|
+
} = parseECRImageUri(imageUri);
|
|
17
|
+
if (!ecr) ecr = new AWS.ECR({
|
|
18
|
+
...awsConfig,
|
|
19
|
+
region
|
|
20
|
+
});
|
|
21
|
+
const imageManifest = await ecr.batchGetImage({
|
|
22
|
+
repositoryName,
|
|
23
|
+
imageIds: [{
|
|
24
|
+
imageTag
|
|
25
|
+
}]
|
|
26
|
+
}).promise().then(r => {
|
|
27
|
+
var _r$images;
|
|
28
|
+
return r === null || r === void 0 || (_r$images = r.images) === null || _r$images === void 0 || (_r$images = _r$images[0]) === null || _r$images === void 0 ? void 0 : _r$images.imageManifest;
|
|
29
|
+
});
|
|
30
|
+
if (!imageManifest) {
|
|
31
|
+
throw new Error(`failed to get image manifest for ${imageUri}`);
|
|
32
|
+
}
|
|
33
|
+
if (imageManifest) {
|
|
34
|
+
// add other tags to ECR
|
|
35
|
+
for (const tag of tags) {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.error(`Adding tag ${repositoryName}:${tag}`);
|
|
38
|
+
try {
|
|
39
|
+
await ecr.putImage({
|
|
40
|
+
repositoryName,
|
|
41
|
+
imageManifest,
|
|
42
|
+
imageTag: tag.substring(tag.indexOf(':') + 1)
|
|
43
|
+
}).promise();
|
|
44
|
+
} catch (error) {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
if ((error === null || error === void 0 ? void 0 : error.code) !== 'ImageAlreadyExistsException') throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/upsertECRRepository.js
CHANGED
|
@@ -1,87 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = upsertECRRepository;
|
|
9
|
-
|
|
10
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
10
|
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
15
|
-
|
|
16
11
|
// @flow
|
|
17
12
|
function upsertECRRepository(_x) {
|
|
18
13
|
return _upsertECRRepository.apply(this, arguments);
|
|
19
14
|
}
|
|
20
|
-
|
|
21
15
|
function _upsertECRRepository() {
|
|
22
16
|
_upsertECRRepository = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
|
|
23
17
|
var ecr, awsConfig, repositoryName, _yield$ecr$describeRe, repositories, _repository, _yield$ecr$createRepo, repository;
|
|
24
|
-
|
|
25
18
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
26
|
-
while (1) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!_repository) {
|
|
43
|
-
_context.next = 10;
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return _context.abrupt("return", _repository);
|
|
48
|
-
|
|
49
|
-
case 10:
|
|
50
|
-
_context.next = 14;
|
|
19
|
+
while (1) switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
ecr = _ref.ecr, awsConfig = _ref.awsConfig, repositoryName = _ref.repositoryName;
|
|
22
|
+
if (!ecr) ecr = new _awsSdk["default"].ECR(awsConfig);
|
|
23
|
+
_context.prev = 2;
|
|
24
|
+
_context.next = 5;
|
|
25
|
+
return ecr.describeRepositories({
|
|
26
|
+
repositoryNames: [repositoryName]
|
|
27
|
+
}).promise();
|
|
28
|
+
case 5:
|
|
29
|
+
_yield$ecr$describeRe = _context.sent;
|
|
30
|
+
repositories = _yield$ecr$describeRe.repositories;
|
|
31
|
+
_repository = repositories === null || repositories === void 0 ? void 0 : repositories[0];
|
|
32
|
+
if (!_repository) {
|
|
33
|
+
_context.next = 10;
|
|
51
34
|
break;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
case "end":
|
|
81
|
-
return _context.stop();
|
|
82
|
-
}
|
|
35
|
+
}
|
|
36
|
+
return _context.abrupt("return", _repository);
|
|
37
|
+
case 10:
|
|
38
|
+
_context.next = 14;
|
|
39
|
+
break;
|
|
40
|
+
case 12:
|
|
41
|
+
_context.prev = 12;
|
|
42
|
+
_context.t0 = _context["catch"](2);
|
|
43
|
+
case 14:
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.error("Creating ECR repository {bold ".concat(repositoryName, "}..."));
|
|
46
|
+
_context.next = 17;
|
|
47
|
+
return ecr.createRepository({
|
|
48
|
+
repositoryName: repositoryName
|
|
49
|
+
}).promise();
|
|
50
|
+
case 17:
|
|
51
|
+
_yield$ecr$createRepo = _context.sent;
|
|
52
|
+
repository = _yield$ecr$createRepo.repository;
|
|
53
|
+
if (repository) {
|
|
54
|
+
_context.next = 21;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
throw new Error("repository is missing from createRepository response");
|
|
58
|
+
case 21:
|
|
59
|
+
return _context.abrupt("return", repository);
|
|
60
|
+
case 22:
|
|
61
|
+
case "end":
|
|
62
|
+
return _context.stop();
|
|
83
63
|
}
|
|
84
64
|
}, _callee, null, [[2, 12]]);
|
|
85
65
|
}));
|
|
86
66
|
return _upsertECRRepository.apply(this, arguments);
|
|
87
|
-
}
|
|
67
|
+
}
|
|
68
|
+
module.exports = exports.default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import AWS from 'aws-sdk';
|
|
4
|
+
export default async function upsertECRRepository({
|
|
5
|
+
ecr,
|
|
6
|
+
awsConfig,
|
|
7
|
+
repositoryName
|
|
8
|
+
}) {
|
|
9
|
+
if (!ecr) ecr = new AWS.ECR(awsConfig);
|
|
10
|
+
try {
|
|
11
|
+
const {
|
|
12
|
+
repositories
|
|
13
|
+
} = await ecr.describeRepositories({
|
|
14
|
+
repositoryNames: [repositoryName]
|
|
15
|
+
}).promise();
|
|
16
|
+
const repository = repositories === null || repositories === void 0 ? void 0 : repositories[0];
|
|
17
|
+
if (repository) return repository;
|
|
18
|
+
} catch (error) {
|
|
19
|
+
// ignore
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.error(`Creating ECR repository {bold ${repositoryName}}...`);
|
|
24
|
+
const {
|
|
25
|
+
repository
|
|
26
|
+
} = await ecr.createRepository({
|
|
27
|
+
repositoryName
|
|
28
|
+
}).promise();
|
|
29
|
+
if (!repository) {
|
|
30
|
+
throw new Error(`repository is missing from createRepository response`);
|
|
31
|
+
}
|
|
32
|
+
return repository;
|
|
33
|
+
}
|
package/es/copyECRImage.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import AWS from 'aws-sdk';
|
|
2
|
-
export default function copyECRImage({ from, to, }: {
|
|
3
|
-
from: {
|
|
4
|
-
imageUri: string;
|
|
5
|
-
ecr?: AWS.ECR;
|
|
6
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
7
|
-
};
|
|
8
|
-
to: {
|
|
9
|
-
imageUri: string;
|
|
10
|
-
ecr?: AWS.ECR;
|
|
11
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
12
|
-
};
|
|
13
|
-
}): Promise<void>;
|
package/es/copyECRImage.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = copyECRImage;
|
|
7
|
-
|
|
8
|
-
var _promisifyChildProcess = require("promisify-child-process");
|
|
9
|
-
|
|
10
|
-
var _loginToECR = _interopRequireDefault(require("./loginToECR"));
|
|
11
|
-
|
|
12
|
-
var _ecrImageExists = _interopRequireDefault(require("./ecrImageExists"));
|
|
13
|
-
|
|
14
|
-
var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
async function copyECRImage({
|
|
19
|
-
from,
|
|
20
|
-
to
|
|
21
|
-
}) {
|
|
22
|
-
if (from.imageUri === to.imageUri) return;
|
|
23
|
-
const srcRepositoryUri = from.imageUri.replace(/:.+/, '');
|
|
24
|
-
const repositoryUri = to.imageUri.replace(/:.+/, '');
|
|
25
|
-
const {
|
|
26
|
-
region: fromRegion
|
|
27
|
-
} = (0, _parseECRImageUri.default)(from.imageUri);
|
|
28
|
-
const {
|
|
29
|
-
region: toRegion,
|
|
30
|
-
repositoryName,
|
|
31
|
-
imageTag
|
|
32
|
-
} = (0, _parseECRImageUri.default)(to.imageUri);
|
|
33
|
-
|
|
34
|
-
if (await (0, _ecrImageExists.default)({
|
|
35
|
-
awsConfig: { ...to.awsConfig,
|
|
36
|
-
region: toRegion
|
|
37
|
-
},
|
|
38
|
-
ecr: to.ecr,
|
|
39
|
-
repositoryName,
|
|
40
|
-
imageTag
|
|
41
|
-
})) {
|
|
42
|
-
// eslint-disable-next-line no-console
|
|
43
|
-
console.error(`Clarity image already exists in your ECR: ${repositoryName}:${imageTag}`);
|
|
44
|
-
} else {
|
|
45
|
-
// eslint-disable-next-line no-console
|
|
46
|
-
console.error(`Logging into source ECR: ${srcRepositoryUri.replace(/\/.*/, '')}...`);
|
|
47
|
-
await (0, _loginToECR.default)({
|
|
48
|
-
ecr: from.ecr,
|
|
49
|
-
awsConfig: { ...from.awsConfig,
|
|
50
|
-
region: fromRegion
|
|
51
|
-
}
|
|
52
|
-
}); // eslint-disable-next-line no-console
|
|
53
|
-
|
|
54
|
-
console.error(`Pulling ${from.imageUri}...`);
|
|
55
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['pull', from.imageUri], {
|
|
56
|
-
stdio: 'inherit'
|
|
57
|
-
}); // eslint-disable-next-line no-console
|
|
58
|
-
|
|
59
|
-
console.error(`Logging into dest ECR: ${repositoryUri.replace(/\/.*/, '')}...`);
|
|
60
|
-
await (0, _loginToECR.default)({
|
|
61
|
-
ecr: to.ecr,
|
|
62
|
-
awsConfig: { ...to.awsConfig,
|
|
63
|
-
region: toRegion
|
|
64
|
-
}
|
|
65
|
-
}); // eslint-disable-next-line no-console
|
|
66
|
-
|
|
67
|
-
console.error(`Pushing ${to.imageUri}...`);
|
|
68
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['tag', from.imageUri, to.imageUri], {
|
|
69
|
-
stdio: 'inherit'
|
|
70
|
-
});
|
|
71
|
-
await (0, _promisifyChildProcess.spawn)('docker', ['push', to.imageUri], {
|
|
72
|
-
stdio: 'inherit'
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3B5RUNSSW1hZ2UudHMiXSwibmFtZXMiOlsiY29weUVDUkltYWdlIiwiZnJvbSIsInRvIiwiaW1hZ2VVcmkiLCJzcmNSZXBvc2l0b3J5VXJpIiwicmVwbGFjZSIsInJlcG9zaXRvcnlVcmkiLCJyZWdpb24iLCJmcm9tUmVnaW9uIiwidG9SZWdpb24iLCJyZXBvc2l0b3J5TmFtZSIsImltYWdlVGFnIiwiYXdzQ29uZmlnIiwiZWNyIiwiY29uc29sZSIsImVycm9yIiwic3RkaW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVlLGVBQWVBLFlBQWYsQ0FBNEI7QUFDekNDLEVBQUFBLElBRHlDO0FBRXpDQyxFQUFBQTtBQUZ5QyxDQUE1QixFQWNHO0FBQ2hCLE1BQUlELElBQUksQ0FBQ0UsUUFBTCxLQUFrQkQsRUFBRSxDQUFDQyxRQUF6QixFQUFtQztBQUNuQyxRQUFNQyxnQkFBZ0IsR0FBR0gsSUFBSSxDQUFDRSxRQUFMLENBQWNFLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsQ0FBekI7QUFDQSxRQUFNQyxhQUFhLEdBQUdKLEVBQUUsQ0FBQ0MsUUFBSCxDQUFZRSxPQUFaLENBQW9CLEtBQXBCLEVBQTJCLEVBQTNCLENBQXRCO0FBRUEsUUFBTTtBQUFFRSxJQUFBQSxNQUFNLEVBQUVDO0FBQVYsTUFBeUIsK0JBQWlCUCxJQUFJLENBQUNFLFFBQXRCLENBQS9CO0FBQ0EsUUFBTTtBQUNKSSxJQUFBQSxNQUFNLEVBQUVFLFFBREo7QUFFSkMsSUFBQUEsY0FGSTtBQUdKQyxJQUFBQTtBQUhJLE1BSUYsK0JBQWlCVCxFQUFFLENBQUNDLFFBQXBCLENBSko7O0FBTUEsTUFDRSxNQUFNLDZCQUFlO0FBQ25CUyxJQUFBQSxTQUFTLEVBQUUsRUFBRSxHQUFHVixFQUFFLENBQUNVLFNBQVI7QUFBbUJMLE1BQUFBLE1BQU0sRUFBRUU7QUFBM0IsS0FEUTtBQUVuQkksSUFBQUEsR0FBRyxFQUFFWCxFQUFFLENBQUNXLEdBRlc7QUFHbkJILElBQUFBLGNBSG1CO0FBSW5CQyxJQUFBQTtBQUptQixHQUFmLENBRFIsRUFPRTtBQUNBO0FBQ0FHLElBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUNHLDZDQUE0Q0wsY0FBZSxJQUFHQyxRQUFTLEVBRDFFO0FBR0QsR0FaRCxNQVlPO0FBQ0w7QUFDQUcsSUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQ0csNEJBQTJCWCxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUIsTUFBekIsRUFBaUMsRUFBakMsQ0FBcUMsS0FEbkU7QUFJQSxVQUFNLHlCQUFXO0FBQ2ZRLE1BQUFBLEdBQUcsRUFBRVosSUFBSSxDQUFDWSxHQURLO0FBRWZELE1BQUFBLFNBQVMsRUFBRSxFQUFFLEdBQUdYLElBQUksQ0FBQ1csU0FBVjtBQUFxQkwsUUFBQUEsTUFBTSxFQUFFQztBQUE3QjtBQUZJLEtBQVgsQ0FBTixDQU5LLENBV0w7O0FBQ0FNLElBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFlLFdBQVVkLElBQUksQ0FBQ0UsUUFBUyxLQUF2QztBQUNBLFVBQU0sa0NBQU0sUUFBTixFQUFnQixDQUFDLE1BQUQsRUFBU0YsSUFBSSxDQUFDRSxRQUFkLENBQWhCLEVBQXlDO0FBQUVhLE1BQUFBLEtBQUssRUFBRTtBQUFULEtBQXpDLENBQU4sQ0FiSyxDQWVMOztBQUNBRixJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FDRywwQkFBeUJULGFBQWEsQ0FBQ0QsT0FBZCxDQUFzQixNQUF0QixFQUE4QixFQUE5QixDQUFrQyxLQUQ5RDtBQUdBLFVBQU0seUJBQVc7QUFDZlEsTUFBQUEsR0FBRyxFQUFFWCxFQUFFLENBQUNXLEdBRE87QUFFZkQsTUFBQUEsU0FBUyxFQUFFLEVBQUUsR0FBR1YsRUFBRSxDQUFDVSxTQUFSO0FBQW1CTCxRQUFBQSxNQUFNLEVBQUVFO0FBQTNCO0FBRkksS0FBWCxDQUFOLENBbkJLLENBd0JMOztBQUNBSyxJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBZSxXQUFVYixFQUFFLENBQUNDLFFBQVMsS0FBckM7QUFDQSxVQUFNLGtDQUFNLFFBQU4sRUFBZ0IsQ0FBQyxLQUFELEVBQVFGLElBQUksQ0FBQ0UsUUFBYixFQUF1QkQsRUFBRSxDQUFDQyxRQUExQixDQUFoQixFQUFxRDtBQUN6RGEsTUFBQUEsS0FBSyxFQUFFO0FBRGtELEtBQXJELENBQU47QUFHQSxVQUFNLGtDQUFNLFFBQU4sRUFBZ0IsQ0FBQyxNQUFELEVBQVNkLEVBQUUsQ0FBQ0MsUUFBWixDQUFoQixFQUF1QztBQUFFYSxNQUFBQSxLQUFLLEVBQUU7QUFBVCxLQUF2QyxDQUFOO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBV1MgZnJvbSAnYXdzLXNkaydcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAncHJvbWlzaWZ5LWNoaWxkLXByb2Nlc3MnXG5pbXBvcnQgbG9naW5Ub0VDUiBmcm9tICcuL2xvZ2luVG9FQ1InXG5pbXBvcnQgZWNySW1hZ2VFeGlzdHMgZnJvbSAnLi9lY3JJbWFnZUV4aXN0cydcbmltcG9ydCBwYXJzZUVDUkltYWdlVXJpIGZyb20gJy4vcGFyc2VFQ1JJbWFnZVVyaSdcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY29weUVDUkltYWdlKHtcbiAgZnJvbSxcbiAgdG8sXG59OiB7XG4gIGZyb206IHtcbiAgICBpbWFnZVVyaTogc3RyaW5nXG4gICAgZWNyPzogQVdTLkVDUlxuICAgIGF3c0NvbmZpZz86IEFXUy5Db25maWd1cmF0aW9uT3B0aW9uc1xuICB9XG4gIHRvOiB7XG4gICAgaW1hZ2VVcmk6IHN0cmluZ1xuICAgIGVjcj86IEFXUy5FQ1JcbiAgICBhd3NDb25maWc/OiBBV1MuQ29uZmlndXJhdGlvbk9wdGlvbnNcbiAgfVxufSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoZnJvbS5pbWFnZVVyaSA9PT0gdG8uaW1hZ2VVcmkpIHJldHVyblxuICBjb25zdCBzcmNSZXBvc2l0b3J5VXJpID0gZnJvbS5pbWFnZVVyaS5yZXBsYWNlKC86LisvLCAnJylcbiAgY29uc3QgcmVwb3NpdG9yeVVyaSA9IHRvLmltYWdlVXJpLnJlcGxhY2UoLzouKy8sICcnKVxuXG4gIGNvbnN0IHsgcmVnaW9uOiBmcm9tUmVnaW9uIH0gPSBwYXJzZUVDUkltYWdlVXJpKGZyb20uaW1hZ2VVcmkpXG4gIGNvbnN0IHtcbiAgICByZWdpb246IHRvUmVnaW9uLFxuICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgIGltYWdlVGFnLFxuICB9ID0gcGFyc2VFQ1JJbWFnZVVyaSh0by5pbWFnZVVyaSlcblxuICBpZiAoXG4gICAgYXdhaXQgZWNySW1hZ2VFeGlzdHMoe1xuICAgICAgYXdzQ29uZmlnOiB7IC4uLnRvLmF3c0NvbmZpZywgcmVnaW9uOiB0b1JlZ2lvbiB9LFxuICAgICAgZWNyOiB0by5lY3IsXG4gICAgICByZXBvc2l0b3J5TmFtZSxcbiAgICAgIGltYWdlVGFnLFxuICAgIH0pXG4gICkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBDbGFyaXR5IGltYWdlIGFscmVhZHkgZXhpc3RzIGluIHlvdXIgRUNSOiAke3JlcG9zaXRvcnlOYW1lfToke2ltYWdlVGFnfWBcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYExvZ2dpbmcgaW50byBzb3VyY2UgRUNSOiAke3NyY1JlcG9zaXRvcnlVcmkucmVwbGFjZSgvXFwvLiovLCAnJyl9Li4uYFxuICAgIClcblxuICAgIGF3YWl0IGxvZ2luVG9FQ1Ioe1xuICAgICAgZWNyOiBmcm9tLmVjcixcbiAgICAgIGF3c0NvbmZpZzogeyAuLi5mcm9tLmF3c0NvbmZpZywgcmVnaW9uOiBmcm9tUmVnaW9uIH0sXG4gICAgfSlcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihgUHVsbGluZyAke2Zyb20uaW1hZ2VVcml9Li4uYClcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWydwdWxsJywgZnJvbS5pbWFnZVVyaV0sIHsgc3RkaW86ICdpbmhlcml0JyB9KVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYExvZ2dpbmcgaW50byBkZXN0IEVDUjogJHtyZXBvc2l0b3J5VXJpLnJlcGxhY2UoL1xcLy4qLywgJycpfS4uLmBcbiAgICApXG4gICAgYXdhaXQgbG9naW5Ub0VDUih7XG4gICAgICBlY3I6IHRvLmVjcixcbiAgICAgIGF3c0NvbmZpZzogeyAuLi50by5hd3NDb25maWcsIHJlZ2lvbjogdG9SZWdpb24gfSxcbiAgICB9KVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKGBQdXNoaW5nICR7dG8uaW1hZ2VVcml9Li4uYClcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWyd0YWcnLCBmcm9tLmltYWdlVXJpLCB0by5pbWFnZVVyaV0sIHtcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCcsXG4gICAgfSlcbiAgICBhd2FpdCBzcGF3bignZG9ja2VyJywgWydwdXNoJywgdG8uaW1hZ2VVcmldLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSlcbiAgfVxufVxuIl19
|
package/es/ecrImageExists.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import AWS from 'aws-sdk';
|
|
2
|
-
export default function ecrImageExists({ ecr, awsConfig, imageUri, registryId, repositoryName, imageTag, }: {
|
|
3
|
-
ecr?: AWS.ECR;
|
|
4
|
-
awsConfig?: AWS.ConfigurationOptions;
|
|
5
|
-
imageUri?: string;
|
|
6
|
-
registryId?: string;
|
|
7
|
-
repositoryName?: string;
|
|
8
|
-
imageTag?: string;
|
|
9
|
-
}): Promise<boolean>;
|
package/es/ecrImageExists.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = ecrImageExists;
|
|
7
|
-
|
|
8
|
-
var _awsSdk = _interopRequireDefault(require("aws-sdk"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
async function ecrImageExists({
|
|
13
|
-
ecr,
|
|
14
|
-
awsConfig,
|
|
15
|
-
imageUri,
|
|
16
|
-
registryId,
|
|
17
|
-
repositoryName,
|
|
18
|
-
imageTag
|
|
19
|
-
}) {
|
|
20
|
-
let region;
|
|
21
|
-
|
|
22
|
-
if (imageUri) {
|
|
23
|
-
const match = /(\d+)\.dkr\.ecr\.(.+?)\.amazonaws\.com\/(.+?):(.+)/.exec(imageUri);
|
|
24
|
-
if (!match) throw new Error(`failed to parse imageUri: ${imageUri}`);
|
|
25
|
-
[, registryId, region, repositoryName, imageTag] = match;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!region) region = awsConfig === null || awsConfig === void 0 ? void 0 : awsConfig.region;
|
|
29
|
-
if (!ecr) ecr = new _awsSdk.default.ECR({ ...awsConfig,
|
|
30
|
-
region
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
if (!repositoryName || !imageTag) {
|
|
34
|
-
throw new Error(`missing repositoryName/imageTag or imageUri`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return await ecr.describeImages({
|
|
38
|
-
registryId,
|
|
39
|
-
repositoryName,
|
|
40
|
-
imageIds: [{
|
|
41
|
-
imageTag
|
|
42
|
-
}]
|
|
43
|
-
}).promise().then(() => true, () => false);
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lY3JJbWFnZUV4aXN0cy50cyJdLCJuYW1lcyI6WyJlY3JJbWFnZUV4aXN0cyIsImVjciIsImF3c0NvbmZpZyIsImltYWdlVXJpIiwicmVnaXN0cnlJZCIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciLCJyZWdpb24iLCJtYXRjaCIsImV4ZWMiLCJFcnJvciIsIkFXUyIsIkVDUiIsImRlc2NyaWJlSW1hZ2VzIiwiaW1hZ2VJZHMiLCJwcm9taXNlIiwidGhlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRWUsZUFBZUEsY0FBZixDQUE4QjtBQUMzQ0MsRUFBQUEsR0FEMkM7QUFFM0NDLEVBQUFBLFNBRjJDO0FBRzNDQyxFQUFBQSxRQUgyQztBQUkzQ0MsRUFBQUEsVUFKMkM7QUFLM0NDLEVBQUFBLGNBTDJDO0FBTTNDQyxFQUFBQTtBQU4yQyxDQUE5QixFQWNNO0FBQ25CLE1BQUlDLE1BQUo7O0FBQ0EsTUFBSUosUUFBSixFQUFjO0FBQ1osVUFBTUssS0FBSyxHQUFHLHFEQUFxREMsSUFBckQsQ0FDWk4sUUFEWSxDQUFkO0FBR0EsUUFBSSxDQUFDSyxLQUFMLEVBQVksTUFBTSxJQUFJRSxLQUFKLENBQVcsNkJBQTRCUCxRQUFTLEVBQWhELENBQU47QUFDWCxPQUFHQyxVQUFILEVBQWVHLE1BQWYsRUFBdUJGLGNBQXZCLEVBQXVDQyxRQUF2QyxJQUFtREUsS0FBbkQ7QUFDRjs7QUFDRCxNQUFJLENBQUNELE1BQUwsRUFBYUEsTUFBTSxHQUFHTCxTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRUssTUFBcEI7QUFDYixNQUFJLENBQUNOLEdBQUwsRUFBVUEsR0FBRyxHQUFHLElBQUlVLGdCQUFJQyxHQUFSLENBQVksRUFBRSxHQUFHVixTQUFMO0FBQWdCSyxJQUFBQTtBQUFoQixHQUFaLENBQU47O0FBRVYsTUFBSSxDQUFDRixjQUFELElBQW1CLENBQUNDLFFBQXhCLEVBQWtDO0FBQ2hDLFVBQU0sSUFBSUksS0FBSixDQUFXLDZDQUFYLENBQU47QUFDRDs7QUFDRCxTQUFPLE1BQU1ULEdBQUcsQ0FDYlksY0FEVSxDQUNLO0FBQ2RULElBQUFBLFVBRGM7QUFFZEMsSUFBQUEsY0FGYztBQUdkUyxJQUFBQSxRQUFRLEVBQUUsQ0FBQztBQUFFUixNQUFBQTtBQUFGLEtBQUQ7QUFISSxHQURMLEVBTVZTLE9BTlUsR0FPVkMsSUFQVSxDQVFULE1BQU0sSUFSRyxFQVNULE1BQU0sS0FURyxDQUFiO0FBV0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGVjckltYWdlRXhpc3RzKHtcbiAgZWNyLFxuICBhd3NDb25maWcsXG4gIGltYWdlVXJpLFxuICByZWdpc3RyeUlkLFxuICByZXBvc2l0b3J5TmFtZSxcbiAgaW1hZ2VUYWcsXG59OiB7XG4gIGVjcj86IEFXUy5FQ1JcbiAgYXdzQ29uZmlnPzogQVdTLkNvbmZpZ3VyYXRpb25PcHRpb25zXG4gIGltYWdlVXJpPzogc3RyaW5nXG4gIHJlZ2lzdHJ5SWQ/OiBzdHJpbmdcbiAgcmVwb3NpdG9yeU5hbWU/OiBzdHJpbmdcbiAgaW1hZ2VUYWc/OiBzdHJpbmdcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgbGV0IHJlZ2lvblxuICBpZiAoaW1hZ2VVcmkpIHtcbiAgICBjb25zdCBtYXRjaCA9IC8oXFxkKylcXC5ka3JcXC5lY3JcXC4oLis/KVxcLmFtYXpvbmF3c1xcLmNvbVxcLyguKz8pOiguKykvLmV4ZWMoXG4gICAgICBpbWFnZVVyaVxuICAgIClcbiAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byBwYXJzZSBpbWFnZVVyaTogJHtpbWFnZVVyaX1gKVxuICAgIDtbLCByZWdpc3RyeUlkLCByZWdpb24sIHJlcG9zaXRvcnlOYW1lLCBpbWFnZVRhZ10gPSBtYXRjaFxuICB9XG4gIGlmICghcmVnaW9uKSByZWdpb24gPSBhd3NDb25maWc/LnJlZ2lvblxuICBpZiAoIWVjcikgZWNyID0gbmV3IEFXUy5FQ1IoeyAuLi5hd3NDb25maWcsIHJlZ2lvbiB9KVxuXG4gIGlmICghcmVwb3NpdG9yeU5hbWUgfHwgIWltYWdlVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIHJlcG9zaXRvcnlOYW1lL2ltYWdlVGFnIG9yIGltYWdlVXJpYClcbiAgfVxuICByZXR1cm4gYXdhaXQgZWNyXG4gICAgLmRlc2NyaWJlSW1hZ2VzKHtcbiAgICAgIHJlZ2lzdHJ5SWQsXG4gICAgICByZXBvc2l0b3J5TmFtZSxcbiAgICAgIGltYWdlSWRzOiBbeyBpbWFnZVRhZyB9XSxcbiAgICB9KVxuICAgIC5wcm9taXNlKClcbiAgICAudGhlbihcbiAgICAgICgpID0+IHRydWUsXG4gICAgICAoKSA9PiBmYWxzZVxuICAgIClcbn1cbiJdfQ==
|
package/es/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { default as copyECRImage } from './copyECRImage';
|
|
2
|
-
export { default as ecrImageExists } from './ecrImageExists';
|
|
3
|
-
export { default as loginToECR } from './loginToECR';
|
|
4
|
-
export { default as tagECRImage } from './tagECRImage';
|
|
5
|
-
export { default as parseECRImageUri } from './parseECRImageUri';
|
|
6
|
-
export { default as upsertECRRepository } from './upsertECRRepository';
|