build-strap 3.0.0-dev.42 → 4.0.0-dev.2

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 (108) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -34
  3. package/ant.d.ts +19 -0
  4. package/ant.js +12 -37
  5. package/cert.d.ts +12 -0
  6. package/cert.js +89 -151
  7. package/clean.d.ts +4 -0
  8. package/clean.js +7 -16
  9. package/copy.d.ts +7 -0
  10. package/copy.js +49 -76
  11. package/cp.d.ts +17 -0
  12. package/cp.js +85 -170
  13. package/docker.container.d.ts +73 -0
  14. package/docker.container.js +219 -362
  15. package/docker.d.ts +68 -0
  16. package/docker.js +167 -347
  17. package/docker.network.d.ts +42 -0
  18. package/docker.network.js +69 -144
  19. package/docker.volume.d.ts +26 -0
  20. package/docker.volume.js +52 -126
  21. package/dockerCleanup.d.ts +38 -0
  22. package/dockerCleanup.js +66 -141
  23. package/dockerCompose.d.ts +154 -0
  24. package/dockerCompose.js +400 -727
  25. package/fs.d.ts +5 -0
  26. package/fs.js +38 -95
  27. package/git.d.ts +9 -0
  28. package/git.js +19 -30
  29. package/index.d.ts +20 -0
  30. package/index.js +20 -27
  31. package/maps.d.ts +33 -0
  32. package/maps.js +16 -87
  33. package/npm.d.ts +34 -0
  34. package/npm.js +97 -138
  35. package/package.json +23 -19
  36. package/pkg.d.ts +39 -0
  37. package/pkg.js +26 -74
  38. package/publish.d.ts +27 -0
  39. package/publish.js +52 -140
  40. package/run.d.ts +13 -0
  41. package/run.js +39 -85
  42. package/tgz.d.ts +13 -0
  43. package/tgz.js +61 -96
  44. package/version.d.ts +34 -0
  45. package/version.js +86 -127
  46. package/yarn.d.ts +26 -0
  47. package/yarn.js +70 -119
  48. package/ant.js.flow +0 -42
  49. package/artifactory.js +0 -617
  50. package/artifactory.js.flow +0 -616
  51. package/cert.conf +0 -20
  52. package/cert.js.flow +0 -152
  53. package/clean.js.flow +0 -19
  54. package/copy.js.flow +0 -79
  55. package/cp.js.flow +0 -172
  56. package/docker.container.js.flow +0 -389
  57. package/docker.js.flow +0 -367
  58. package/docker.network.js.flow +0 -159
  59. package/docker.volume.js.flow +0 -136
  60. package/dockerCleanup.js.flow +0 -151
  61. package/dockerCompose.js.flow +0 -765
  62. package/flow.js +0 -21
  63. package/flow.js.flow +0 -20
  64. package/fs.js.flow +0 -96
  65. package/git.js.flow +0 -34
  66. package/hg.js +0 -35
  67. package/hg.js.flow +0 -34
  68. package/index.js.flow +0 -26
  69. package/inline-resources.js +0 -158
  70. package/inline-resources.js.flow +0 -157
  71. package/maps.js.flow +0 -111
  72. package/npm.js.flow +0 -144
  73. package/pkg.js.flow +0 -80
  74. package/publish.js.flow +0 -144
  75. package/run.js.flow +0 -89
  76. package/src/ant.js +0 -42
  77. package/src/artifactory.js +0 -616
  78. package/src/cert.conf +0 -20
  79. package/src/cert.js +0 -152
  80. package/src/clean.js +0 -19
  81. package/src/copy.js +0 -79
  82. package/src/cp.js +0 -172
  83. package/src/docker.container.js +0 -389
  84. package/src/docker.js +0 -367
  85. package/src/docker.network.js +0 -159
  86. package/src/docker.volume.js +0 -136
  87. package/src/dockerCleanup.js +0 -151
  88. package/src/dockerCompose.js +0 -765
  89. package/src/flow.js +0 -20
  90. package/src/fs.js +0 -96
  91. package/src/git.js +0 -34
  92. package/src/hg.js +0 -34
  93. package/src/index.js +0 -26
  94. package/src/inline-resources.js +0 -157
  95. package/src/maps.js +0 -111
  96. package/src/npm.js +0 -144
  97. package/src/pkg.js +0 -80
  98. package/src/publish.js +0 -144
  99. package/src/run.js +0 -89
  100. package/src/test.js +0 -55
  101. package/src/tgz.js +0 -101
  102. package/src/version.js +0 -141
  103. package/src/yarn.js +0 -123
  104. package/test.js +0 -56
  105. package/test.js.flow +0 -55
  106. package/tgz.js.flow +0 -101
  107. package/version.js.flow +0 -141
  108. package/yarn.js.flow +0 -123
package/dockerCleanup.js CHANGED
@@ -1,152 +1,77 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.dockerImageCleanup = exports.dockerContainerCleanup = exports.dockerCleanup = exports.default = void 0;
2
- var _uniq = _interopRequireDefault(require("lodash/uniq"));
3
- var _docker = require("./docker");
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
- var _docker2 = require("./docker.container");
12
- var _run = require("./run");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
13
-
1
+ import { uniq } from 'lodash-es';
2
+ import moment from 'moment';
3
+ import { dockerContainerLs } from './docker.container.js';
4
+ import { dockerImages, dockerRmi, getDockerRepo, getDockerTags, getUntaggedDockerIds, } from './docker.js';
5
+ import { buildLog } from './run.js';
14
6
  // flattens arrays of promises and/or promises for arrays
15
7
  // into a single array of (awaited) values
16
- const flatten = async (input) => {
17
- const result = await input;
18
- return Array.isArray(result) ?
19
- [].concat(...(await Promise.all(result.map(flatten)))) :
20
- result;
21
- };
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
8
+ async function flatten(input) {
9
+ const result = await input;
10
+ return Array.isArray(result)
11
+ ? [].concat(...(await Promise.all(result.map(flatten))))
12
+ : result;
13
+ }
32
14
  /**
33
15
  * Purge stopped containers
34
16
  */
35
- const dockerContainerCleanup = async ({
36
- dryRun = process.argv.includes('--dry-run') } =
37
- {}) => {
38
- const toClean = await (0, _docker2.dockerContainerLs)({
39
- all: true,
40
- filter: (c) => c.exited });
41
-
42
- if (dryRun) {
43
- (0, _run.buildLog)(
44
- `Containers to delete (dry run):\n ${toClean.
45
- map((c) => c.id).
46
- join('\n ')}`);
47
-
48
- } else {
49
- await Promise.all(toClean.map(async (c) => c.rm(true)));
50
- }
51
- };exports.dockerContainerCleanup = dockerContainerCleanup;
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
17
+ export const dockerContainerCleanup = async ({ dryRun = process.argv.includes('--dry-run'), } = {}) => {
18
+ const toClean = await dockerContainerLs({
19
+ all: true,
20
+ filter: (c) => c.exited,
21
+ });
22
+ if (dryRun) {
23
+ if (toClean) {
24
+ buildLog(`Containers to delete (dry run):\n ${toClean
25
+ .map((c) => c.id)
26
+ .join('\n ')}`);
27
+ }
28
+ else {
29
+ buildLog('No containers to delete (dry run)');
30
+ }
31
+ }
32
+ else if (toClean) {
33
+ await Promise.all(toClean.map(async (c) => c.rm(true)));
34
+ }
35
+ };
74
36
  /**
75
37
  * Purge docker images created during build process
76
38
  */
77
- const dockerImageCleanup = async ({
78
- repos = [(0, _docker.getDockerRepo)()],
79
- buildImageIds = [],
80
- images = [],
81
- purgeAll = process.argv.includes('--purge-all'),
82
- purgeOld = !process.argv.includes('--keep-old'),
83
- dryRun = process.argv.includes('--dry-run') } =
84
- {}) => {
85
- // only match images without a :latest tag
86
- const filterLatest = (m) =>
87
- purgeAll || !m.tag.match(/^latest(-\w+)?$/);
88
- // only match images more than an hour old, AND without a :latest* tag
89
- const filterOld = (m) =>
90
- purgeAll || filterLatest(m) && m.created < Date.now() - 1000 * 60 * 60;
91
-
92
- const uniqueList = (0, _uniq.default)([
93
- // the things that we know were just built by us
94
- // remove all tags from the given repos with a matching `buildImageIds`, except for :latest*
95
- ...(await flatten(
96
- repos.map((r) =>
97
- buildImageIds.map(async (b) => (0, _docker.getDockerTags)(b, r, true, filterLatest))))),
98
-
99
-
100
-
101
- // unconditionally delete explicitly passed images/ids
102
- ...images,
103
-
104
- // images in the given `repos` without a tag, older than 1hr
105
- ...(await flatten(
106
- repos.map(async (r) => (0, _docker.getUntaggedDockerIds)(r, filterOld)))),
107
-
108
-
109
- // images with no repo and no tag
110
- ...(
111
- await (0, _docker.dockerImages)(
112
- null,
113
- (m) => m.repository === '<none>' && m.tag === '<none>' && filterOld(m))).
114
-
115
- map((m) => m.id),
116
-
117
- // any leftover tags from prior builds (only if purgeAll or purgeOld)
118
- ...(purgeAll || purgeOld ?
119
- await flatten(
120
- repos.map(async (r) => (0, _docker.getDockerTags)(null, r, true, filterOld))) :
121
-
122
- [])]);
123
-
124
-
125
- if (dryRun) {
126
- (0, _run.buildLog)(`Images to delete (dry run):\n ${uniqueList.join('\n ')}`);
127
- } else {
128
- await (0, _docker.dockerRmi)(uniqueList, true);
129
- }
130
- };exports.dockerImageCleanup = dockerImageCleanup;
131
-
132
-
133
-
134
-
135
-
136
-
39
+ export const dockerImageCleanup = async ({ repos = [getDockerRepo()], buildImageIds = [], images = [], purgeAll = process.argv.includes('--purge-all'), purgeOld = !process.argv.includes('--keep-old'), dryRun = process.argv.includes('--dry-run'), } = {}) => {
40
+ // only match images without a :latest tag
41
+ const filterLatest = (m) => purgeAll || !m.tag.match(/^latest(-\w+)?$/);
42
+ // only match images more than an hour old, AND without a :latest* tag
43
+ const filterOld = (m) => purgeAll ||
44
+ (filterLatest(m) && moment().subtract(1, 'h').isAfter(m.created));
45
+ const uniqueList = uniq([
46
+ // the things that we know were just built by us
47
+ // remove all tags from the given repos with a matching `buildImageIds`, except for :latest*
48
+ ...(await flatten(repos.map((r) => buildImageIds.map(async (b) => getDockerTags(b, r, true, filterLatest))))),
49
+ // unconditionally delete explicitly passed images/ids
50
+ ...images,
51
+ // images in the given `repos` without a tag, older than 1hr
52
+ ...(await flatten(repos.map(async (r) => getUntaggedDockerIds(r, filterOld)))),
53
+ // images with no repo and no tag
54
+ ...(await dockerImages(null, (m) => m.repository === '<none>' && m.tag === '<none>' && filterOld(m))).map((m) => m.id),
55
+ // any leftover tags from prior builds (only if purgeAll or purgeOld)
56
+ ...(purgeAll || purgeOld
57
+ ? await flatten(repos.map(async (r) => getDockerTags(null, r, true, filterOld)))
58
+ : []),
59
+ ]);
60
+ if (dryRun) {
61
+ buildLog(`Images to delete (dry run):\n ${uniqueList.join('\n ')}`);
62
+ }
63
+ else {
64
+ await dockerRmi(uniqueList, true);
65
+ }
66
+ };
137
67
  /**
138
68
  * Purge docker images created during build process
139
69
  */
140
- const dockerCleanup = async ({
141
- dryRun,
142
- ...rest } =
143
- {}) => {
144
- await dockerContainerCleanup({ dryRun });
145
- await dockerImageCleanup({
146
- dryRun,
147
- ...rest });
148
-
149
- };exports.dockerCleanup = dockerCleanup;var _default =
150
-
151
- dockerCleanup;exports.default = _default;
152
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb2NrZXJDbGVhbnVwLmpzIl0sIm5hbWVzIjpbImZsYXR0ZW4iLCJpbnB1dCIsInJlc3VsdCIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkb2NrZXJDb250YWluZXJDbGVhbnVwIiwiZHJ5UnVuIiwicHJvY2VzcyIsImFyZ3YiLCJpbmNsdWRlcyIsInRvQ2xlYW4iLCJmaWx0ZXIiLCJjIiwiZXhpdGVkIiwiaWQiLCJqb2luIiwicm0iLCJkb2NrZXJJbWFnZUNsZWFudXAiLCJyZXBvcyIsImJ1aWxkSW1hZ2VJZHMiLCJpbWFnZXMiLCJwdXJnZUFsbCIsInB1cmdlT2xkIiwiZmlsdGVyTGF0ZXN0IiwibSIsInRhZyIsIm1hdGNoIiwiZmlsdGVyT2xkIiwiY3JlYXRlZCIsIkRhdGUiLCJub3ciLCJ1bmlxdWVMaXN0IiwiciIsImIiLCJyZXBvc2l0b3J5IiwiZG9ja2VyQ2xlYW51cCIsInJlc3QiXSwibWFwcGluZ3MiOiI7QUFDQTtBQUNBOzs7Ozs7OztBQVFBO0FBQ0EsNEI7O0FBRUE7QUFDQTtBQUNBLE1BQU1BLE9BQU8sR0FBRyxPQUFPQyxLQUFQLEtBQWlCO0FBQy9CLFFBQU1DLE1BQU0sR0FBRyxNQUFNRCxLQUFyQjtBQUNBLFNBQU9FLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkO0FBQ0gsS0FBR0csTUFBSCxDQUFVLElBQUksTUFBTUMsT0FBTyxDQUFDQyxHQUFSLENBQVlMLE1BQU0sQ0FBQ00sR0FBUCxDQUFXUixPQUFYLENBQVosQ0FBVixDQUFWLENBREc7QUFFSEUsRUFBQUEsTUFGSjtBQUdELENBTEQ7Ozs7Ozs7Ozs7O0FBZ0JBO0FBQ0E7QUFDQTtBQUNPLE1BQU1PLHNCQUFzQixHQUFHLE9BQU87QUFDM0NDLEVBQUFBLE1BQU0sR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWFDLFFBQWIsQ0FBc0IsV0FBdEIsQ0FEa0M7QUFFVixFQUZHLEtBRUk7QUFDeEMsUUFBTUMsT0FBTyxHQUFH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QixFQUF1QixJQUF2QixFQUE2QkwsU0FBN0IsQ0FBdkIsQ0FEVyxDQURiOztBQUlBLElBSkosQ0ExQnNCLENBQUwsQ0FBbkI7OztBQWlDQSxNQUFJckIsTUFBSixFQUFZO0FBQ1YsdUJBQVUsa0NBQWlDeUIsVUFBVSxDQUFDaEIsSUFBWCxDQUFnQixNQUFoQixDQUF3QixFQUFuRTtBQUNELEdBRkQsTUFFTztBQUNMLFVBQU0sdUJBQVVnQixVQUFWLEVBQXNCLElBQXRCLENBQU47QUFDRDtBQUNGLENBckRNLEM7Ozs7Ozs7QUE0RFA7QUFDQTtBQUNBO0FBQ08sTUFBTUksYUFBYSxHQUFHLE9BQU87QUFDbEM3QixFQUFBQSxNQURrQztBQUVsQyxLQUFHOEIsSUFGK0I7QUFHVixFQUhHLEtBR0k7QUFDL0IsUUFBTS9CLHNCQUFzQixDQUFDLEVBQUVDLE1BQUYsRUFBRCxDQUE1QjtBQUNBLFFBQU1XLGtCQUFrQixDQUFDO0FBQ3ZCWCxJQUFBQSxNQUR1QjtBQUV2QixPQUFHOEIsSUFGb0IsRUFBRCxDQUF4Qjs7QUFJRCxDQVRNLEM7O0FBV1FELGEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IHtcbiAgZG9ja2VySW1hZ2VzLFxuICBkb2NrZXJSbWksXG4gIGdldFVudGFnZ2VkRG9ja2VySWRzLFxuICBnZXREb2NrZXJUYWdzLFxuICBnZXREb2NrZXJSZXBvLFxufSBmcm9tICcuL2RvY2tlcic7XG5pbXBvcnQgdHlwZSB7IERvY2tlckltYWdlLCBEb2NrZXJJbWFnZUZpbHRlciB9IGZyb20gJy4vZG9ja2VyJztcbmltcG9ydCB7IGRvY2tlckNvbnRhaW5lckxzIH0gZnJvbSAnLi9kb2NrZXIuY29udGFpbmVyJztcbmltcG9ydCB7IGJ1aWxkTG9nIH0gZnJvbSAnLi9ydW4nO1xuXG4vLyBmbGF0dGVucyBhcnJheXMgb2YgcHJvbWlzZXMgYW5kL29yIHByb21pc2VzIGZvciBhcnJheXNcbi8vIGludG8gYSBzaW5nbGUgYXJyYXkgb2YgKGF3YWl0ZWQpIHZhbHVlc1xuY29uc3QgZmxhdHRlbiA9IGFzeW5jIChpbnB1dCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbnB1dDtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmVzdWx0KVxuICAgID8gW10uY29uY2F0KC4uLihhd2FpdCBQcm9taXNlLmFsbChyZXN1bHQubWFwKGZsYXR0ZW4pKSkpXG4gICAgOiByZXN1bHQ7XG59O1xuXG50eXBlIENvbW1vbkRvY2tlckNsZWFudXBPcHRpb25zID0ge3xcbiAgLyoqIHByaW50IG1hdGNoZWQgaXRlbXMgdG8gY29uc29sZSBpbnN0ZWFkIG9mIGRlbGV0aW5nICovXG4gIGRyeVJ1bj86IGJvb2xlYW4sXG58fTtcblxudHlwZSBEb2NrZXJDb250YWluZXJDbGVhbnVwT3B0aW9ucyA9IHt8XG4gIC4uLkNvbW1vbkRvY2tlckNsZWFudXBPcHRpb25zLFxufH07XG5cbi8qKlxuICogUHVyZ2Ugc3RvcHBlZCBjb250YWluZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBkb2NrZXJDb250YWluZXJDbGVhbnVwID0gYXN5bmMgKHtcbiAgZHJ5UnVuID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLWRyeS1ydW4nKSxcbn06IERvY2tlckNvbnRhaW5lckNsZWFudXBPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgdG9DbGVhbiA9IGF3YWl0IGRvY2tlckNvbnRhaW5lckxzKHtcbiAgICBhbGw6IHRydWUsXG4gICAgZmlsdGVyOiAoYykgPT4gYy5leGl0ZWQsXG4gIH0pO1xuICBpZiAoZHJ5UnVuKSB7XG4gICAgYnVpbGRMb2coXG4gICAgICBgQ29udGFpbmVycyB0byBkZWxldGUgKGRyeSBydW4pOlxcbiAgJHt0b0NsZWFuXG4gICAgICAgIC5tYXAoKGMpID0+IGMuaWQpXG4gICAgICAgIC5qb2luKCdcXG4gICcpfWAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0b0NsZWFuLm1hcChhc3luYyAoYykgPT4gYy5ybSh0cnVlKSkpO1xuICB9XG59O1xuXG50eXBlIERvY2tlckltYWdlQ2xlYW51cE9wdGlvbnMgPSB7fFxuICAuLi5Db21tb25Eb2NrZXJDbGVhbnVwT3B0aW9ucyxcbiAgLyoqIEltYWdlIHJlcG9zaXRvcmllcyB0byBjbGVhbiAoZGVmYXVsdHMgdG8gdGhlIG9uZSBjb25maWd1cmVkIGluIHBhY2thZ2UuanNvbikgKi9cbiAgcmVwb3M/OiBzdHJpbmdbXSxcbiAgLyoqIEltYWdlIGlkcyBrbm93biB0byBiZSBwcm9kdWNlZCBieSB0aGlzIGJ1aWxkICovXG4gIGJ1aWxkSW1hZ2VJZHM/OiBzdHJpbmdbXSxcbiAgLyoqIEV4cGxpY2l0IGltYWdlIG5hbWVzL2lkcyB0byBkZWxldGUgdW5jb25kaXRpb25hbGx5ICovXG4gIGltYWdlcz86IHN0cmluZ1tdLFxuICAvKipcbiAgICogaWdub3JlIGRlZmF1bHQgZXhjbHVzaW9ucyBvZiA6bGF0ZXN0KiBhbmQgaW1hZ2VzIDwgMWhyIG9sZFxuICAgKiB0aGlzIHdpbGwgZGVsZXRlIGFsbCBpbWFnZXMgaW4gdGhlIGdpdmVuIHJlcG9zXG4gICAqL1xuICBwdXJnZUFsbD86IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBsb29rcyBmb3Igb3RoZXIgYnVpbGRzIG9mIHRoZSBzYW1lIHJlcG9zXG4gICAqIHRoaXMgd2lsbCBzdGlsbCBleGNsdWRlIDpsYXRlc3QqIGFuZCBpbWFnZXMgPCAxaHIgb2xkXG4gICAqIHVzZWZ1bCB0byBjbGVhbiB1cCBhZnRlciBwYXN0IGJ1aWxkcyB0aGF0IGZhaWxlZCB0byBjbGVhbiB0aGVtc2VsdmVzIHByb3Blcmx5XG4gICAqL1xuICBwdXJnZU9sZD86IGJvb2xlYW4sXG58fTtcblxuLyoqXG4gKiBQdXJnZSBkb2NrZXIgaW1hZ2VzIGNyZWF0ZWQgZHVyaW5nIGJ1aWxkIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGNvbnN0IGRvY2tlckltYWdlQ2xlYW51cCA9IGFzeW5jICh7XG4gIHJlcG9zID0gW2dldERvY2tlclJlcG8oKV0sXG4gIGJ1aWxkSW1hZ2VJZHMgPSBbXSxcbiAgaW1hZ2VzID0gW10sXG4gIHB1cmdlQWxsID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXB1cmdlLWFsbCcpLFxuICBwdXJnZU9sZCA9ICFwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0ta2VlcC1vbGQnKSxcbiAgZHJ5UnVuID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLWRyeS1ydW4nKSxcbn06IERvY2tlckltYWdlQ2xlYW51cE9wdGlvbnMgPSB7fSkgPT4ge1xuICAvLyBvbmx5IG1hdGNoIGltYWdlcyB3aXRob3V0IGEgOmxhdGVzdCB0YWdcbiAgY29uc3QgZmlsdGVyTGF0ZXN0OiBEb2NrZXJJbWFnZUZpbHRlciA9IChtOiBEb2NrZXJJbWFnZSkgPT5cbiAgICBwdXJnZUFsbCB8fCAhbS50YWcubWF0Y2goL15sYXRlc3QoLVxcdyspPyQvKTtcbiAgLy8gb25seSBtYXRjaCBpbWFnZXMgbW9yZSB0aGFuIGFuIGhvdXIgb2xkLCBBTkQgd2l0aG91dCBhIDpsYXRlc3QqIHRhZ1xuICBjb25zdCBmaWx0ZXJPbGQ6IERvY2tlckltYWdlRmlsdGVyID0gKG06IERvY2tlckltYWdlKSA9PlxuICAgIHB1cmdlQWxsIHx8IChmaWx0ZXJMYXRlc3QobSkgJiYgbS5jcmVhdGVkIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCAqIDYwKTtcblxuICBjb25zdCB1bmlxdWVMaXN0ID0gdW5pcShbXG4gICAgLy8gdGhlIHRoaW5ncyB0aGF0IHdlIGtub3cgd2VyZSBqdXN0IGJ1aWx0IGJ5IHVzXG4gICAgLy8gcmVtb3ZlIGFsbCB0YWdzIGZyb20gdGhlIGdpdmVuIHJlcG9zIHdpdGggYSBtYXRjaGluZyBgYnVpbGRJbWFnZUlkc2AsIGV4Y2VwdCBmb3IgOmxhdGVzdCpcbiAgICAuLi4oYXdhaXQgZmxhdHRlbihcbiAgICAgIHJlcG9zLm1hcCgocikgPT5cbiAgICAgICAgYnVpbGRJbWFnZUlkcy5tYXAoYXN5bmMgKGIpID0+IGdldERvY2tlclRhZ3MoYiwgciwgdHJ1ZSwgZmlsdGVyTGF0ZXN0KSksXG4gICAgICApLFxuICAgICkpLFxuXG4gICAgLy8gdW5jb25kaXRpb25hbGx5IGRlbGV0ZSBleHBsaWNpdGx5IHBhc3NlZCBpbWFnZXMvaWRzXG4gICAgLi4uaW1hZ2VzLFxuXG4gICAgLy8gaW1hZ2VzIGluIHRoZSBnaXZlbiBgcmVwb3NgIHdpdGhvdXQgYSB0YWcsIG9sZGVyIHRoYW4gMWhyXG4gICAgLi4uKGF3YWl0IGZsYXR0ZW4oXG4gICAgICByZXBvcy5tYXAoYXN5bmMgKHIpID0+IGdldFVudGFnZ2VkRG9ja2VySWRzKHIsIGZpbHRlck9sZCkpLFxuICAgICkpLFxuXG4gICAgLy8gaW1hZ2VzIHdpdGggbm8gcmVwbyBhbmQgbm8gdGFnXG4gICAgLi4uKFxuICAgICAgYXdhaXQgZG9ja2VySW1hZ2VzKFxuICAgICAgICBudWxsLFxuICAgICAgICAobSkgPT4gbS5yZXBvc2l0b3J5ID09PSAnPG5vbmU+JyAmJiBtLnRhZyA9PT0gJzxub25lPicgJiYgZmlsdGVyT2xkKG0pLFxuICAgICAgKVxuICAgICkubWFwKChtKSA9PiBtLmlkKSxcblxuICAgIC8vIGFueSBsZWZ0b3ZlciB0YWdzIGZyb20gcHJpb3IgYnVpbGRzIChvbmx5IGlmIHB1cmdlQWxsIG9yIHB1cmdlT2xkKVxuICAgIC4uLihwdXJnZUFsbCB8fCBwdXJnZU9sZFxuICAgICAgPyBhd2FpdCBmbGF0dGVuKFxuICAgICAgICAgIHJlcG9zLm1hcChhc3luYyAocikgPT4gZ2V0RG9ja2VyVGFncyhudWxsLCByLCB0cnVlLCBmaWx0ZXJPbGQpKSxcbiAgICAgICAgKVxuICAgICAgOiBbXSksXG4gIF0pO1xuXG4gIGlmIChkcnlSdW4pIHtcbiAgICBidWlsZExvZyhgSW1hZ2VzIHRvIGRlbGV0ZSAoZHJ5IHJ1bik6XFxuICAke3VuaXF1ZUxpc3Quam9pbignXFxuICAnKX1gKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBkb2NrZXJSbWkodW5pcXVlTGlzdCwgdHJ1ZSk7XG4gIH1cbn07XG5cbnR5cGUgRG9ja2VyQ2xlYW51cE9wdGlvbnMgPSB7fFxuICAuLi5Eb2NrZXJJbWFnZUNsZWFudXBPcHRpb25zLFxuICAuLi5Eb2NrZXJDb250YWluZXJDbGVhbnVwT3B0aW9ucyxcbnx9O1xuXG4vKipcbiAqIFB1cmdlIGRvY2tlciBpbWFnZXMgY3JlYXRlZCBkdXJpbmcgYnVpbGQgcHJvY2Vzc1xuICovXG5leHBvcnQgY29uc3QgZG9ja2VyQ2xlYW51cCA9IGFzeW5jICh7XG4gIGRyeVJ1bixcbiAgLi4ucmVzdFxufTogRG9ja2VyQ2xlYW51cE9wdGlvbnMgPSB7fSkgPT4ge1xuICBhd2FpdCBkb2NrZXJDb250YWluZXJDbGVhbnVwKHsgZHJ5UnVuIH0pO1xuICBhd2FpdCBkb2NrZXJJbWFnZUNsZWFudXAoe1xuICAgIGRyeVJ1bixcbiAgICAuLi5yZXN0LFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRvY2tlckNsZWFudXA7XG4iXX0=
70
+ export const dockerCleanup = async ({ dryRun, ...rest } = {}) => {
71
+ await dockerContainerCleanup({ dryRun });
72
+ await dockerImageCleanup({
73
+ dryRun,
74
+ ...rest,
75
+ });
76
+ };
77
+ export default dockerCleanup;
@@ -0,0 +1,154 @@
1
+ import { DockerContainer } from './docker.container.js';
2
+ import { DockerNetwork, DockerNetworkCreateOptions } from './docker.network.js';
3
+ import { DockerVolume, DockerVolumeCreateOptions } from './docker.volume.js';
4
+ export declare type DockerComposeResourceTracker = {
5
+ cleaning: null | Promise<void>;
6
+ containers: Map<string, DockerContainer>;
7
+ networks: Map<string, DockerNetwork>;
8
+ services: Map<string, DockerComposeService>;
9
+ volumes: Map<string, DockerVolume>;
10
+ };
11
+ export declare const dockerComposeCreateResourceTracker: () => DockerComposeResourceTracker;
12
+ declare type DockerComposeEnvDef = string[] | Record<string, string>;
13
+ declare type DockerComposeULimitDef = number | {
14
+ hard: number;
15
+ soft: number;
16
+ };
17
+ declare type DockerComposeULimitsDef = Record<string, DockerComposeULimitDef>;
18
+ interface DockerComposeServiceDef {
19
+ command?: string[];
20
+ container_name?: string;
21
+ environment?: DockerComposeEnvDef;
22
+ image?: string;
23
+ links?: string[];
24
+ networks?: string[];
25
+ ports?: string[];
26
+ ulimits?: DockerComposeULimitsDef;
27
+ volumes?: string[];
28
+ }
29
+ interface DockerComposeVolumeDef extends DockerVolumeCreateOptions {
30
+ name?: string;
31
+ }
32
+ interface DockerComposeNetworkDef extends DockerNetworkCreateOptions {
33
+ name?: string;
34
+ }
35
+ interface DockerCompose {
36
+ networks?: Record<string, DockerComposeNetworkDef>;
37
+ services?: Record<string, DockerComposeServiceDef>;
38
+ version: string;
39
+ volumes?: Record<string, DockerComposeVolumeDef>;
40
+ }
41
+ /**
42
+ * Parse a docker-compose.yml file into a pojo representation
43
+ * @param {string} filePath Path to the docker-compose.yml file
44
+ */
45
+ export declare const dockerComposeParse: (filePath?: string) => Promise<DockerCompose>;
46
+ /**
47
+ * Get the main docker-compose.yml from the root of the repo
48
+ * @param {boolean} force Force reload from file
49
+ */
50
+ export declare const dockerComposeGetMain: (force?: boolean) => Promise<DockerCompose>;
51
+ interface PortMap {
52
+ docker: number;
53
+ local: null | number;
54
+ localDefault: number;
55
+ }
56
+ interface UrlMap {
57
+ docker: null | string;
58
+ local: null | string;
59
+ }
60
+ interface ParsedPortInfo {
61
+ ports: PortMap[];
62
+ runArgs: string[];
63
+ }
64
+ interface ParsedVolumeInfo {
65
+ runArgs: string[];
66
+ volumes: string[];
67
+ }
68
+ interface ParsedNetworkInfo {
69
+ networks: string[];
70
+ runArgs: string[];
71
+ }
72
+ export declare const dockerComposeCreateNetworks: (names?: string[] | null | undefined, dockerCompose?: string | DockerCompose | null | undefined, tracker?: DockerComposeResourceTracker) => Promise<void>;
73
+ export declare const dockerComposeCreateVolumes: (names?: string[] | undefined, dockerCompose?: string | DockerCompose | null | undefined, tracker?: DockerComposeResourceTracker) => Promise<void>;
74
+ declare type HealthCheckFn = (result: UpResult) => Promise<void>;
75
+ interface UpOptions {
76
+ avoidConflicts?: boolean;
77
+ cmd?: string[];
78
+ healthCheck?: HealthCheckFn;
79
+ mapPorts?: boolean;
80
+ mapVolumes?: boolean;
81
+ tracker?: DockerComposeResourceTracker;
82
+ }
83
+ interface ServiceNameInfo {
84
+ aliases: string[];
85
+ name: string;
86
+ suffix: string;
87
+ }
88
+ interface UpResult {
89
+ aliases: string[];
90
+ container: DockerContainer;
91
+ containerName: string;
92
+ ports: PortMap[];
93
+ service: DockerComposeService;
94
+ urls: UrlMap[];
95
+ volumes: string[];
96
+ }
97
+ export declare class DockerComposeService {
98
+ #private;
99
+ constructor(name: string, serviceDef: DockerComposeServiceDef, dockerCompose?: null | (DockerCompose | string));
100
+ get name(): string;
101
+ get serviceDef(): DockerComposeServiceDef;
102
+ get image(): null | string;
103
+ get defaultContainerName(): string;
104
+ get cmd(): string[];
105
+ get envArgs(): string[];
106
+ /**
107
+ * Find (available) container name and alias(es)
108
+ * @param {boolean} avoidConflicts if `true`, find a container name that is unused
109
+ * @param {number} max maximum number of names to try
110
+ */
111
+ getNames(avoidConflicts?: boolean, max?: number): Promise<ServiceNameInfo>;
112
+ getPorts(avoidConflicts?: boolean, mapLocal?: boolean): Promise<ParsedPortInfo>;
113
+ getDefaultPortInfo(): Promise<ParsedPortInfo>;
114
+ getDefaultPorts(): Promise<PortMap[]>;
115
+ getDefaultPortArgs(): Promise<string[]>;
116
+ getDefaultUrls(): Promise<UrlMap[]>;
117
+ getDefaultNetworkInfo(): Promise<ParsedNetworkInfo>;
118
+ getDefaultNetworks(): Promise<string[]>;
119
+ getDefaultNetworkArgs(): Promise<string[]>;
120
+ getDefaultVolumeInfo(): Promise<ParsedVolumeInfo>;
121
+ getDefaultVolumes(): Promise<string[]>;
122
+ getDefaultVolumeArgs(): Promise<string[]>;
123
+ pull(): Promise<void>;
124
+ getBaseRunArgs(): Promise<string[]>;
125
+ assembleRunArgs(containerName?: string, aliases?: string[], additionalArgs?: null | string[]): Promise<string[]>;
126
+ getRunArgs(avoidConflicts?: boolean, mapLocalPorts?: boolean): Promise<string[]>;
127
+ up({ healthCheck, avoidConflicts, mapVolumes, mapPorts, cmd, tracker, }?: UpOptions): Promise<UpResult>;
128
+ down({ includeDefaults, includeNetworks, includeVolumes, }?: {
129
+ includeDefaults?: boolean;
130
+ includeNetworks?: boolean;
131
+ includeVolumes?: boolean;
132
+ }): Promise<void>;
133
+ static parse(name: string, force?: boolean, dockerCompose?: null | (DockerCompose | string)): Promise<null | DockerComposeService>;
134
+ static getUrls(ports: PortMap[], alias: string): UrlMap[];
135
+ }
136
+ export declare function dockerComposeGetAllServices(dockerCompose?: null | (string | DockerCompose)): Promise<Record<string, null | DockerComposeService>>;
137
+ export declare function dockerComposeTeardown({ includeDefaults, includeVolumes, includeNetworks, dockerCompose, tracker, }?: {
138
+ dockerCompose?: null | (string | DockerCompose);
139
+ includeDefaults?: boolean;
140
+ includeNetworks?: boolean;
141
+ includeVolumes?: boolean;
142
+ tracker?: DockerComposeResourceTracker;
143
+ }): Promise<void>;
144
+ export interface DockerContainerInfo extends UpResult {
145
+ dockerPort?: null | number;
146
+ dockerUrl?: null | string;
147
+ id: string;
148
+ image: string;
149
+ name?: null | string;
150
+ port?: null | number;
151
+ url?: null | string;
152
+ }
153
+ export declare function dockerComposeRunService(key: string, upOptions?: UpOptions, dockerCompose?: null | string | DockerCompose): Promise<DockerContainerInfo>;
154
+ export {};