hammerkit 1.4.0 → 1.5.0-alpha.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 (177) hide show
  1. package/.devcontainer/Dockerfile +5 -0
  2. package/.devcontainer/devcontainer.json +40 -0
  3. package/README.md +13 -86
  4. package/SUMMARY.md +43 -0
  5. package/build.schema.json +56 -2
  6. package/dist/cli.js +97 -0
  7. package/dist/cli.spec.js +5 -0
  8. package/dist/console/console-context-mock.js +11 -0
  9. package/dist/console/get-logger.js +23 -0
  10. package/dist/docker/pull.js +5 -5
  11. package/dist/docker/remove-container.js +21 -0
  12. package/dist/docker/stream.js +14 -10
  13. package/dist/docker/using-container.js +28 -0
  14. package/dist/environment/get-process-env.js +4 -4
  15. package/dist/environment/replace-env-variables.js +2 -3
  16. package/dist/executer/abort.js +13 -0
  17. package/dist/executer/check-readiness.js +25 -0
  18. package/dist/executer/create-scheduler-state.js +32 -0
  19. package/dist/executer/docker-node.js +123 -0
  20. package/dist/executer/docker-service.js +113 -0
  21. package/dist/executer/environment-mock.js +17 -0
  22. package/dist/executer/event-cache.js +165 -0
  23. package/dist/executer/execute-command.js +42 -0
  24. package/dist/executer/execute-docker.js +58 -194
  25. package/dist/executer/execute.spec.js +37 -37
  26. package/dist/executer/execution-steps.js +57 -0
  27. package/dist/executer/get-docker-executor.js +6 -100
  28. package/dist/executer/hierarchy-scheduler.js +94 -0
  29. package/dist/executer/kubernetes-service.js +64 -0
  30. package/dist/executer/label-values.js +65 -0
  31. package/dist/executer/local-node.js +57 -0
  32. package/dist/executer/print-container-options.js +17 -0
  33. package/dist/{logging/log-strategy.js → executer/process-item.js} +1 -1
  34. package/dist/executer/process-listener.js +3 -0
  35. package/dist/executer/process-manager.js +111 -0
  36. package/dist/executer/process-manager.spec.js +91 -0
  37. package/dist/executer/{executor.js → process.js} +1 -1
  38. package/dist/executer/{execute-result.js → readonly-state.js} +1 -1
  39. package/dist/executer/schedule.js +139 -0
  40. package/dist/executer/scheduler/check-for-loop.js +21 -0
  41. package/dist/executer/scheduler/enqueue-next.js +27 -0
  42. package/dist/{testing/test-context.js → executer/scheduler/node-state.js} +1 -1
  43. package/dist/executer/scheduler/scheduler-result.js +3 -0
  44. package/dist/executer/scheduler/scheduler-state.js +3 -0
  45. package/dist/executer/scheduler/service-state.js +3 -0
  46. package/dist/executer/service-dns.js +6 -0
  47. package/dist/executer/set-user-permission.js +16 -0
  48. package/dist/executer/start-node.js +59 -0
  49. package/dist/executer/state-listener.js +3 -0
  50. package/dist/executer/state.js +49 -0
  51. package/dist/executer/states.js +4 -159
  52. package/dist/executer/watch-node.js +57 -0
  53. package/dist/executer/watch-service.js +54 -0
  54. package/dist/executer/work-scope.js +10 -0
  55. package/dist/file/get-file-context-mock.spec.js +5 -5
  56. package/dist/file/get-file-context.js +41 -18
  57. package/dist/file/move-files.js +1 -1
  58. package/dist/get-work-context.js +29 -0
  59. package/dist/index.js +8 -4
  60. package/dist/log.js +192 -50
  61. package/dist/logging/grouped-logger.js +31 -19
  62. package/dist/logging/interactive-logger.js +20 -23
  63. package/dist/logging/live-logger.js +7 -17
  64. package/dist/optimizer/calculate-checksum.js +1 -1
  65. package/dist/optimizer/get-cache-directory.js +8 -13
  66. package/dist/optimizer/get-work-node-cache-stats.js +68 -21
  67. package/dist/optimizer/read-work-node-cache.js +2 -2
  68. package/dist/optimizer/work-node-cache-description.js +12 -11
  69. package/dist/optimizer/write-work-node-cache.js +9 -8
  70. package/dist/{executer/execution-context.js → parser/build-file-service.js} +1 -1
  71. package/dist/{optimizer → parser}/cache-method.js +0 -0
  72. package/dist/parser/get-build-file.js +1 -1
  73. package/dist/parser/parse-boolean.js +29 -0
  74. package/dist/parser/parse-boolean.spec.js +48 -0
  75. package/dist/parser/parse-build-file-references.js +2 -2
  76. package/dist/parser/parse-build-file-services.js +58 -0
  77. package/dist/parser/parse-build-file-task-command.js +6 -5
  78. package/dist/parser/parse-build-file-task-source.js +5 -5
  79. package/dist/parser/parse-build-file.js +27 -15
  80. package/dist/parser/parse-context.js +13 -0
  81. package/dist/parser/parse-envs.js +4 -3
  82. package/dist/parser/parse-healthcheck.js +28 -0
  83. package/dist/parser/parse-label-arguments.js +23 -0
  84. package/dist/parser/parse-service-selector.js +39 -0
  85. package/dist/parser/parse-string-array.js +6 -5
  86. package/dist/parser/parse-string-map.js +30 -0
  87. package/dist/parser/parse-string.js +20 -0
  88. package/dist/parser/read-build-file.js +16 -5
  89. package/dist/parser/read-env-file.js +3 -3
  90. package/dist/planner/utils/get-container-mounts.js +24 -0
  91. package/dist/planner/utils/normalize-path.js +17 -0
  92. package/dist/planner/utils/parse-work-node-mount.js +3 -14
  93. package/dist/planner/utils/parse-work-node-mount.spec.js +10 -10
  94. package/dist/planner/utils/parse-work-service-volume.js +21 -0
  95. package/dist/planner/utils/plan-work-command.js +1 -1
  96. package/dist/planner/utils/plan-work-dependency.js +17 -5
  97. package/dist/planner/utils/plan-work-node.js +203 -128
  98. package/dist/planner/utils/plan-work-nodes.js +59 -14
  99. package/dist/planner/utils/plan-work-tree.js +8 -4
  100. package/dist/planner/utils/plan-work-volume.js +25 -0
  101. package/dist/planner/validate.js +56 -8
  102. package/dist/planner/work-context.js +20 -0
  103. package/dist/planner/work-mount.js +3 -0
  104. package/dist/planner/work-node-id.js +4 -4
  105. package/dist/planner/work-node-id.spec.js +11 -8
  106. package/dist/planner/work-node-path.js +0 -1
  107. package/dist/planner/work-node-status.js +121 -18
  108. package/dist/planner/work-node.js +3 -3
  109. package/dist/planner/work-service-id.js +13 -0
  110. package/dist/planner/work-service-volume.js +3 -0
  111. package/dist/planner/work-service.js +6 -0
  112. package/dist/planner/work-services.js +3 -0
  113. package/dist/planner/work-volume.js +3 -0
  114. package/dist/program.js +155 -90
  115. package/dist/program.spec.js +20 -0
  116. package/dist/start-watch-processes.js +28 -0
  117. package/dist/testing/cli.js +73 -0
  118. package/dist/testing/create-build-file.js +1 -1
  119. package/dist/testing/example-test-suite.js +54 -0
  120. package/dist/testing/expect.js +30 -18
  121. package/dist/testing/get-logger.js +23 -0
  122. package/dist/testing/get-node.js +2 -2
  123. package/dist/testing/get-test-context.js +5 -3
  124. package/dist/testing/get-test-suite.js +2 -50
  125. package/dist/testing/integration/cache.spec.js +25 -28
  126. package/dist/testing/integration/cancellation.spec.js +19 -21
  127. package/dist/testing/integration/clean.spec.js +25 -28
  128. package/dist/testing/integration/cmd.spec.js +5 -8
  129. package/dist/testing/integration/concurrency.spec.js +8 -17
  130. package/dist/testing/integration/docker.spec.js +6 -9
  131. package/dist/testing/integration/env.spec.js +27 -34
  132. package/dist/testing/integration/error.spec.js +5 -9
  133. package/dist/testing/integration/extend.spec.js +32 -0
  134. package/dist/testing/integration/glob.spec.js +35 -28
  135. package/dist/testing/integration/include.spec.js +17 -16
  136. package/dist/testing/integration/invalid.spec.js +3 -2
  137. package/dist/testing/integration/invalid_loop.spec.js +13 -0
  138. package/dist/testing/integration/kubernetes.spec.js +15 -0
  139. package/dist/testing/integration/labels.spec.js +47 -0
  140. package/dist/testing/integration/local.spec.js +4 -7
  141. package/dist/testing/integration/monorepo.spec.js +5 -9
  142. package/dist/testing/integration/multi-line.spec.js +4 -4
  143. package/dist/testing/integration/program.spec.js +3 -10
  144. package/dist/testing/integration/reference.spec.js +10 -13
  145. package/dist/testing/integration/services.spec.js +14 -0
  146. package/dist/testing/integration/store.spec.js +42 -38
  147. package/dist/testing/integration/unknown.spec.js +4 -4
  148. package/dist/testing/integration/validate.spec.js +4 -4
  149. package/dist/testing/integration/watch.spec.js +34 -33
  150. package/dist/testing/lazy.js +17 -0
  151. package/dist/testing/start-watch-processes.js +29 -0
  152. package/dist/testing/test-suite-setup.js +3 -0
  153. package/dist/utils/abort-event.js +14 -1
  154. package/dist/utils/abortable-function.js +71 -0
  155. package/dist/utils/debouncer.spec.js +8 -8
  156. package/dist/utils/environment-config.js +13 -0
  157. package/dist/utils/fail-never.js +1 -1
  158. package/dist/utils/sleep.spec.js +3 -3
  159. package/package.json +24 -21
  160. package/dist/console/get-console-context-mock.js +0 -33
  161. package/dist/executer/clean.js +0 -17
  162. package/dist/executer/execute-local.js +0 -59
  163. package/dist/executer/execute.js +0 -139
  164. package/dist/executer/execution-context-event.js +0 -3
  165. package/dist/executer/execution-context-mock.js +0 -3
  166. package/dist/executer/executor-mock.js +0 -61
  167. package/dist/executer/get-environment-mock.js +0 -16
  168. package/dist/executer/get-execution-context-mock.js +0 -18
  169. package/dist/executer/get-local-executor.js +0 -56
  170. package/dist/executer/restore.js +0 -19
  171. package/dist/executer/store.js +0 -19
  172. package/dist/logging/get-logger.js +0 -23
  173. package/dist/logging/message-to-console.js +0 -16
  174. package/dist/optimizer/optimize.js +0 -32
  175. package/dist/optimizer/work-node-description.js +0 -12
  176. package/dist/planner/utils/find-build-task.js +0 -18
  177. package/dist/testing/create-work-tree.js +0 -11
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.run = exports.execute = void 0;
4
- const optimize_1 = require("../optimizer/optimize");
5
- const write_work_node_cache_1 = require("../optimizer/write-work-node-cache");
6
- const path_1 = require("path");
7
- const plan_work_nodes_1 = require("../planner/utils/plan-work-nodes");
8
- const states_1 = require("./states");
9
- const debouncer_1 = require("../utils/debouncer");
10
- const get_work_node_cache_stats_1 = require("../optimizer/get-work-node-cache-stats");
11
- const abort_event_1 = require("../utils/abort-event");
12
- async function execute(workTree, context) {
13
- abort_event_1.listenOnAbort(context.environment.abortCtrl.signal, () => {
14
- states_1.cancelNodes(workTree, context);
15
- });
16
- await optimize_1.optimize(workTree, context);
17
- if (context.watch) {
18
- await watchNodes(workTree, context);
19
- }
20
- await run(workTree, context);
21
- const result = {
22
- success: true,
23
- nodes: {},
24
- };
25
- for (const node of plan_work_nodes_1.iterateWorkNodes(workTree.nodes)) {
26
- result.nodes[node.id] = node.status;
27
- if (node.status.state.type === 'failed' || node.status.state.type === 'aborted') {
28
- result.success = false;
29
- }
30
- }
31
- return result;
32
- }
33
- exports.execute = execute;
34
- function run(workTree, context) {
35
- const runningNodes = {};
36
- const pendingNodeIds = [];
37
- return new Promise((resolve, reject) => {
38
- abort_event_1.listenOnAbort(context.environment.abortCtrl.signal, () => {
39
- let hasRunningNode = false;
40
- for (const node of plan_work_nodes_1.iterateWorkNodes(workTree.nodes)) {
41
- if (node.status.state.type === 'cancel' ||
42
- node.status.state.type === 'pending' ||
43
- node.status.state.type === 'running') {
44
- hasRunningNode = true;
45
- break;
46
- }
47
- }
48
- if (!hasRunningNode) {
49
- resolve();
50
- }
51
- });
52
- const runPending = async () => {
53
- if (context.workers !== 0 && Object.keys(runningNodes).length >= context.workers) {
54
- return;
55
- }
56
- const nextNodeId = pendingNodeIds.splice(0, 1)[0];
57
- if (!nextNodeId) {
58
- return;
59
- }
60
- const node = workTree.nodes[nextNodeId];
61
- runningNodes[nextNodeId] = node;
62
- const abortCtrl = states_1.runNode(workTree, node.id, context);
63
- try {
64
- await context.executor.exec(node, context, abortCtrl);
65
- await write_work_node_cache_1.writeWorkNodeCache(node, context.environment);
66
- delete runningNodes[nextNodeId];
67
- states_1.completeNode(workTree, node.id, context);
68
- }
69
- catch (e) {
70
- delete runningNodes[nextNodeId];
71
- states_1.failNode(workTree, node.id, context, e);
72
- }
73
- };
74
- const enqueueNode = async (node) => {
75
- try {
76
- if (node.status.state.type === 'pending') {
77
- if (Object.keys(node.status.state.pendingDependencies).length !== 0) {
78
- return;
79
- }
80
- pendingNodeIds.push(node.id);
81
- await runPending();
82
- }
83
- else if ((!context.watch || context.environment.abortCtrl.signal.aborted) &&
84
- (workTree.rootNode.status.state.type === 'completed' ||
85
- workTree.rootNode.status.state.type === 'aborted' ||
86
- workTree.rootNode.status.state.type === 'failed')) {
87
- resolve();
88
- }
89
- }
90
- catch (e) {
91
- reject(e);
92
- }
93
- };
94
- context.events.on((evt) => {
95
- const node = workTree.nodes[evt.nodeId];
96
- enqueueNode(node);
97
- });
98
- for (const node of plan_work_nodes_1.iterateWorkNodes(workTree.nodes)) {
99
- enqueueNode(node);
100
- }
101
- });
102
- }
103
- exports.run = run;
104
- async function watchNodes(workTree, context) {
105
- for (const node of plan_work_nodes_1.iterateWorkNodes(workTree.nodes)) {
106
- if (node.src.length === 0) {
107
- continue;
108
- }
109
- let currentState = await get_work_node_cache_stats_1.getWorkNodeCacheStats(node, context.environment);
110
- const debouncer = new debouncer_1.Debouncer(async () => {
111
- if (context.environment.abortCtrl.signal.aborted) {
112
- return;
113
- }
114
- const newStats = await get_work_node_cache_stats_1.getWorkNodeCacheStats(node, context.environment);
115
- const hasChanged = await get_work_node_cache_stats_1.hasStatsChanged(node, currentState, newStats, context.cacheMethod);
116
- if (!hasChanged) {
117
- return;
118
- }
119
- currentState = newStats;
120
- node.status.console.write('internal', 'debug', `source changed, restart process`);
121
- states_1.resetNode(workTree, node.id, context);
122
- }, 100);
123
- for (const src of node.src) {
124
- node.status.console.write('internal', 'debug', `watch ${src.absolutePath} source`);
125
- const watcher = context.environment.file.watch(src.absolutePath, async (fileName) => {
126
- const absoluteFileName = path_1.join(src.absolutePath, fileName);
127
- if (src.matcher(absoluteFileName, node.cwd)) {
128
- node.status.console.write('internal', 'debug', `source ${absoluteFileName} change for watched task ${node.name}`);
129
- debouncer.bounce();
130
- }
131
- });
132
- abort_event_1.listenOnAbort(context.environment.abortCtrl.signal, () => {
133
- watcher.close();
134
- debouncer.clear();
135
- });
136
- }
137
- }
138
- }
139
- //# sourceMappingURL=execute.js.map
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=execution-context-event.js.map
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=execution-context-mock.js.map
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExecutorMock = void 0;
4
- const abort_event_1 = require("../utils/abort-event");
5
- function getExecutorMock() {
6
- const waits = {};
7
- const execs = {};
8
- return {
9
- restore() {
10
- return Promise.resolve();
11
- },
12
- store() {
13
- return Promise.resolve();
14
- },
15
- clean() {
16
- return Promise.resolve();
17
- },
18
- exec(node, context, cancelDefer) {
19
- return new Promise((resolve, reject) => {
20
- const resultDefer = {
21
- end() {
22
- delete execs[node.id];
23
- resolve();
24
- },
25
- fail(err) {
26
- delete execs[node.id];
27
- reject(err);
28
- },
29
- };
30
- abort_event_1.listenOnAbort(cancelDefer.signal, () => {
31
- reject(new Error('canceled'));
32
- });
33
- if (waits[node.id]) {
34
- waits[node.id](resultDefer);
35
- delete waits[node.id];
36
- }
37
- else {
38
- execs[node.id] = resultDefer;
39
- }
40
- });
41
- },
42
- abort(nodeId, err) {
43
- execs[nodeId].fail(err);
44
- },
45
- end(nodeId) {
46
- execs[nodeId].end();
47
- },
48
- async waitForExecution(nodeId) {
49
- const currentExecs = execs[nodeId];
50
- if (currentExecs) {
51
- return currentExecs;
52
- }
53
- const promise = new Promise((resolve) => {
54
- waits[nodeId] = resolve;
55
- });
56
- return promise;
57
- },
58
- };
59
- }
60
- exports.getExecutorMock = getExecutorMock;
61
- //# sourceMappingURL=executor-mock.js.map
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEnvironmentMock = void 0;
4
- const get_file_context_mock_1 = require("../file/get-file-context-mock");
5
- const get_console_context_mock_1 = require("../console/get-console-context-mock");
6
- function getEnvironmentMock() {
7
- return {
8
- cwd: '/home/user',
9
- file: get_file_context_mock_1.getFileContextMock(),
10
- console: get_console_context_mock_1.getConsoleContextMock(),
11
- abortCtrl: new AbortController(),
12
- processEnvs: {},
13
- };
14
- }
15
- exports.getEnvironmentMock = getEnvironmentMock;
16
- //# sourceMappingURL=get-environment-mock.js.map
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExecutionContextMock = void 0;
4
- const get_environment_mock_1 = require("./get-environment-mock");
5
- const emitter_1 = require("../utils/emitter");
6
- const executor_mock_1 = require("./executor-mock");
7
- function getExecutionContextMock() {
8
- return {
9
- environment: get_environment_mock_1.getEnvironmentMock(),
10
- events: emitter_1.emitter(),
11
- executor: executor_mock_1.getExecutorMock(),
12
- cacheMethod: 'checksum',
13
- watch: false,
14
- workers: 0,
15
- };
16
- }
17
- exports.getExecutionContextMock = getExecutionContextMock;
18
- //# sourceMappingURL=get-execution-context-mock.js.map
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLocalExecutor = void 0;
4
- const work_node_1 = require("../planner/work-node");
5
- const execute_local_1 = require("./execute-local");
6
- const replace_env_variables_1 = require("../environment/replace-env-variables");
7
- const move_files_1 = require("../file/move-files");
8
- const path_1 = require("path");
9
- function getLocalExecutor() {
10
- return {
11
- async restore(node, environment, path) {
12
- await move_files_1.moveFiles(node, environment, function* () {
13
- for (const targetPath of node.generates) {
14
- if (targetPath.inherited) {
15
- continue;
16
- }
17
- const sourcePath = path_1.join(path, path_1.relative(node.buildFile.path, targetPath.path));
18
- yield { from: sourcePath, to: targetPath.path };
19
- }
20
- });
21
- },
22
- async store(node, environment, targetDirectory) {
23
- await move_files_1.moveFiles(node, environment, function* () {
24
- for (const sourcePath of node.generates) {
25
- if (sourcePath.inherited) {
26
- continue;
27
- }
28
- const relativePath = path_1.relative(node.buildFile.path, sourcePath.path);
29
- const targetPath = path_1.join(targetDirectory, relativePath);
30
- yield { from: sourcePath.path, to: targetPath };
31
- }
32
- });
33
- },
34
- async clean(node, environment) {
35
- for (const generate of node.generates) {
36
- if (generate.inherited) {
37
- continue;
38
- }
39
- node.status.console.write('internal', 'info', `remove local directory ${generate.path}`);
40
- await environment.file.remove(generate.path);
41
- }
42
- },
43
- async exec(node, context, cancelDefer) {
44
- const envs = replace_env_variables_1.replaceEnvVariables(node, context.environment.processEnvs);
45
- if (work_node_1.isContainerWorkNode(node)) {
46
- node.status.console.write('internal', 'debug', `${node.name} is executed locally instead inside of a container`);
47
- }
48
- await execute_local_1.executeLocal({
49
- ...node,
50
- envs,
51
- }, context, cancelDefer);
52
- },
53
- };
54
- }
55
- exports.getLocalExecutor = getLocalExecutor;
56
- //# sourceMappingURL=get-local-executor.js.map
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.restore = void 0;
4
- const path_1 = require("path");
5
- const move_files_1 = require("../file/move-files");
6
- const plan_work_nodes_1 = require("../planner/utils/plan-work-nodes");
7
- const get_cache_directory_1 = require("../optimizer/get-cache-directory");
8
- async function restore(workNodes, targetDirectory, environment, executor) {
9
- for (const node of plan_work_nodes_1.iterateWorkNodes(workNodes)) {
10
- const cachePath = get_cache_directory_1.getCacheDirectory(node.id);
11
- const sourceCacheDir = path_1.join(targetDirectory, 'cache', node.id);
12
- await move_files_1.moveFiles(node, environment, function* () {
13
- yield { from: sourceCacheDir, to: cachePath };
14
- });
15
- await executor.restore(node, environment, targetDirectory);
16
- }
17
- }
18
- exports.restore = restore;
19
- //# sourceMappingURL=restore.js.map
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.store = void 0;
4
- const path_1 = require("path");
5
- const move_files_1 = require("../file/move-files");
6
- const plan_work_nodes_1 = require("../planner/utils/plan-work-nodes");
7
- const get_cache_directory_1 = require("../optimizer/get-cache-directory");
8
- async function store(workNodes, targetDirectory, environment, executor) {
9
- for (const node of plan_work_nodes_1.iterateWorkNodes(workNodes)) {
10
- const cachePath = get_cache_directory_1.getCacheDirectory(node.id);
11
- const sourceCacheDir = path_1.join(targetDirectory, 'cache', node.id);
12
- await move_files_1.moveFiles(node, environment, function* () {
13
- yield { from: cachePath, to: sourceCacheDir };
14
- });
15
- await executor.store(node, environment, targetDirectory);
16
- }
17
- }
18
- exports.store = store;
19
- //# sourceMappingURL=store.js.map
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLogger = void 0;
4
- const fail_never_1 = require("../utils/fail-never");
5
- const live_logger_1 = require("./live-logger");
6
- const interactive_logger_1 = require("./interactive-logger");
7
- const grouped_logger_1 = require("./grouped-logger");
8
- function getLogger(mode) {
9
- if (mode === 'interactive') {
10
- return interactive_logger_1.interactiveLogger();
11
- }
12
- else if (mode === 'live') {
13
- return live_logger_1.liveLogger();
14
- }
15
- else if (mode === 'grouped') {
16
- return grouped_logger_1.groupedLogger();
17
- }
18
- else {
19
- fail_never_1.failNever(`Unknown logging mode ${mode}`);
20
- }
21
- }
22
- exports.getLogger = getLogger;
23
- //# sourceMappingURL=get-logger.js.map
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logMessageToConsole = void 0;
7
- const log_1 = require("../log");
8
- const colors_1 = __importDefault(require("colors"));
9
- function logMessageToConsole(node, log, maxNodeNameLength) {
10
- if (!log_1.isVerbose && log.level === 'debug') {
11
- return;
12
- }
13
- process.stdout.write(`${colors_1.default.grey('task:')} ${log_1.getNodeName(node, maxNodeNameLength)} - ${log.date.toLocaleTimeString()} - ${log_1.getLogLevel(log.level)} - ${log.message}\n`);
14
- }
15
- exports.logMessageToConsole = logMessageToConsole;
16
- //# sourceMappingURL=message-to-console.js.map
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.optimize = void 0;
4
- const read_work_node_cache_1 = require("./read-work-node-cache");
5
- const get_work_node_cache_stats_1 = require("./get-work-node-cache-stats");
6
- const states_1 = require("../executer/states");
7
- async function optimize(workTree, context) {
8
- if (context.cacheMethod === 'none') {
9
- return workTree;
10
- }
11
- for (const key of Object.keys(workTree.nodes)) {
12
- const node = workTree.nodes[key];
13
- if (node.src.length === 0) {
14
- continue;
15
- }
16
- const cache = await read_work_node_cache_1.readCache(node, context.environment);
17
- if (!cache) {
18
- node.status.console.write('internal', 'debug', `${node.name} can't be skipped because there is no cache`);
19
- continue;
20
- }
21
- const currentStats = await get_work_node_cache_stats_1.getWorkNodeCacheStats(node, context.environment);
22
- const changed = await get_work_node_cache_stats_1.hasStatsChanged(node, cache, currentStats, context.cacheMethod);
23
- if (changed) {
24
- continue;
25
- }
26
- node.status.console.write('internal', 'debug', `${node.name} is skipped because it's cache is up to date`);
27
- states_1.completeNode(workTree, key, context);
28
- }
29
- return workTree;
30
- }
31
- exports.optimize = optimize;
32
- //# sourceMappingURL=optimize.js.map
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWorkDescription = void 0;
4
- const work_node_cache_description_1 = require("./work-node-cache-description");
5
- function getWorkDescription(cwd, task, deps) {
6
- return {
7
- cwd,
8
- ...work_node_cache_description_1.getWorkNodeCacheDescription(task, deps),
9
- };
10
- }
11
- exports.getWorkDescription = getWorkDescription;
12
- //# sourceMappingURL=work-node-description.js.map
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findBuildTask = void 0;
4
- const split_name_1 = require("./split-name");
5
- function findBuildTask(build, taskName) {
6
- if (build.tasks[taskName]) {
7
- return { task: build.tasks[taskName], build };
8
- }
9
- else {
10
- const ref = split_name_1.splitName(taskName);
11
- if (ref.prefix && build.includes[ref.prefix]) {
12
- return findBuildTask(build.includes[ref.prefix], ref.taskName);
13
- }
14
- throw new Error(`unable to find ${taskName} in ${build.path}`);
15
- }
16
- }
17
- exports.findBuildTask = findBuildTask;
18
- //# sourceMappingURL=find-build-task.js.map
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createWorkTree = void 0;
4
- const plan_work_tree_1 = require("../planner/utils/plan-work-tree");
5
- const create_build_file_1 = require("./create-build-file");
6
- async function createWorkTree(environment, buildFile, rootNodeName) {
7
- const file = await create_build_file_1.createBuildFile(environment, buildFile);
8
- return plan_work_tree_1.planWorkTree(file, rootNodeName);
9
- }
10
- exports.createWorkTree = createWorkTree;
11
- //# sourceMappingURL=create-work-tree.js.map