@jcoreio/aws-ecr-utils 1.1.0 → 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.
Files changed (46) hide show
  1. package/checkECRRepositoryPolicy.d.ts +20 -0
  2. package/checkECRRepositoryPolicy.js +132 -0
  3. package/checkECRRepositoryPolicy.mjs +100 -0
  4. package/copyECRImage.js +79 -104
  5. package/copyECRImage.js.flow +8 -8
  6. package/copyECRImage.mjs +67 -0
  7. package/{es/copyECRImage.js.flow → copyECRImage.mjs.flow} +8 -8
  8. package/ecrImageExists.js +51 -74
  9. package/ecrImageExists.mjs +31 -0
  10. package/index.d.ts +2 -0
  11. package/index.js +20 -13
  12. package/index.js.flow +1 -0
  13. package/index.mjs +8 -0
  14. package/{es/index.js.flow → index.mjs.flow} +1 -0
  15. package/loginToECR.js +44 -65
  16. package/loginToECR.mjs +38 -0
  17. package/package.json +25 -104
  18. package/parseECRImageUri.d.ts +3 -2
  19. package/parseECRImageUri.js +6 -10
  20. package/parseECRImageUri.mjs +11 -0
  21. package/parseECRRepositoryHostname.d.ts +6 -0
  22. package/parseECRRepositoryHostname.js +22 -0
  23. package/parseECRRepositoryHostname.mjs +10 -0
  24. package/tagECRImage.js +81 -115
  25. package/tagECRImage.mjs +50 -0
  26. package/upsertECRRepository.js +45 -64
  27. package/upsertECRRepository.mjs +33 -0
  28. package/es/copyECRImage.d.ts +0 -13
  29. package/es/copyECRImage.js +0 -76
  30. package/es/ecrImageExists.d.ts +0 -9
  31. package/es/ecrImageExists.js +0 -45
  32. package/es/index.d.ts +0 -6
  33. package/es/index.js +0 -56
  34. package/es/loginToECR.d.ts +0 -8
  35. package/es/loginToECR.js +0 -56
  36. package/es/parseECRImageUri.d.ts +0 -6
  37. package/es/parseECRImageUri.js +0 -19
  38. package/es/tagECRImage.d.ts +0 -10
  39. package/es/tagECRImage.js +0 -65
  40. package/es/upsertECRRepository.d.ts +0 -6
  41. package/es/upsertECRRepository.js +0 -45
  42. /package/{es/ecrImageExists.js.flow → ecrImageExists.mjs.flow} +0 -0
  43. /package/{es/loginToECR.js.flow → loginToECR.mjs.flow} +0 -0
  44. /package/{es/parseECRImageUri.js.flow → parseECRImageUri.mjs.flow} +0 -0
  45. /package/{es/tagECRImage.js.flow → tagECRImage.mjs.flow} +0 -0
  46. /package/{es/upsertECRRepository.js.flow → upsertECRRepository.mjs.flow} +0 -0
package/es/index.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "copyECRImage", {
7
- enumerable: true,
8
- get: function () {
9
- return _copyECRImage.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "ecrImageExists", {
13
- enumerable: true,
14
- get: function () {
15
- return _ecrImageExists.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "loginToECR", {
19
- enumerable: true,
20
- get: function () {
21
- return _loginToECR.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "parseECRImageUri", {
25
- enumerable: true,
26
- get: function () {
27
- return _parseECRImageUri.default;
28
- }
29
- });
30
- Object.defineProperty(exports, "tagECRImage", {
31
- enumerable: true,
32
- get: function () {
33
- return _tagECRImage.default;
34
- }
35
- });
36
- Object.defineProperty(exports, "upsertECRRepository", {
37
- enumerable: true,
38
- get: function () {
39
- return _upsertECRRepository.default;
40
- }
41
- });
42
-
43
- var _copyECRImage = _interopRequireDefault(require("./copyECRImage"));
44
-
45
- var _ecrImageExists = _interopRequireDefault(require("./ecrImageExists"));
46
-
47
- var _loginToECR = _interopRequireDefault(require("./loginToECR"));
48
-
49
- var _tagECRImage = _interopRequireDefault(require("./tagECRImage"));
50
-
51
- var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
52
-
53
- var _upsertECRRepository = _interopRequireDefault(require("./upsertECRRepository"));
54
-
55
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgY29weUVDUkltYWdlIH0gZnJvbSAnLi9jb3B5RUNSSW1hZ2UnXG5leHBvcnQgeyBkZWZhdWx0IGFzIGVjckltYWdlRXhpc3RzIH0gZnJvbSAnLi9lY3JJbWFnZUV4aXN0cydcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbG9naW5Ub0VDUiB9IGZyb20gJy4vbG9naW5Ub0VDUidcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGFnRUNSSW1hZ2UgfSBmcm9tICcuL3RhZ0VDUkltYWdlJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUVDUkltYWdlVXJpIH0gZnJvbSAnLi9wYXJzZUVDUkltYWdlVXJpJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cHNlcnRFQ1JSZXBvc2l0b3J5IH0gZnJvbSAnLi91cHNlcnRFQ1JSZXBvc2l0b3J5J1xuIl19
@@ -1,8 +0,0 @@
1
- /**
2
- * @prettier
3
- */
4
- import AWS from 'aws-sdk';
5
- export default function loginToECR({ ecr, awsConfig, }: {
6
- ecr?: AWS.ECR;
7
- awsConfig?: AWS.ConfigurationOptions;
8
- }): Promise<void>;
package/es/loginToECR.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = loginToECR;
7
-
8
- var _awsSdk = _interopRequireDefault(require("aws-sdk"));
9
-
10
- var _promisifyChildProcess = require("promisify-child-process");
11
-
12
- var _base64Js = _interopRequireDefault(require("base64-js"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- /**
17
- * @prettier
18
- */
19
- async function loginToECR({
20
- ecr,
21
- awsConfig
22
- }) {
23
- if (!ecr) ecr = new _awsSdk.default.ECR(awsConfig);
24
- const {
25
- authorizationData
26
- } = await ecr.getAuthorizationToken().promise();
27
- const {
28
- authorizationToken,
29
- proxyEndpoint
30
- } = (authorizationData === null || authorizationData === void 0 ? void 0 : authorizationData[0]) || {};
31
-
32
- if (!authorizationToken) {
33
- throw new Error('failed to get authorizationToken from ECR');
34
- }
35
-
36
- if (!proxyEndpoint) {
37
- throw new Error('failed to get proxyEndpoint from ECR');
38
- } // this is silly...
39
-
40
-
41
- const decoded = new Buffer(_base64Js.default.toByteArray(authorizationToken)).toString('utf8');
42
- const [user, password] = decoded.split(/:/);
43
- const child = (0, _promisifyChildProcess.spawn)('docker', ['login', '-u', user, '--password-stdin', proxyEndpoint], {
44
- stdio: 'pipe',
45
- encoding: 'utf8'
46
- });
47
-
48
- if (!child.stdin) {
49
- throw new Error('expected child.stdin to be defined');
50
- }
51
-
52
- child.stdin.write(password);
53
- child.stdin.end();
54
- await child;
55
- }
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dpblRvRUNSLnRzIl0sIm5hbWVzIjpbImxvZ2luVG9FQ1IiLCJlY3IiLCJhd3NDb25maWciLCJBV1MiLCJFQ1IiLCJhdXRob3JpemF0aW9uRGF0YSIsImdldEF1dGhvcml6YXRpb25Ub2tlbiIsInByb21pc2UiLCJhdXRob3JpemF0aW9uVG9rZW4iLCJwcm94eUVuZHBvaW50IiwiRXJyb3IiLCJkZWNvZGVkIiwiQnVmZmVyIiwiYmFzZTY0IiwidG9CeXRlQXJyYXkiLCJ0b1N0cmluZyIsInVzZXIiLCJwYXNzd29yZCIsInNwbGl0IiwiY2hpbGQiLCJzdGRpbyIsImVuY29kaW5nIiwic3RkaW4iLCJ3cml0ZSIsImVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUNBOztBQUNBOzs7O0FBTEE7QUFDQTtBQUNBO0FBS2UsZUFBZUEsVUFBZixDQUEwQjtBQUN2Q0MsRUFBQUEsR0FEdUM7QUFFdkNDLEVBQUFBO0FBRnVDLENBQTFCLEVBTUc7QUFDaEIsTUFBSSxDQUFDRCxHQUFMLEVBQVVBLEdBQUcsR0FBRyxJQUFJRSxnQkFBSUMsR0FBUixDQUFZRixTQUFaLENBQU47QUFDVixRQUFNO0FBQUVHLElBQUFBO0FBQUYsTUFBd0IsTUFBTUosR0FBRyxDQUFDSyxxQkFBSixHQUE0QkMsT0FBNUIsRUFBcEM7QUFDQSxRQUFNO0FBQUVDLElBQUFBLGtCQUFGO0FBQXNCQyxJQUFBQTtBQUF0QixNQUF3QyxDQUFBSixpQkFBaUIsU0FBakIsSUFBQUEsaUJBQWlCLFdBQWpCLFlBQUFBLGlCQUFpQixDQUFHLENBQUgsQ0FBakIsS0FBMEIsRUFBeEU7O0FBQ0EsTUFBSSxDQUFDRyxrQkFBTCxFQUF5QjtBQUN2QixVQUFNLElBQUlFLEtBQUosQ0FBVSwyQ0FBVixDQUFOO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDRCxhQUFMLEVBQW9CO0FBQ2xCLFVBQU0sSUFBSUMsS0FBSixDQUFVLHNDQUFWLENBQU47QUFDRCxHQVRlLENBVWhCOzs7QUFDQSxRQUFNQyxPQUFPLEdBQUcsSUFBSUMsTUFBSixDQUFXQyxrQkFBT0MsV0FBUCxDQUFtQk4sa0JBQW5CLENBQVgsRUFBbURPLFFBQW5ELENBQ2QsTUFEYyxDQUFoQjtBQUdBLFFBQU0sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLElBQW1CTixPQUFPLENBQUNPLEtBQVIsQ0FBYyxHQUFkLENBQXpCO0FBQ0EsUUFBTUMsS0FBSyxHQUFHLGtDQUNaLFFBRFksRUFFWixDQUFDLE9BQUQsRUFBVSxJQUFWLEVBQWdCSCxJQUFoQixFQUFzQixrQkFBdEIsRUFBMENQLGFBQTFDLENBRlksRUFHWjtBQUNFVyxJQUFBQSxLQUFLLEVBQUUsTUFEVDtBQUVFQyxJQUFBQSxRQUFRLEVBQUU7QUFGWixHQUhZLENBQWQ7O0FBUUEsTUFBSSxDQUFDRixLQUFLLENBQUNHLEtBQVgsRUFBa0I7QUFDaEIsVUFBTSxJQUFJWixLQUFKLENBQVUsb0NBQVYsQ0FBTjtBQUNEOztBQUNEUyxFQUFBQSxLQUFLLENBQUNHLEtBQU4sQ0FBWUMsS0FBWixDQUFrQk4sUUFBbEI7QUFDQUUsRUFBQUEsS0FBSyxDQUFDRyxLQUFOLENBQVlFLEdBQVo7QUFDQSxRQUFNTCxLQUFOO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ3Byb21pc2lmeS1jaGlsZC1wcm9jZXNzJ1xuaW1wb3J0IGJhc2U2NCBmcm9tICdiYXNlNjQtanMnXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGxvZ2luVG9FQ1Ioe1xuICBlY3IsXG4gIGF3c0NvbmZpZyxcbn06IHtcbiAgZWNyPzogQVdTLkVDUlxuICBhd3NDb25maWc/OiBBV1MuQ29uZmlndXJhdGlvbk9wdGlvbnNcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFlY3IpIGVjciA9IG5ldyBBV1MuRUNSKGF3c0NvbmZpZylcbiAgY29uc3QgeyBhdXRob3JpemF0aW9uRGF0YSB9ID0gYXdhaXQgZWNyLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLnByb21pc2UoKVxuICBjb25zdCB7IGF1dGhvcml6YXRpb25Ub2tlbiwgcHJveHlFbmRwb2ludCB9ID0gYXV0aG9yaXphdGlvbkRhdGE/LlswXSB8fCB7fVxuICBpZiAoIWF1dGhvcml6YXRpb25Ub2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGdldCBhdXRob3JpemF0aW9uVG9rZW4gZnJvbSBFQ1InKVxuICB9XG4gIGlmICghcHJveHlFbmRwb2ludCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGdldCBwcm94eUVuZHBvaW50IGZyb20gRUNSJylcbiAgfVxuICAvLyB0aGlzIGlzIHNpbGx5Li4uXG4gIGNvbnN0IGRlY29kZWQgPSBuZXcgQnVmZmVyKGJhc2U2NC50b0J5dGVBcnJheShhdXRob3JpemF0aW9uVG9rZW4pKS50b1N0cmluZyhcbiAgICAndXRmOCdcbiAgKVxuICBjb25zdCBbdXNlciwgcGFzc3dvcmRdID0gZGVjb2RlZC5zcGxpdCgvOi8pXG4gIGNvbnN0IGNoaWxkID0gc3Bhd24oXG4gICAgJ2RvY2tlcicsXG4gICAgWydsb2dpbicsICctdScsIHVzZXIsICctLXBhc3N3b3JkLXN0ZGluJywgcHJveHlFbmRwb2ludF0sXG4gICAge1xuICAgICAgc3RkaW86ICdwaXBlJyxcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgfVxuICApXG4gIGlmICghY2hpbGQuc3RkaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIGNoaWxkLnN0ZGluIHRvIGJlIGRlZmluZWQnKVxuICB9XG4gIGNoaWxkLnN0ZGluLndyaXRlKHBhc3N3b3JkKVxuICBjaGlsZC5zdGRpbi5lbmQoKVxuICBhd2FpdCBjaGlsZFxufVxuIl19
@@ -1,6 +0,0 @@
1
- export default function parseECRImageUri(imageUri: string): {
2
- registryId: string;
3
- region: string;
4
- repositoryName: string;
5
- imageTag: string;
6
- };
@@ -1,19 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = parseECRImageUri;
7
-
8
- function parseECRImageUri(imageUri) {
9
- const match = /(\d+)\.dkr\.ecr\.([^.]+)\.amazonaws\.com\/([^:]+):(.+)/.exec(imageUri);
10
- if (!match) throw new Error(`invalid imageUri: ${imageUri}`);
11
- const [, registryId, region, repositoryName, imageTag] = match;
12
- return {
13
- registryId,
14
- region,
15
- repositoryName,
16
- imageTag
17
- };
18
- }
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUVDUkltYWdlVXJpLnRzIl0sIm5hbWVzIjpbInBhcnNlRUNSSW1hZ2VVcmkiLCJpbWFnZVVyaSIsIm1hdGNoIiwiZXhlYyIsIkVycm9yIiwicmVnaXN0cnlJZCIsInJlZ2lvbiIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZSxTQUFTQSxnQkFBVCxDQUEwQkMsUUFBMUIsRUFLYjtBQUNBLFFBQU1DLEtBQUssR0FBRyx5REFBeURDLElBQXpELENBQ1pGLFFBRFksQ0FBZDtBQUdBLE1BQUksQ0FBQ0MsS0FBTCxFQUFZLE1BQU0sSUFBSUUsS0FBSixDQUFXLHFCQUFvQkgsUUFBUyxFQUF4QyxDQUFOO0FBQ1osUUFBTSxHQUFHSSxVQUFILEVBQWVDLE1BQWYsRUFBdUJDLGNBQXZCLEVBQXVDQyxRQUF2QyxJQUFtRE4sS0FBekQ7QUFDQSxTQUFPO0FBQUVHLElBQUFBLFVBQUY7QUFBY0MsSUFBQUEsTUFBZDtBQUFzQkMsSUFBQUEsY0FBdEI7QUFBc0NDLElBQUFBO0FBQXRDLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlRUNSSW1hZ2VVcmkoaW1hZ2VVcmk6IHN0cmluZyk6IHtcbiAgcmVnaXN0cnlJZDogc3RyaW5nXG4gIHJlZ2lvbjogc3RyaW5nXG4gIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmdcbiAgaW1hZ2VUYWc6IHN0cmluZ1xufSB7XG4gIGNvbnN0IG1hdGNoID0gLyhcXGQrKVxcLmRrclxcLmVjclxcLihbXi5dKylcXC5hbWF6b25hd3NcXC5jb21cXC8oW146XSspOiguKykvLmV4ZWMoXG4gICAgaW1hZ2VVcmlcbiAgKVxuICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW1hZ2VVcmk6ICR7aW1hZ2VVcml9YClcbiAgY29uc3QgWywgcmVnaXN0cnlJZCwgcmVnaW9uLCByZXBvc2l0b3J5TmFtZSwgaW1hZ2VUYWddID0gbWF0Y2hcbiAgcmV0dXJuIHsgcmVnaXN0cnlJZCwgcmVnaW9uLCByZXBvc2l0b3J5TmFtZSwgaW1hZ2VUYWcgfVxufVxuIl19
@@ -1,10 +0,0 @@
1
- /**
2
- * @prettier
3
- */
4
- import AWS from 'aws-sdk';
5
- export default function tagECRImage({ ecr, awsConfig, imageUri, tags, }: {
6
- ecr?: AWS.ECR;
7
- awsConfig?: AWS.ConfigurationOptions;
8
- imageUri: string;
9
- tags: string[];
10
- }): Promise<void>;
package/es/tagECRImage.js DELETED
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = tagECRImage;
7
-
8
- var _awsSdk = _interopRequireDefault(require("aws-sdk"));
9
-
10
- var _parseECRImageUri = _interopRequireDefault(require("./parseECRImageUri"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- /**
15
- * @prettier
16
- */
17
- async function tagECRImage({
18
- ecr,
19
- awsConfig,
20
- imageUri,
21
- tags
22
- }) {
23
- const {
24
- region,
25
- repositoryName,
26
- imageTag
27
- } = (0, _parseECRImageUri.default)(imageUri);
28
- if (!ecr) ecr = new _awsSdk.default.ECR({ ...awsConfig,
29
- region
30
- });
31
- const imageManifest = await ecr.batchGetImage({
32
- repositoryName,
33
- imageIds: [{
34
- imageTag
35
- }]
36
- }).promise().then(r => {
37
- var _r$images, _r$images$;
38
-
39
- 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;
40
- });
41
-
42
- if (!imageManifest) {
43
- throw new Error(`failed to get image manifest for ${imageUri}`);
44
- }
45
-
46
- if (imageManifest) {
47
- // add other tags to ECR
48
- for (const tag of tags) {
49
- // eslint-disable-next-line no-console
50
- console.error(`Adding tag ${repositoryName}:${tag}`);
51
-
52
- try {
53
- await ecr.putImage({
54
- repositoryName,
55
- imageManifest,
56
- imageTag: tag.substring(tag.indexOf(':') + 1)
57
- }).promise();
58
- } catch (error) {
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- if ((error === null || error === void 0 ? void 0 : error.code) !== 'ImageAlreadyExistsException') throw error;
61
- }
62
- }
63
- }
64
- }
65
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdFQ1JJbWFnZS50cyJdLCJuYW1lcyI6WyJ0YWdFQ1JJbWFnZSIsImVjciIsImF3c0NvbmZpZyIsImltYWdlVXJpIiwidGFncyIsInJlZ2lvbiIsInJlcG9zaXRvcnlOYW1lIiwiaW1hZ2VUYWciLCJBV1MiLCJFQ1IiLCJpbWFnZU1hbmlmZXN0IiwiYmF0Y2hHZXRJbWFnZSIsImltYWdlSWRzIiwicHJvbWlzZSIsInRoZW4iLCJyIiwiaW1hZ2VzIiwiRXJyb3IiLCJ0YWciLCJjb25zb2xlIiwiZXJyb3IiLCJwdXRJbWFnZSIsInN1YnN0cmluZyIsImluZGV4T2YiLCJjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0E7O0FBQ0E7Ozs7QUFKQTtBQUNBO0FBQ0E7QUFJZSxlQUFlQSxXQUFmLENBQTJCO0FBQ3hDQyxFQUFBQSxHQUR3QztBQUV4Q0MsRUFBQUEsU0FGd0M7QUFHeENDLEVBQUFBLFFBSHdDO0FBSXhDQyxFQUFBQTtBQUp3QyxDQUEzQixFQVVHO0FBQ2hCLFFBQU07QUFBRUMsSUFBQUEsTUFBRjtBQUFVQyxJQUFBQSxjQUFWO0FBQTBCQyxJQUFBQTtBQUExQixNQUF1QywrQkFBaUJKLFFBQWpCLENBQTdDO0FBQ0EsTUFBSSxDQUFDRixHQUFMLEVBQVVBLEdBQUcsR0FBRyxJQUFJTyxnQkFBSUMsR0FBUixDQUFZLEVBQUUsR0FBR1AsU0FBTDtBQUFnQkcsSUFBQUE7QUFBaEIsR0FBWixDQUFOO0FBRVYsUUFBTUssYUFBYSxHQUFHLE1BQU1ULEdBQUcsQ0FDNUJVLGFBRHlCLENBQ1g7QUFDYkwsSUFBQUEsY0FEYTtBQUViTSxJQUFBQSxRQUFRLEVBQUUsQ0FBQztBQUFFTCxNQUFBQTtBQUFGLEtBQUQ7QUFGRyxHQURXLEVBS3pCTSxPQUx5QixHQU16QkMsSUFOeUIsQ0FNbkJDLENBQUQ7QUFBQTs7QUFBQSxXQUFPQSxDQUFQLGFBQU9BLENBQVAsb0NBQU9BLENBQUMsQ0FBRUMsTUFBViw0REFBTyxVQUFZLENBQVosQ0FBUCwrQ0FBTyxXQUFnQk4sYUFBdkI7QUFBQSxHQU5vQixDQUE1Qjs7QUFRQSxNQUFJLENBQUNBLGFBQUwsRUFBb0I7QUFDbEIsVUFBTSxJQUFJTyxLQUFKLENBQVcsb0NBQW1DZCxRQUFTLEVBQXZELENBQU47QUFDRDs7QUFFRCxNQUFJTyxhQUFKLEVBQW1CO0FBQ2pCO0FBQ0EsU0FBSyxNQUFNUSxHQUFYLElBQWtCZCxJQUFsQixFQUF3QjtBQUN0QjtBQUNBZSxNQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBZSxjQUFhZCxjQUFlLElBQUdZLEdBQUksRUFBbEQ7O0FBQ0EsVUFBSTtBQUNGLGNBQU1qQixHQUFHLENBQ05vQixRQURHLENBQ007QUFDUmYsVUFBQUEsY0FEUTtBQUVSSSxVQUFBQSxhQUZRO0FBR1JILFVBQUFBLFFBQVEsRUFBRVcsR0FBRyxDQUFDSSxTQUFKLENBQWNKLEdBQUcsQ0FBQ0ssT0FBSixDQUFZLEdBQVosSUFBbUIsQ0FBakM7QUFIRixTQUROLEVBTUhWLE9BTkcsRUFBTjtBQU9ELE9BUkQsQ0FRRSxPQUFPTyxLQUFQLEVBQWM7QUFDZDtBQUNBLFlBQUksQ0FBQ0EsS0FBRCxhQUFDQSxLQUFELHVCQUFDQSxLQUFELENBQWdCSSxJQUFoQixNQUF5Qiw2QkFBN0IsRUFBNEQsTUFBTUosS0FBTjtBQUM3RDtBQUNGO0FBQ0Y7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBBV1MgZnJvbSAnYXdzLXNkaydcbmltcG9ydCBwYXJzZUVDUkltYWdlVXJpIGZyb20gJy4vcGFyc2VFQ1JJbWFnZVVyaSdcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdGFnRUNSSW1hZ2Uoe1xuICBlY3IsXG4gIGF3c0NvbmZpZyxcbiAgaW1hZ2VVcmksXG4gIHRhZ3MsXG59OiB7XG4gIGVjcj86IEFXUy5FQ1JcbiAgYXdzQ29uZmlnPzogQVdTLkNvbmZpZ3VyYXRpb25PcHRpb25zXG4gIGltYWdlVXJpOiBzdHJpbmdcbiAgdGFnczogc3RyaW5nW11cbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyByZWdpb24sIHJlcG9zaXRvcnlOYW1lLCBpbWFnZVRhZyB9ID0gcGFyc2VFQ1JJbWFnZVVyaShpbWFnZVVyaSlcbiAgaWYgKCFlY3IpIGVjciA9IG5ldyBBV1MuRUNSKHsgLi4uYXdzQ29uZmlnLCByZWdpb24gfSlcblxuICBjb25zdCBpbWFnZU1hbmlmZXN0ID0gYXdhaXQgZWNyXG4gICAgLmJhdGNoR2V0SW1hZ2Uoe1xuICAgICAgcmVwb3NpdG9yeU5hbWUsXG4gICAgICBpbWFnZUlkczogW3sgaW1hZ2VUYWcgfV0sXG4gICAgfSlcbiAgICAucHJvbWlzZSgpXG4gICAgLnRoZW4oKHIpID0+IHI/LmltYWdlcz8uWzBdPy5pbWFnZU1hbmlmZXN0KVxuXG4gIGlmICghaW1hZ2VNYW5pZmVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGdldCBpbWFnZSBtYW5pZmVzdCBmb3IgJHtpbWFnZVVyaX1gKVxuICB9XG5cbiAgaWYgKGltYWdlTWFuaWZlc3QpIHtcbiAgICAvLyBhZGQgb3RoZXIgdGFncyB0byBFQ1JcbiAgICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihgQWRkaW5nIHRhZyAke3JlcG9zaXRvcnlOYW1lfToke3RhZ31gKVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZWNyXG4gICAgICAgICAgLnB1dEltYWdlKHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnlOYW1lLFxuICAgICAgICAgICAgaW1hZ2VNYW5pZmVzdCxcbiAgICAgICAgICAgIGltYWdlVGFnOiB0YWcuc3Vic3RyaW5nKHRhZy5pbmRleE9mKCc6JykgKyAxKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5wcm9taXNlKClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGlmICgoZXJyb3IgYXMgYW55KT8uY29kZSAhPT0gJ0ltYWdlQWxyZWFkeUV4aXN0c0V4Y2VwdGlvbicpIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- import AWS from 'aws-sdk';
2
- export default function upsertECRRepository({ ecr, awsConfig, repositoryName, }: {
3
- ecr?: AWS.ECR;
4
- awsConfig?: AWS.ConfigurationOptions;
5
- repositoryName: string;
6
- }): Promise<AWS.ECR.Repository>;
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = upsertECRRepository;
7
-
8
- var _awsSdk = _interopRequireDefault(require("aws-sdk"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- // @flow
13
- async function upsertECRRepository({
14
- ecr,
15
- awsConfig,
16
- repositoryName
17
- }) {
18
- if (!ecr) ecr = new _awsSdk.default.ECR(awsConfig);
19
-
20
- try {
21
- const {
22
- repositories
23
- } = await ecr.describeRepositories({
24
- repositoryNames: [repositoryName]
25
- }).promise();
26
- const repository = repositories === null || repositories === void 0 ? void 0 : repositories[0];
27
- if (repository) return repository;
28
- } catch (error) {// ignore
29
- } // eslint-disable-next-line no-console
30
-
31
-
32
- console.error(`Creating ECR repository {bold ${repositoryName}}...`);
33
- const {
34
- repository
35
- } = await ecr.createRepository({
36
- repositoryName
37
- }).promise();
38
-
39
- if (!repository) {
40
- throw new Error(`repository is missing from createRepository response`);
41
- }
42
-
43
- return repository;
44
- }
45
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cHNlcnRFQ1JSZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbInVwc2VydEVDUlJlcG9zaXRvcnkiLCJlY3IiLCJhd3NDb25maWciLCJyZXBvc2l0b3J5TmFtZSIsIkFXUyIsIkVDUiIsInJlcG9zaXRvcmllcyIsImRlc2NyaWJlUmVwb3NpdG9yaWVzIiwicmVwb3NpdG9yeU5hbWVzIiwicHJvbWlzZSIsInJlcG9zaXRvcnkiLCJlcnJvciIsImNvbnNvbGUiLCJjcmVhdGVSZXBvc2l0b3J5IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7OztBQUZBO0FBSWUsZUFBZUEsbUJBQWYsQ0FBbUM7QUFDaERDLEVBQUFBLEdBRGdEO0FBRWhEQyxFQUFBQSxTQUZnRDtBQUdoREMsRUFBQUE7QUFIZ0QsQ0FBbkMsRUFRaUI7QUFDOUIsTUFBSSxDQUFDRixHQUFMLEVBQVVBLEdBQUcsR0FBRyxJQUFJRyxnQkFBSUMsR0FBUixDQUFZSCxTQUFaLENBQU47O0FBQ1YsTUFBSTtBQUNGLFVBQU07QUFBRUksTUFBQUE7QUFBRixRQUFtQixNQUFNTCxHQUFHLENBQy9CTSxvQkFENEIsQ0FDUDtBQUFFQyxNQUFBQSxlQUFlLEVBQUUsQ0FBQ0wsY0FBRDtBQUFuQixLQURPLEVBRTVCTSxPQUY0QixFQUEvQjtBQUdBLFVBQU1DLFVBQVUsR0FBR0osWUFBSCxhQUFHQSxZQUFILHVCQUFHQSxZQUFZLENBQUcsQ0FBSCxDQUEvQjtBQUNBLFFBQUlJLFVBQUosRUFBZ0IsT0FBT0EsVUFBUDtBQUNqQixHQU5ELENBTUUsT0FBT0MsS0FBUCxFQUFjLENBQ2Q7QUFDRCxHQVY2QixDQVk5Qjs7O0FBQ0FDLEVBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFlLGlDQUFnQ1IsY0FBZSxNQUE5RDtBQUNBLFFBQU07QUFBRU8sSUFBQUE7QUFBRixNQUFpQixNQUFNVCxHQUFHLENBQzdCWSxnQkFEMEIsQ0FDVDtBQUFFVixJQUFBQTtBQUFGLEdBRFMsRUFFMUJNLE9BRjBCLEVBQTdCOztBQUdBLE1BQUksQ0FBQ0MsVUFBTCxFQUFpQjtBQUNmLFVBQU0sSUFBSUksS0FBSixDQUFXLHNEQUFYLENBQU47QUFDRDs7QUFDRCxTQUFPSixVQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuXG5pbXBvcnQgQVdTIGZyb20gJ2F3cy1zZGsnXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHVwc2VydEVDUlJlcG9zaXRvcnkoe1xuICBlY3IsXG4gIGF3c0NvbmZpZyxcbiAgcmVwb3NpdG9yeU5hbWUsXG59OiB7XG4gIGVjcj86IEFXUy5FQ1JcbiAgYXdzQ29uZmlnPzogQVdTLkNvbmZpZ3VyYXRpb25PcHRpb25zXG4gIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmdcbn0pOiBQcm9taXNlPEFXUy5FQ1IuUmVwb3NpdG9yeT4ge1xuICBpZiAoIWVjcikgZWNyID0gbmV3IEFXUy5FQ1IoYXdzQ29uZmlnKVxuICB0cnkge1xuICAgIGNvbnN0IHsgcmVwb3NpdG9yaWVzIH0gPSBhd2FpdCBlY3JcbiAgICAgIC5kZXNjcmliZVJlcG9zaXRvcmllcyh7IHJlcG9zaXRvcnlOYW1lczogW3JlcG9zaXRvcnlOYW1lXSB9KVxuICAgICAgLnByb21pc2UoKVxuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSByZXBvc2l0b3JpZXM/LlswXVxuICAgIGlmIChyZXBvc2l0b3J5KSByZXR1cm4gcmVwb3NpdG9yeVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIGlnbm9yZVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihgQ3JlYXRpbmcgRUNSIHJlcG9zaXRvcnkge2JvbGQgJHtyZXBvc2l0b3J5TmFtZX19Li4uYClcbiAgY29uc3QgeyByZXBvc2l0b3J5IH0gPSBhd2FpdCBlY3JcbiAgICAuY3JlYXRlUmVwb3NpdG9yeSh7IHJlcG9zaXRvcnlOYW1lIH0pXG4gICAgLnByb21pc2UoKVxuICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHJlcG9zaXRvcnkgaXMgbWlzc2luZyBmcm9tIGNyZWF0ZVJlcG9zaXRvcnkgcmVzcG9uc2VgKVxuICB9XG4gIHJldHVybiByZXBvc2l0b3J5XG59XG4iXX0=
File without changes