codefresh 0.79.0 → 0.80.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/Dockerfile CHANGED
@@ -11,7 +11,7 @@ RUN pip install yq==${YQ_VERSION}
11
11
  RUN pyinstaller --noconfirm --onefile --log-level DEBUG --clean --distpath /tmp/ $(which yq)
12
12
 
13
13
  # Main
14
- FROM node:12.22.11-alpine3.15
14
+ FROM node:12.22.12-alpine3.15
15
15
 
16
16
  RUN apk --update add --no-cache ca-certificates git curl bash jq
17
17
 
@@ -14,11 +14,11 @@ steps:
14
14
  title: "Validate running on master branch"
15
15
  image: codefresh/build-cli
16
16
  commands:
17
- - 'echo This pipeline should be run only on master'
18
- - 'exit 1'
19
- when:
20
- branch:
21
- ignore: [ master ]
17
+ - >-
18
+ if [ "${{CF_BRANCH}}" != "master" ]; then
19
+ echo This pipeline should be run only on master
20
+ exit 1
21
+ fi
22
22
 
23
23
  main_clone:
24
24
  stage: prepare
@@ -177,13 +177,13 @@ steps:
177
177
 
178
178
  archive_win:
179
179
  stage: build
180
- title: "Archiving macos distribution"
180
+ title: "Archiving win distribution"
181
181
  image: codefresh/build-cli
182
182
  commands:
183
183
  - "rm -rf ./dist/win"
184
184
  - "mkdir -p ./dist/win"
185
185
  - "cp --force README.md LICENSE ./dist/win"
186
- - "cp --force ./dist/codefresh-win ./dist/win/codefresh.exe"
186
+ - "cp --force ./dist/codefresh-win.exe ./dist/win/codefresh.exe"
187
187
  - "zip codefresh-v${{PACKAGE_VERSION}}-win-x64.zip README.md LICENSE -j ./dist/win/codefresh.exe "
188
188
  when:
189
189
  steps:
@@ -209,6 +209,7 @@ steps:
209
209
  - success
210
210
 
211
211
  create_release:
212
+ stage: github
212
213
  title: "Create github release"
213
214
  image: codefresh/build-cli
214
215
  fail_fast: false
@@ -221,6 +222,7 @@ steps:
221
222
  - success
222
223
 
223
224
  get_release:
225
+ stage: github
224
226
  title: "Get github release"
225
227
  image: codefresh/build-cli
226
228
  commands:
@@ -233,6 +235,7 @@ steps:
233
235
  - name: create_release
234
236
  on:
235
237
  - success
238
+ - failure
236
239
 
237
240
  upload_linux:
238
241
  stage: github
@@ -318,7 +321,7 @@ steps:
318
321
  image: codefresh/build-cli
319
322
  commands:
320
323
  - VERSION=v${{PACKAGE_VERSION}}
321
- - cp --force codefresh-$VERSION-macos-x64.tar.gz $VERSION.tar.gz
324
+ - curl -L https://github.com/codefresh-io/cli/releases/download/$VERSION/codefresh-$VERSION-macos-x64.tar.gz > $VERSION.tar.gz
322
325
  - echo "compute SHA256 ..."
323
326
  - SHA256="$(shasum -a 256 ./$VERSION.tar.gz | awk '{print $1}')"
324
327
  - echo "generate file from template ..."
@@ -332,7 +335,7 @@ steps:
332
335
  }" https://api.github.com/repos/codefresh-io/homebrew-cli/contents/Formula/codefresh.rb
333
336
  when:
334
337
  steps:
335
- - name: archive_macos
338
+ - name: upload_macos
336
339
  on:
337
340
  - success
338
341
 
package/codefresh.yml CHANGED
@@ -59,12 +59,15 @@ steps:
59
59
  commands:
60
60
  - yarn test
61
61
 
62
- e2e_tests:
63
- title: 'Running e2e tests'
64
- image: codefresh/build-cli
65
- commands:
66
- - "echo Running e2e on account: ${{CF_ACCOUNT}}"
67
- - CF_API_KEY=${{CF_E2E_API_KEY}} yarn e2e
62
+ # Disabled e2e tests because of flakyness
63
+ # need to fix flakyness before enabling again.
64
+ #
65
+ # e2e_tests:
66
+ # title: 'Running e2e tests'
67
+ # image: codefresh/build-cli
68
+ # commands:
69
+ # - "echo Running e2e on account: ${{CF_ACCOUNT}}"
70
+ # - CF_API_KEY=${{CF_E2E_API_KEY}} yarn e2e
68
71
  when:
69
72
  branch:
70
73
  ignore: [ master ]
@@ -1,11 +1,10 @@
1
1
  const Promise = require('bluebird');
2
2
  const _ = require('lodash');
3
- const decompress = require('decompress');
4
- const decompressTargz = require('decompress-targz');
5
- const decompressUnzip = require('decompress-unzip');
6
3
  const rp = require('request-promise');
7
4
  const request = require('request');
8
5
  const compareVersions = require('compare-versions');
6
+ const zip = require('zip');
7
+ const tarStream = require('tar-stream');
9
8
  const {
10
9
  resolve, join,
11
10
  } = require('path');
@@ -13,12 +12,62 @@ const {
13
12
  homedir, arch,
14
13
  } = require('os');
15
14
  const {
16
- existsSync, mkdirSync, readFileSync, createWriteStream, writeFile,
15
+ existsSync, mkdirSync, readFileSync, createWriteStream, writeFile, readFile,
16
+ createReadStream,
17
17
  } = require('fs');
18
- const { to } = require('./../logic/cli-config/errors/awaitTo');
18
+ const { createGunzip } = require('zlib');
19
+ const { promisify } = require('util');
20
+ let { pipeline } = require('stream');
21
+ const { to } = require('../logic/cli-config/errors/awaitTo');
22
+
23
+ pipeline = promisify(pipeline);
19
24
 
20
25
  const CODEFRESH_PATH = resolve(homedir(), '.Codefresh');
21
26
 
27
+ async function unzipFile(zipPath, outputPath) {
28
+ const zipBuffer = await Promise.fromCallback((cb) => readFile(zipPath, cb));
29
+ const zr = zip.Reader(zipBuffer);
30
+
31
+ const fileWrites = [];
32
+ zr.forEach((entry) => {
33
+ if (!entry.isFile()) {
34
+ return;
35
+ }
36
+
37
+ const outputFilePath = join(outputPath, entry.getName());
38
+ fileWrites.push(Promise.fromCallback((cb) => writeFile(outputFilePath, entry.getData(), { mode: entry.getMode() }, cb)));
39
+ });
40
+
41
+ return Promise.all(fileWrites);
42
+ }
43
+
44
+ async function untarFile(tarPath, outputPath) {
45
+ const zipFile = createReadStream(tarPath);
46
+ const unzipStream = createGunzip();
47
+ const extract = tarStream.extract();
48
+
49
+ extract.on('entry', async (headers, stream, next) => {
50
+ if (headers.type !== 'file') {
51
+ return next();
52
+ }
53
+
54
+ try {
55
+ const outputFilePath = join(outputPath, headers.name);
56
+ const outputFile = createWriteStream(outputFilePath, { mode: headers.mode });
57
+ await pipeline(stream, outputFile);
58
+ return next();
59
+ } catch (error) {
60
+ return next(error);
61
+ }
62
+ });
63
+
64
+ return await pipeline(
65
+ zipFile,
66
+ unzipStream,
67
+ extract,
68
+ );
69
+ }
70
+
22
71
  function _ensureDirectory(location) {
23
72
  if (existsSync(location)) {
24
73
  return Promise.resolve();
@@ -79,13 +128,13 @@ function _buildLocalOSProperties() {
79
128
  async function _writeFiles({
80
129
  zipPath, location, version, versionPath,
81
130
  }) {
82
- await to(decompress(zipPath, location, {
83
- plugins: [
84
- decompressTargz(),
85
- decompressUnzip(),
86
- ],
87
- }));
88
- return Promise.fromCallback(cb => writeFile(versionPath, version, cb));
131
+ if (zipPath.endsWith('.zip')) {
132
+ await unzipFile(zipPath, location);
133
+ } else {
134
+ await untarFile(zipPath, location);
135
+ }
136
+
137
+ return Promise.fromCallback((cb) => writeFile(versionPath, version, cb));
89
138
  }
90
139
 
91
140
  class Downloader {
@@ -144,7 +193,6 @@ class Downloader {
144
193
  });
145
194
  }
146
195
 
147
-
148
196
  return new Promise((resolveFn, rejectFn) => {
149
197
  resp.on('end', async () => {
150
198
  const [err] = await to(_writeFiles({
@@ -1,3 +1,4 @@
1
+ /* eslint-disable */
1
2
  const { MongoClient, ObjectId } = require("mongodb");
2
3
  const moment = require("moment");
3
4
  const Command = require("../../Command");
@@ -34,7 +35,7 @@ const offloadToFile = async function (
34
35
  }
35
36
  const cutoffDateId = objectIdFromDate(cutoffDateObj.toDate());
36
37
 
37
- const minLog = await findMinLog(collectionObj, cutoffDateId, collection);
38
+ const minLog = await findMinLog(collectionObj, cutoffDateId);
38
39
 
39
40
  if (!minLog) {
40
41
  console.info(
@@ -61,25 +62,22 @@ const offloadToFile = async function (
61
62
  const lowerBoundId = objectIdFromDate(lowerBound.toDate());
62
63
  const upperBoundId = objectIdFromDate(upperBound.toDate());
63
64
 
64
- const logsToArchive = await collectionObj
65
+ const logsCursor = await collectionObj
65
66
  .find({
66
67
  _id: {
67
68
  $gte: ObjectId(lowerBoundId),
68
69
  $lt: ObjectId(upperBoundId),
69
70
  },
70
- })
71
- .toArray();
71
+ });
72
72
 
73
- if (logsToArchive.length > 0) {
74
- writeLogsToFile(upperBound, lowerBound, collection, logsToArchive, path);
73
+ await writeLogsToFile(upperBound, lowerBound, collection, logsCursor, path);
75
74
 
76
- await collectionObj.deleteMany({
77
- _id: {
78
- $gte: ObjectId(lowerBoundId),
79
- $lt: ObjectId(upperBoundId),
80
- },
81
- });
82
- }
75
+ await collectionObj.deleteMany({
76
+ _id: {
77
+ $gte: ObjectId(lowerBoundId),
78
+ $lt: ObjectId(upperBoundId),
79
+ },
80
+ });
83
81
  }
84
82
  };
85
83
 
@@ -152,7 +150,7 @@ const command = new Command({
152
150
  path
153
151
  );
154
152
  } catch (e) {
155
- console.log(e);
153
+ console.error(e);
156
154
  failedCollections.push(collection);
157
155
  errors.push(error);
158
156
  }
@@ -1,59 +1,116 @@
1
- const moment = require('moment')
1
+ /* eslint-disable no-unused-vars */
2
+ const moment = require('moment');
2
3
  const { writeLogsToFile, checkRemnant } = require('./utils');
3
- const fs = require('fs')
4
+ const fs = require('fs');
4
5
 
5
6
  describe('offload-to-file', () => {
6
- describe('writeLogsToFile', () => {
7
- it('writes the input data to file', () => {
8
- fs.writeFileSync = jest.fn((path, data) => {
9
- return {path, data};
10
- });
11
- const upperBound = '2021-08-10';
12
- const lowerBound = '2021-08-01';
13
- const collection = 'logs';
14
- const logsToArchive = [1, 2, 3, 4];
15
- const expectedStr = JSON.stringify(logsToArchive)
16
- const path = 'some/path';
17
- writeLogsToFile(upperBound, lowerBound, collection, logsToArchive, path);
18
- expect(fs.writeFileSync.mock.calls.length).toBe(1);
19
- expect(fs.writeFileSync.mock.calls[0][0]).toContain(path);
20
- expect(fs.writeFileSync.mock.calls[0][1]).toBe(expectedStr);
21
- });
22
- it('creates the correct file name', () => {
23
- fs.writeFileSync = jest.fn((path, data) => {
24
- return {path, data};
25
- });
26
- const upperBound = '2021-08-10';
27
- const lowerBound = '2021-08-01';
28
- const collection = 'logs';
29
- const logsToArchive = [1, 2, 3, 4];
30
- const expectedPath = 'some/path/2021-08-01-2021-08-09-logs.json'
31
- const path = 'some/path';
32
- writeLogsToFile(upperBound, lowerBound, collection, logsToArchive, path);
33
- expect(fs.writeFileSync.mock.calls.length).toBe(1);
34
- expect(fs.writeFileSync.mock.calls[0][0]).toBe(expectedPath);
35
- });
36
- it('checks leap year date calculation', () => {
37
- fs.writeFileSync = jest.fn((path, data) => {
38
- return {path, data};
39
- });
40
- const upperBound = '2020-03-01';
41
- const lowerBound = '2020-02-01';
42
- const collection = 'logs';
43
- const logsToArchive = [1, 2, 3, 4];
44
- const expectedPath = 'some/path/2020-02-01-2020-02-29-logs.json'
45
- const path = 'some/path';
46
- writeLogsToFile(upperBound, lowerBound, collection, logsToArchive, path);
47
- expect(fs.writeFileSync.mock.calls.length).toBe(1);
48
- expect(fs.writeFileSync.mock.calls[0][0]).toBe(expectedPath);
7
+ describe('writeLogsToFile', () => {
8
+ it('writes the input data to file', async () => {
9
+ const upperBound = '2021-08-10';
10
+ const lowerBound = '2021-08-01';
11
+ const collection = 'logs';
12
+ const pathMock = 'some/path';
13
+ let writerResult = '';
14
+ const expectedWrite = '[\n{"key1":"val"},\n{"key2":"val"},\n{"key3":"val"},\n{"key4":"val"}\n]';
15
+ class LogsCursor {
16
+ constructor() {
17
+ this.logs = [{ key1: 'val' }, { key2: 'val' }, { key3: 'val' }, { key4: 'val' }];
18
+ this.pointer = 0;
19
+ this.next = jest.fn(() => {
20
+ let currentDoc = null;
21
+ if (this.pointer < this.logs.length) {
22
+ currentDoc = this.logs[this.pointer];
23
+ }
24
+ this.pointer += 1;
25
+ return currentDoc;
26
+ });
27
+ this.isClosed = jest.fn(() => this.pointer > this.logs.length);
28
+ }
29
+ }
30
+ const writerMock = {
31
+ write: jest.fn((text) => {
32
+ writerResult = `${writerResult}${text}`;
33
+ }),
34
+ close: jest.fn(),
35
+ };
36
+
37
+ fs.createWriteStream = jest.fn(path => writerMock);
38
+ await writeLogsToFile(upperBound, lowerBound, collection, new LogsCursor(), pathMock);
39
+ expect(fs.createWriteStream.mock.calls.length).toBe(1);
40
+ expect(fs.createWriteStream.mock.calls[0][0]).toContain(pathMock);
41
+ expect(writerMock.write.mock.calls.length).toBe(6);
42
+ expect(writerResult).toBe(expectedWrite);
43
+ expect(writerMock.close.mock.calls.length).toBe(1);
44
+ });
45
+ it('creates the correct file name', async () => {
46
+ const upperBound = '2021-08-10';
47
+ const lowerBound = '2021-08-01';
48
+ const collection = 'logs';
49
+ const expectedPath = 'some/path/2021-08-01-2021-08-09-logs.json';
50
+ const somePath = 'some/path';
51
+ class LogsCursor {
52
+ constructor() {
53
+ this.logs = [{ key1: 'val' }, { key2: 'val' }, { key3: 'val' }, { key4: 'val' }];
54
+ this.pointer = 0;
55
+ this.next = jest.fn(() => {
56
+ let currentDoc = null;
57
+ if (this.pointer < this.logs.length) {
58
+ currentDoc = this.logs[this.pointer];
59
+ }
60
+ this.pointer += 1;
61
+ return currentDoc;
62
+ });
63
+ this.isClosed = jest.fn(() => this.pointer > this.logs.length);
64
+ }
65
+ }
66
+ const writerMock = {
67
+ write: jest.fn(text => text),
68
+ close: jest.fn(),
69
+ };
70
+
71
+ fs.createWriteStream = jest.fn(path => writerMock);
72
+ await writeLogsToFile(upperBound, lowerBound, collection, new LogsCursor(), somePath);
73
+ expect(fs.createWriteStream.mock.calls.length).toBe(1);
74
+ expect(fs.createWriteStream.mock.calls[0][0]).toBe(expectedPath);
75
+ });
76
+ it('checks leap year date calculation', async () => {
77
+ const upperBound = '2020-03-01';
78
+ const lowerBound = '2020-02-01';
79
+ const collection = 'logs';
80
+ const expectedPath = 'some/path/2020-02-01-2020-02-29-logs.json';
81
+ const somePath = 'some/path';
82
+ class LogsCursor {
83
+ constructor() {
84
+ this.logs = [{ key1: 'val' }, { key2: 'val' }, { key3: 'val' }, { key4: 'val' }];
85
+ this.pointer = 0;
86
+ this.next = jest.fn(() => {
87
+ let currentDoc = null;
88
+ if (this.pointer < this.logs.length) {
89
+ currentDoc = this.logs[this.pointer];
90
+ }
91
+ this.pointer += 1;
92
+ return currentDoc;
93
+ });
94
+ this.isClosed = jest.fn(() => this.pointer > this.logs.length);
95
+ }
96
+ }
97
+ const writerMock = {
98
+ write: jest.fn(text => text),
99
+ close: jest.fn(),
100
+ };
101
+
102
+ fs.createWriteStream = jest.fn(path => writerMock);
103
+ await writeLogsToFile(upperBound, lowerBound, collection, new LogsCursor(), somePath);
104
+ expect(fs.createWriteStream.mock.calls.length).toBe(1);
105
+ expect(fs.createWriteStream.mock.calls[0][0]).toBe(expectedPath);
106
+ });
49
107
  });
50
- });
51
- describe('checkRemnant', () => {
52
- it('checkes days remnant to make sure time range is not going off boundaries', () => {
53
- const lowerBound = '2020-08-01';
54
- const cutoffDateObj = moment('2020-08-01').add(1, 'days').startOf("day");
55
- const result = checkRemnant(lowerBound, cutoffDateObj);
56
- expect(result).toBe(1);
108
+ describe('checkRemnant', () => {
109
+ it('checkes days remnant to make sure time range is not going off boundaries', () => {
110
+ const lowerBound = '2020-08-01';
111
+ const cutoffDateObj = moment('2020-08-01').add(1, 'days').startOf('day');
112
+ const result = checkRemnant(lowerBound, cutoffDateObj);
113
+ expect(result).toBe(1);
114
+ });
57
115
  });
58
- });
59
116
  });
@@ -1,159 +1,164 @@
1
- const readline = require("readline");
2
- const moment = require("moment");
3
- const { ObjectId } = require("mongodb")
1
+ /* eslint-disable no-await-in-loop */
2
+ const readline = require('readline');
3
+ const moment = require('moment');
4
+ const { ObjectId } = require('mongodb');
4
5
 
5
- const { join } = require("path");
6
- const fs = require("fs");
6
+ const { join } = require('path');
7
+ const fs = require('fs');
7
8
 
8
- const defaultCollections = ["logs", "metadata"];
9
+ const defaultCollections = ['logs', 'metadata'];
9
10
 
10
11
  // converts date to objectId for filter purposes
11
- const objectIdFromDate = function (date) {
12
- return Math.floor(date.getTime() / 1000).toString(16) + "0000000000000000";
13
- };
12
+ function objectIdFromDate(date) {
13
+ return `${Math.floor(date.getTime() / 1000).toString(16)}0000000000000000`;
14
+ }
15
+
16
+ function createRangeStr(lowerBound, upperBound, collection) {
17
+ const upperBoundDate = moment(upperBound).subtract(1, 'days');
18
+ const fileDateRange = `${moment(lowerBound).format('YYYY-MM-DD')}-${upperBoundDate.format('YYYY-MM-DD')}`;
19
+ return `${fileDateRange}-${collection}`;
20
+ }
14
21
 
15
- const writeLogsToFile = function (
16
- upperBound,
17
- lowerBound,
18
- collection,
19
- logsToArchive,
20
- path
22
+ async function writeLogsToFile(
23
+ upperBound,
24
+ lowerBound,
25
+ collection,
26
+ logsCursor,
27
+ path,
21
28
  ) {
22
- const fileName = `${createRangeStr(lowerBound, upperBound, collection)}.json`
23
- const absPath = join(path, fileName);
24
- const data = JSON.stringify(logsToArchive);
25
- fs.writeFileSync(absPath, data);
26
- console.info(`logs from collection '${collection}' were offloaded to '${absPath}'`)
27
- };
29
+ const fileName = `${createRangeStr(lowerBound, upperBound, collection)}.json`;
30
+ const absPath = join(path, fileName);
31
+ const stream = fs.createWriteStream(absPath);
32
+ let count = 0;
33
+ stream.write('[');
34
+
35
+ let comma = '';
36
+ while (!logsCursor.isClosed()) {
37
+ const doc = await logsCursor.next();
38
+ if (doc) {
39
+ const data = JSON.stringify(doc);
40
+ stream.write(`${comma}\n${data}`);
41
+ comma = ',';
42
+ count += 1;
43
+ } else {
44
+ break;
45
+ }
46
+ }
28
47
 
29
- const createRangeStr = function(lowerBound, upperBound, collection) {
30
- const upperBoundDate = moment(upperBound).subtract(1, "days");
31
- const fileDateRange = `${moment(lowerBound).format(
32
- "YYYY-MM-DD"
33
- )}-${upperBoundDate.format("YYYY-MM-DD")}`;
34
- return `${fileDateRange}-${collection}`;
48
+ stream.write('\n]');
49
+ stream.close();
50
+
51
+ console.info(`${count} logs from collection '${collection}' were offloaded to '${absPath}'`);
35
52
  }
36
53
 
37
- const getMinDate = function(minLog) {
38
- const minLogId = ObjectId(minLog._id)
39
- return moment(
40
- minLogId.getTimestamp()
41
- ).startOf("day");
54
+ function getMinDate(minLog) {
55
+ const minLogId = ObjectId(minLog._id);
56
+ return moment(minLogId.getTimestamp()).startOf('day');
42
57
  }
43
58
 
44
- const checkRemnant = function (lowerBound, cutoffDateObj) {
45
- return Math.ceil(cutoffDateObj.diff(lowerBound, "days"));
46
- };
47
- ///////////////////////////////////////////////////////////////
48
- const ensureIndex = async function (database, collection) {
49
- const collectionObj = database.collection(collection);
50
- const indexName = "accountId_1_jobId_1";
59
+ function checkRemnant(lowerBound, cutoffDateObj) {
60
+ return Math.ceil(cutoffDateObj.diff(lowerBound, 'days'));
61
+ }
51
62
 
52
- const indexExist = await collectionObj.indexExists(indexName)
63
+ async function ensureIndex(database, collection) {
64
+ const collectionObj = database.collection(collection);
65
+ const indexName = 'accountId_1_jobId_1';
53
66
 
54
- if (indexExist) {
55
- console.info(
56
- `index '${indexName}' already exists in collection '${collection}'`
57
- );
58
- return;
59
- }
67
+ const indexExist = await collectionObj.indexExists(indexName);
68
+
69
+ if (indexExist) {
70
+ console.info(`index '${indexName}' already exists in collection '${collection}'`);
71
+ return;
72
+ }
60
73
 
61
- const documentsCount = await collectionObj.estimatedDocumentCount();
74
+ const documentsCount = await collectionObj.estimatedDocumentCount();
62
75
 
63
- const queryStr = `There are approximately ${documentsCount} documents on collection '${collection}'.
76
+ const queryStr = `There are approximately ${documentsCount} documents on collection '${collection}'.
64
77
  do you want to create an index for it? (creating an index for a large collection may take a while,
65
78
  but can improve performance on future read operations) [yes/no] `;
66
79
 
67
- const userInput = await this.getUserInput(queryStr);
80
+ const userInput = await this.getUserInput(queryStr);
68
81
 
69
- if (!userInput) {
70
- console.info(`skipping collection '${collection}'`);
71
- return;
72
- }
82
+ if (!userInput) {
83
+ console.info(`skipping collection '${collection}'`);
84
+ return;
85
+ }
73
86
 
74
- await collectionObj.createIndex(
75
- { accountId: 1, jobId: 1 },
76
- { background: true },
77
- );
78
- console.info(
79
- `index '${indexName}' was created for collection '${collection}'`
80
- );
81
- };
87
+ await collectionObj.createIndex(
88
+ { accountId: 1, jobId: 1 },
89
+ { background: true },
90
+ );
91
+ console.info(`index '${indexName}' was created for collection '${collection}'`);
92
+ }
82
93
 
83
- const getUserInput = async function (queryStr) {
84
- const rl = readline.createInterface({
85
- input: process.stdin,
86
- output: process.stdout,
87
- });
88
-
89
- const questionAsync = (query) =>
90
- new Promise((resolve) => rl.question(query, resolve));
91
-
92
- try {
93
- const userInput = (await questionAsync(queryStr)).toLowerCase();
94
-
95
- switch (userInput) {
96
- case "yes":
97
- case "y":
98
- return true;
99
- case "no":
100
- case "n":
101
- return false;
102
- default:
103
- console.warn("invalid input");
104
- return false;
94
+ async function getUserInput(queryStr) {
95
+ const rl = readline.createInterface({
96
+ input: process.stdin,
97
+ output: process.stdout,
98
+ });
99
+
100
+ const questionAsync = query =>
101
+ new Promise(resolve => rl.question(query, resolve));
102
+
103
+ try {
104
+ const userInput = (await questionAsync(queryStr)).toLowerCase();
105
+
106
+ switch (userInput) {
107
+ case 'yes':
108
+ case 'y':
109
+ return true;
110
+ case 'no':
111
+ case 'n':
112
+ return false;
113
+ default:
114
+ console.warn('invalid input');
115
+ return false;
116
+ }
117
+ } finally {
118
+ rl.close();
105
119
  }
106
- } finally {
107
- rl.close();
108
- }
109
- };
120
+ }
110
121
 
111
- const collectionExists = async function(dbObject, targetCollection) {
112
- const collectionsObjectList = await dbObject.listCollections().toArray();
113
- const collectionsList = collectionsObjectList.map((object) => {
114
- return object.name;
115
- })
116
- return (collectionsList.indexOf(targetCollection) >= 0);
122
+ async function collectionExists(dbObject, targetCollection) {
123
+ const collectionsObjectList = await dbObject.listCollections().toArray();
124
+ const collectionsList = collectionsObjectList.map(object => object.name);
125
+ return (collectionsList.indexOf(targetCollection) >= 0);
117
126
  }
118
127
 
119
- const findMinLog = async function(collectionObj, UpperBoundDateId, collection) {
120
- const minLog = await collectionObj
121
- .find({ _id: { $lt: ObjectId(UpperBoundDateId) } })
122
- .sort({ _id: 1 })
123
- .limit(1)
124
- .toArray();
128
+ async function findMinLog(collectionObj, UpperBoundDateId) {
129
+ const minLog = await collectionObj
130
+ .find({ _id: { $lt: ObjectId(UpperBoundDateId) } })
131
+ .sort({ _id: 1 })
132
+ .limit(1)
133
+ .toArray();
125
134
 
126
- if (minLog.length === 0) {
127
- return undefined;
128
- }
135
+ if (minLog.length === 0) {
136
+ return undefined;
137
+ }
129
138
 
130
- return minLog[0];
139
+ return minLog[0];
131
140
  }
132
141
 
133
- const checkCursorState = function (cursor, collection, targetCollection) {
134
- if (!cursor.cursorState.killed) {
135
- console.info(
136
- `logs from '${collection}' were archived to '${targetCollection}'`
137
- );
138
- return;
139
- } else {
140
- throw new Error(
141
- "Cursor error. Archiving operation may not be completed.\
142
- The old logs were not deleted from the source collection."
143
- );
144
- }
142
+ function checkCursorState(cursor, collection, targetCollection) {
143
+ if (!cursor.cursorState.killed) {
144
+ console.info(`logs from '${collection}' were archived to '${targetCollection}'`);
145
+ } else {
146
+ // eslint-disable-next-line no-multi-str
147
+ throw new Error('Cursor error. Archiving operation may not be completed.\
148
+ The old logs were not deleted from the source collection.');
149
+ }
145
150
  }
146
151
 
147
152
  module.exports = {
148
- objectIdFromDate,
149
- writeLogsToFile,
150
- checkRemnant,
151
- ensureIndex,
152
- getUserInput,
153
- collectionExists,
154
- findMinLog,
155
- checkCursorState,
156
- createRangeStr,
157
- getMinDate,
158
- defaultCollections,
153
+ objectIdFromDate,
154
+ writeLogsToFile,
155
+ checkRemnant,
156
+ ensureIndex,
157
+ getUserInput,
158
+ collectionExists,
159
+ findMinLog,
160
+ checkCursorState,
161
+ createRangeStr,
162
+ getMinDate,
163
+ defaultCollections,
159
164
  };
@@ -1 +1 @@
1
- {"codefresh":{"analyze":{},"completion":{},"completions":{"alias":"completion"},"tag":{},"untag":{},"offline-logs":{"ensure-index":{},"offload-to-collection":{},"offload-to-file":{}},"run":{"__optionHandlers":["../commands/pipeline/run.completion.js"]},"add":{"repository":{},"repo":{"alias":"repository"}},"annotate":{"image":{},"img":{"alias":"image"}},"patch":{"__optionHandlers":["../commands/root/apply.completion.js"],"agent":{"__optionHandlers":["../commands/root/apply.completion.js"]},"board":{"__optionHandlers":["../commands/root/apply.completion.js"]},"project":{"__optionHandlers":["../commands/root/apply.completion.js"]},"runtime-environments":{"__optionHandlers":["../commands/root/apply.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/apply.completion.js"]},"system-runtime-environments":{"__optionHandlers":["../commands/root/apply.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/apply.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/apply.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/apply.completion.js"]},"context":{"__optionHandlers":["../commands/root/apply.completion.js"]},"ctx":{"alias":"context"}},"auth":{"create-context":{},"current-context":{},"get-contexts":{},"use-context":{}},"components":{"update":{}},"create":{"__optionHandlers":["../commands/root/create.completion.js"],"agent":{"__optionHandlers":["../commands/root/create.completion.js"]},"clusters":{"__optionHandlers":["../commands/root/create.completion.js"]},"cluster":{"alias":"clusters"},"annotation":{"__optionHandlers":["../commands/root/create.completion.js"]},"board":{"__optionHandlers":["../commands/root/create.completion.js"]},"composition":{"__optionHandlers":["../commands/composition/create.completion.js","../commands/root/create.completion.js"]},"com":{"alias":"composition"},"project":{"__optionHandlers":["../commands/root/create.completion.js"]},"runtime-environments":{"__optionHandlers":["../commands/root/create.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/create.completion.js"]},"teams":{"__optionHandlers":["../commands/root/create.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"token":{"__optionHandlers":["../commands/root/create.completion.js"]},"helm-repo":{"__optionHandlers":["../commands/root/create.completion.js"]},"registry":{"__optionHandlers":["../commands/root/create.completion.js"],"standard":{"__optionHandlers":["../commands/root/create.completion.js"]}},"trigger":{"__optionHandlers":["../commands/root/create.completion.js"]},"t":{"alias":"trigger"},"trigger-event":{"__optionHandlers":["../commands/root/create.completion.js"]},"te":{"alias":"trigger-event"},"workflow-data-item":{"__optionHandlers":["../commands/root/create.completion.js"]},"wdi":{"alias":"workflow-data-item"},"context":{"__optionHandlers":["../commands/root/create.completion.js"],"config":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret-yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"git":{"__optionHandlers":["../commands/root/create.completion.js"],"bitbucket":{"__optionHandlers":["../commands/root/create.completion.js"]},"github":{"__optionHandlers":["../commands/root/create.completion.js"]},"gitlab":{"__optionHandlers":["../commands/root/create.completion.js"]},"stash":{"__optionHandlers":["../commands/root/create.completion.js"]}},"helm-repository":{"__optionHandlers":["../commands/root/create.completion.js"],"http":{"__optionHandlers":["../commands/root/create.completion.js"]},"s3":{"__optionHandlers":["../commands/root/create.completion.js"]}},"secret-store":{"__optionHandlers":["../commands/root/create.completion.js"],"hashicorp-vault":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes-runtime":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes":{"__optionHandlers":["../commands/root/create.completion.js"]}}},"ctx":{"alias":"context","config":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret-yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"git":{"__optionHandlers":["../commands/root/create.completion.js"],"bitbucket":{"__optionHandlers":["../commands/root/create.completion.js"]},"github":{"__optionHandlers":["../commands/root/create.completion.js"]},"gitlab":{"__optionHandlers":["../commands/root/create.completion.js"]},"stash":{"__optionHandlers":["../commands/root/create.completion.js"]}},"helm-repository":{"__optionHandlers":["../commands/root/create.completion.js"],"http":{"__optionHandlers":["../commands/root/create.completion.js"]},"s3":{"__optionHandlers":["../commands/root/create.completion.js"]}},"secret-store":{"__optionHandlers":["../commands/root/create.completion.js"],"hashicorp-vault":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes-runtime":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes":{"__optionHandlers":["../commands/root/create.completion.js"]}}}},"delete":{"__optionHandlers":["../commands/root/delete.completion.js"],"agent":{"__optionHandlers":["../commands/root/delete.completion.js"]},"annotation":{"__optionHandlers":["../commands/root/delete.completion.js"]},"board":{"__optionHandlers":["../commands/root/delete.completion.js"]},"cluster":{"__optionHandlers":["../commands/root/delete.completion.js"]},"clusters":{"alias":"cluster"},"composition":{"__optionHandlers":["../commands/root/delete.completion.js"]},"com":{"alias":"composition"},"environment":{"__optionHandlers":["../commands/root/delete.completion.js"]},"env":{"alias":"environment"},"pipeline":{"__optionHandlers":["../commands/root/delete.completion.js"]},"pip":{"alias":"pipeline"},"project":{"__optionHandlers":["../commands/root/delete.completion.js"]},"repository":{"__optionHandlers":["../commands/root/delete.completion.js"]},"repo":{"alias":"repository"},"runtime-environments":{"__optionHandlers":["../commands/root/delete.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/delete.completion.js"]},"step-type":{"__optionHandlers":["../commands/root/delete.completion.js"]},"system-runtime-environments":{"__optionHandlers":["../commands/root/delete.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/delete.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/delete.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/delete.completion.js"]},"registry":{"__optionHandlers":["../commands/root/delete.completion.js"]},"trigger":{"__optionHandlers":["../commands/root/delete.completion.js"]},"t":{"alias":"trigger"},"trigger-event":{"__optionHandlers":["../commands/root/delete.completion.js"]},"te":{"alias":"trigger-event"},"context":{"__optionHandlers":["../commands/root/delete.completion.js"]},"ctx":{"alias":"context"}},"diff":{"__optionHandlers":["../commands/root/diff.completion.js"],"runtime-environments":{"__optionHandlers":["../commands/root/diff.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"system-runtime-environments":{"__optionHandlers":["../commands/root/diff.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"}},"download":{"audit":{}},"generate":{"image-pull-secret":{}},"get":{"__optionHandlers":["../commands/root/get.completion.js"],"agents":{"__optionHandlers":["../commands/root/get.completion.js"]},"agent":{"alias":"agents"},"annotation":{"__optionHandlers":["../commands/root/get.completion.js"]},"boards":{"__optionHandlers":["../commands/root/get.completion.js"]},"board":{"alias":"boards"},"clusters":{"__optionHandlers":["../commands/root/get.completion.js"]},"cluster":{"alias":"clusters"},"compositions":{"__optionHandlers":["../commands/root/get.completion.js"]},"com":{"alias":"compositions"},"composition":{"alias":"compositions"},"environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"env":{"alias":"environments"},"environment":{"alias":"environments"},"images":{"__optionHandlers":["../commands/root/get.completion.js"]},"img":{"alias":"images"},"image":{"alias":"images"},"pipelines":{"__positionalHandler":"../commands/pipeline/get.completion.js","__optionHandlers":["../commands/root/get.completion.js"]},"pip":{"alias":"pipelines"},"pipeline":{"alias":"pipelines"},"projects":{"__optionHandlers":["../commands/root/get.completion.js"]},"project":{"alias":"projects"},"repository":{"__optionHandlers":["../commands/root/get.completion.js"]},"repo":{"alias":"repository"},"runtime-environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"sections":{"__optionHandlers":["../commands/root/get.completion.js"]},"section":{"alias":"sections"},"step-types":{"__positionalHandler":"../commands/step/get.completion.js","__optionHandlers":["../commands/root/get.completion.js"]},"step-type":{"alias":"step-types"},"system-runtime-environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/get.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/get.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/get.completion.js"]},"registry":{"__optionHandlers":["../commands/root/get.completion.js"]},"triggers":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger":{"alias":"triggers"},"t":{"alias":"triggers"},"trigger-events":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger-event":{"alias":"trigger-events"},"te":{"alias":"trigger-events"},"trigger-types":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger-type":{"alias":"trigger-types"},"tt":{"alias":"trigger-types"},"builds":{"__optionHandlers":["../commands/root/get.completion.js"]},"build":{"alias":"builds"},"workflow-data-item":{"__optionHandlers":["../commands/root/get.completion.js"]},"wdi":{"alias":"workflow-data-item"},"contexts":{"__optionHandlers":["../commands/root/get.completion.js"]},"ctx":{"alias":"contexts"},"context":{"alias":"contexts"}},"install":{"runtime":{},"agent":{},"app-proxy":{},"monitor":{},"gitops":{}},"replace":{"__optionHandlers":["../commands/root/replace.completion.js"],"composition":{"__optionHandlers":["../commands/composition/replace.completion.js","../commands/root/replace.completion.js"]},"com":{"alias":"composition"}},"runner":{"delete":{},"execute-test-pipeline":{},"info":{},"init":{},"upgrade":{}},"synchronize":{"teams":{},"team":{"alias":"teams"},"tm":{"alias":"teams"}},"uninstall":{"agent":{},"app-proxy":{},"runtime":{},"monitor":{},"gitops":{}},"upgrade":{"app-proxy":{},"gitops":{}},"validate":{"__positionalHandler":"../commands/root/validate.completion.js"},"version":{},"attach":{},"cli-config":{"get":{},"help":{},"profile":{},"set":{}},"set-helm-config":{},"install-chart":{},"helm-promotion":{},"delete-release":{},"rollback-release":{},"test-release":{},"approve":{},"deny":{},"logs":{},"restart":{},"terminate":{},"wait":{}}}
1
+ {"codefresh":{"analyze":{},"completion":{},"completions":{"alias":"completion"},"tag":{},"untag":{},"offline-logs":{"ensure-index":{},"offload-to-collection":{},"offload-to-file":{}},"run":{"__optionHandlers":["../commands/pipeline/run.completion.js"]},"add":{"repository":{},"repo":{"alias":"repository"}},"annotate":{"image":{},"img":{"alias":"image"}},"patch":{"__optionHandlers":["../commands/root/apply.completion.js"],"agent":{"__optionHandlers":["../commands/root/apply.completion.js"]},"board":{"__optionHandlers":["../commands/root/apply.completion.js"]},"project":{"__optionHandlers":["../commands/root/apply.completion.js"]},"runtime-environments":{"__optionHandlers":["../commands/root/apply.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/apply.completion.js"]},"system-runtime-environments":{"__optionHandlers":["../commands/root/apply.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/apply.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/apply.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/apply.completion.js"]},"context":{"__optionHandlers":["../commands/root/apply.completion.js"]},"ctx":{"alias":"context"}},"auth":{"create-context":{},"current-context":{},"get-contexts":{},"use-context":{}},"components":{"update":{}},"create":{"__optionHandlers":["../commands/root/create.completion.js"],"agent":{"__optionHandlers":["../commands/root/create.completion.js"]},"clusters":{"__optionHandlers":["../commands/root/create.completion.js"]},"cluster":{"alias":"clusters"},"annotation":{"__optionHandlers":["../commands/root/create.completion.js"]},"board":{"__optionHandlers":["../commands/root/create.completion.js"]},"composition":{"__optionHandlers":["../commands/composition/create.completion.js","../commands/root/create.completion.js"]},"com":{"alias":"composition"},"project":{"__optionHandlers":["../commands/root/create.completion.js"]},"runtime-environments":{"__optionHandlers":["../commands/root/create.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/create.completion.js"]},"teams":{"__optionHandlers":["../commands/root/create.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"token":{"__optionHandlers":["../commands/root/create.completion.js"]},"helm-repo":{"__optionHandlers":["../commands/root/create.completion.js"]},"registry":{"__optionHandlers":["../commands/root/create.completion.js"],"standard":{"__optionHandlers":["../commands/root/create.completion.js"]}},"trigger":{"__optionHandlers":["../commands/root/create.completion.js"]},"t":{"alias":"trigger"},"trigger-event":{"__optionHandlers":["../commands/root/create.completion.js"]},"te":{"alias":"trigger-event"},"workflow-data-item":{"__optionHandlers":["../commands/root/create.completion.js"]},"wdi":{"alias":"workflow-data-item"},"context":{"__optionHandlers":["../commands/root/create.completion.js"],"config":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret-yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"git":{"__optionHandlers":["../commands/root/create.completion.js"],"bitbucket":{"__optionHandlers":["../commands/root/create.completion.js"]},"github":{"__optionHandlers":["../commands/root/create.completion.js"]},"gitlab":{"__optionHandlers":["../commands/root/create.completion.js"]},"stash":{"__optionHandlers":["../commands/root/create.completion.js"]}},"helm-repository":{"__optionHandlers":["../commands/root/create.completion.js"],"http":{"__optionHandlers":["../commands/root/create.completion.js"]},"s3":{"__optionHandlers":["../commands/root/create.completion.js"]}},"secret-store":{"__optionHandlers":["../commands/root/create.completion.js"],"hashicorp-vault":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes-runtime":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes":{"__optionHandlers":["../commands/root/create.completion.js"]}}},"ctx":{"alias":"context","config":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret":{"__optionHandlers":["../commands/root/create.completion.js"]},"secret-yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"yaml":{"__optionHandlers":["../commands/root/create.completion.js"]},"git":{"__optionHandlers":["../commands/root/create.completion.js"],"bitbucket":{"__optionHandlers":["../commands/root/create.completion.js"]},"github":{"__optionHandlers":["../commands/root/create.completion.js"]},"gitlab":{"__optionHandlers":["../commands/root/create.completion.js"]},"stash":{"__optionHandlers":["../commands/root/create.completion.js"]}},"helm-repository":{"__optionHandlers":["../commands/root/create.completion.js"],"http":{"__optionHandlers":["../commands/root/create.completion.js"]},"s3":{"__optionHandlers":["../commands/root/create.completion.js"]}},"secret-store":{"__optionHandlers":["../commands/root/create.completion.js"],"hashicorp-vault":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes-runtime":{"__optionHandlers":["../commands/root/create.completion.js"]},"kubernetes":{"__optionHandlers":["../commands/root/create.completion.js"]}}}},"delete":{"__optionHandlers":["../commands/root/delete.completion.js"],"agent":{"__optionHandlers":["../commands/root/delete.completion.js"]},"annotation":{"__optionHandlers":["../commands/root/delete.completion.js"]},"board":{"__optionHandlers":["../commands/root/delete.completion.js"]},"cluster":{"__optionHandlers":["../commands/root/delete.completion.js"]},"clusters":{"alias":"cluster"},"composition":{"__optionHandlers":["../commands/root/delete.completion.js"]},"com":{"alias":"composition"},"environment":{"__optionHandlers":["../commands/root/delete.completion.js"]},"env":{"alias":"environment"},"pipeline":{"__optionHandlers":["../commands/root/delete.completion.js"]},"pip":{"alias":"pipeline"},"project":{"__optionHandlers":["../commands/root/delete.completion.js"]},"repository":{"__optionHandlers":["../commands/root/delete.completion.js"]},"repo":{"alias":"repository"},"runtime-environments":{"__optionHandlers":["../commands/root/delete.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"section":{"__optionHandlers":["../commands/root/delete.completion.js"]},"step-type":{"__optionHandlers":["../commands/root/delete.completion.js"]},"system-runtime-environments":{"__optionHandlers":["../commands/root/delete.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/delete.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/delete.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/delete.completion.js"]},"registry":{"__optionHandlers":["../commands/root/delete.completion.js"]},"trigger":{"__optionHandlers":["../commands/root/delete.completion.js"]},"t":{"alias":"trigger"},"trigger-event":{"__optionHandlers":["../commands/root/delete.completion.js"]},"te":{"alias":"trigger-event"},"context":{"__optionHandlers":["../commands/root/delete.completion.js"]},"ctx":{"alias":"context"}},"diff":{"__optionHandlers":["../commands/root/diff.completion.js"],"runtime-environments":{"__optionHandlers":["../commands/root/diff.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"system-runtime-environments":{"__optionHandlers":["../commands/root/diff.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"}},"download":{"audit":{}},"generate":{"image-pull-secret":{}},"get":{"__optionHandlers":["../commands/root/get.completion.js"],"agents":{"__optionHandlers":["../commands/root/get.completion.js"]},"agent":{"alias":"agents"},"annotation":{"__optionHandlers":["../commands/root/get.completion.js"]},"boards":{"__optionHandlers":["../commands/root/get.completion.js"]},"board":{"alias":"boards"},"clusters":{"__optionHandlers":["../commands/root/get.completion.js"]},"cluster":{"alias":"clusters"},"compositions":{"__optionHandlers":["../commands/root/get.completion.js"]},"com":{"alias":"compositions"},"composition":{"alias":"compositions"},"environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"env":{"alias":"environments"},"environment":{"alias":"environments"},"images":{"__optionHandlers":["../commands/root/get.completion.js"]},"img":{"alias":"images"},"image":{"alias":"images"},"pipelines":{"__positionalHandler":"../commands/pipeline/get.completion.js","__optionHandlers":["../commands/root/get.completion.js"]},"pip":{"alias":"pipelines"},"pipeline":{"alias":"pipelines"},"projects":{"__optionHandlers":["../commands/root/get.completion.js"]},"project":{"alias":"projects"},"repository":{"__optionHandlers":["../commands/root/get.completion.js"]},"repo":{"alias":"repository"},"runtime-environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"re":{"alias":"runtime-environments"},"runtime-environment":{"alias":"runtime-environments"},"sections":{"__optionHandlers":["../commands/root/get.completion.js"]},"section":{"alias":"sections"},"step-types":{"__positionalHandler":"../commands/step/get.completion.js","__optionHandlers":["../commands/root/get.completion.js"]},"step-type":{"alias":"step-types"},"system-runtime-environments":{"__optionHandlers":["../commands/root/get.completion.js"]},"sys-re":{"alias":"system-runtime-environments"},"system-runtime-environment":{"alias":"system-runtime-environments"},"teams":{"__optionHandlers":["../commands/root/get.completion.js"]},"team":{"alias":"teams"},"tm":{"alias":"teams"},"tokens":{"__optionHandlers":["../commands/root/get.completion.js"]},"token":{"alias":"tokens"},"helm-repo":{"__optionHandlers":["../commands/root/get.completion.js"]},"registry":{"__optionHandlers":["../commands/root/get.completion.js"]},"triggers":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger":{"alias":"triggers"},"t":{"alias":"triggers"},"trigger-events":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger-event":{"alias":"trigger-events"},"te":{"alias":"trigger-events"},"trigger-types":{"__optionHandlers":["../commands/root/get.completion.js"]},"trigger-type":{"alias":"trigger-types"},"tt":{"alias":"trigger-types"},"builds":{"__optionHandlers":["../commands/root/get.completion.js"]},"build":{"alias":"builds"},"workflow-data-item":{"__optionHandlers":["../commands/root/get.completion.js"]},"wdi":{"alias":"workflow-data-item"},"contexts":{"__optionHandlers":["../commands/root/get.completion.js"]},"ctx":{"alias":"contexts"},"context":{"alias":"contexts"}},"install":{"runtime":{},"agent":{},"app-proxy":{},"monitor":{},"gitops":{}},"replace":{"__optionHandlers":["../commands/root/replace.completion.js"],"composition":{"__optionHandlers":["../commands/composition/replace.completion.js","../commands/root/replace.completion.js"]},"com":{"alias":"composition"}},"runner":{"delete":{},"execute-test-pipeline":{},"init":{},"info":{},"upgrade":{}},"synchronize":{"teams":{},"team":{"alias":"teams"},"tm":{"alias":"teams"}},"uninstall":{"agent":{},"app-proxy":{},"runtime":{},"monitor":{},"gitops":{}},"upgrade":{"app-proxy":{},"gitops":{}},"validate":{"__positionalHandler":"../commands/root/validate.completion.js"},"version":{},"attach":{},"cli-config":{"get":{},"help":{},"profile":{},"set":{}},"set-helm-config":{},"install-chart":{},"helm-promotion":{},"delete-release":{},"rollback-release":{},"test-release":{},"approve":{},"deny":{},"logs":{},"restart":{},"terminate":{},"wait":{}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codefresh",
3
- "version": "0.79.0",
3
+ "version": "0.80.0",
4
4
  "description": "Codefresh command line utility",
5
5
  "main": "index.js",
6
6
  "preferGlobal": true,
@@ -49,15 +49,12 @@
49
49
  "cf-errors": "^0.1.16",
50
50
  "chalk": "^4.1.0",
51
51
  "cli-progress": "3.10.0",
52
- "codefresh-sdk": "^1.10.0",
52
+ "codefresh-sdk": "^1.11.0",
53
53
  "colors": "1.4.0",
54
54
  "columnify": "^1.5.4",
55
55
  "compare-versions": "^3.4.0",
56
56
  "copy-dir": "^0.3.0",
57
57
  "debug": "^3.1.0",
58
- "decompress": "^4.2.1",
59
- "decompress-targz": "^4.1.1",
60
- "decompress-unzip": "^4.0.1",
61
58
  "diff": "^3.5.0",
62
59
  "dockerode": "^2.5.7",
63
60
  "draftlog": "^1.0.12",
@@ -72,7 +69,7 @@
72
69
  "kubernetes-client": "^9.0.0",
73
70
  "lodash": "^4.17.21",
74
71
  "mkdirp": "^0.5.1",
75
- "moment": "^2.19.4",
72
+ "moment": "^2.29.4",
76
73
  "mongodb": "^3.7.3",
77
74
  "node-forge": "^1.3.0",
78
75
  "ora": "^5.4.1",
@@ -84,10 +81,12 @@
84
81
  "requestretry": "^7.0.2",
85
82
  "rimraf": "^2.6.2",
86
83
  "semver": "^7.3.2",
84
+ "tar-stream": "^2.2.0",
87
85
  "uuid": "^3.1.0",
88
86
  "yaml": "^1.10.0",
89
87
  "yargs": "^15.4.1",
90
- "yargs-parser": "^13.0.0"
88
+ "yargs-parser": "^13.0.0",
89
+ "zip": "^1.2.0"
91
90
  },
92
91
  "devDependencies": {
93
92
  "@types/node-forge": "^1.0.1",
@@ -114,4 +113,4 @@
114
113
  "./test-setup.js"
115
114
  ]
116
115
  }
117
- }
116
+ }
package/yarn.lock CHANGED
@@ -739,6 +739,11 @@ balanced-match@^1.0.0:
739
739
  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
740
740
  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
741
741
 
742
+ base64-js@0.0.2:
743
+ version "0.0.2"
744
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784"
745
+ integrity sha512-Pj9L87dCdGcKlSqPVUjD+q96pbIx1zQQLb2CUiWURfjiBELv84YX+0nGnKmyT/9KkC7PQk7UN1w+Al8bBozaxQ==
746
+
742
747
  base64-js@^1.0.2:
743
748
  version "1.3.1"
744
749
  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
@@ -811,6 +816,14 @@ bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.7.2:
811
816
  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
812
817
  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
813
818
 
819
+ bops@~0.1.1:
820
+ version "0.1.1"
821
+ resolved "https://registry.yarnpkg.com/bops/-/bops-0.1.1.tgz#062e02a8daa801fa10f2e5dbe6740cff801fe17e"
822
+ integrity sha512-Cx1zStcMp+YoFan8OgudNPMih82eJZE+27feki1WeyoFTR9Ye7AR1SUW3saE6QQvdS/g52aJ2IojBjWOiRiLbw==
823
+ dependencies:
824
+ base64-js "0.0.2"
825
+ to-utf8 "0.0.1"
826
+
814
827
  brace-expansion@^1.1.7:
815
828
  version "1.1.11"
816
829
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -1164,32 +1177,31 @@ code-point-at@^1.0.0:
1164
1177
  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
1165
1178
  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
1166
1179
 
1167
- codefresh-sdk@^1.10.0:
1168
- version "1.10.0"
1169
- resolved "https://registry.yarnpkg.com/codefresh-sdk/-/codefresh-sdk-1.10.0.tgz#92d875603d4259288cb5e3221e67141746506317"
1170
- integrity sha512-yBHsmxEdZ4ET7XZ3mDeGqjHpiT8UPMTBx9rYKCxZzSnbMzo8OFu9XtUSjX3uABNr0eppB4sH3Ym27Q8VwzqsPw==
1180
+ codefresh-sdk@^1.11.0:
1181
+ version "1.11.0"
1182
+ resolved "https://registry.yarnpkg.com/codefresh-sdk/-/codefresh-sdk-1.11.0.tgz#5b3b1c01a3f0e33f060ab4b313e4e27c4308b02c"
1183
+ integrity sha512-TuF22j9o/vg6gTZvqIA0J1Ca2jiRa8qsvYsCmk4hV1ZDnSqUAomPLlCpiL2qxdouy/Cja54y0HUoRowsqGvU4A==
1171
1184
  dependencies:
1172
1185
  "@codefresh-io/cf-receiver" "0.0.1-alpha19"
1173
1186
  bluebird "^3.7.2"
1174
1187
  cf-errors "^0.1.16"
1175
1188
  compare-versions "^3.4.0"
1176
1189
  debug "^4.1.1"
1177
- decompress "^4.2.1"
1178
- decompress-targz "^4.1.1"
1179
- decompress-unzip "^4.0.1"
1180
1190
  firebase "git+https://github.com/codefresh-io/firebase.git#80b2ed883ff281cd67b53bd0f6a0bbd6f330fed5"
1181
1191
  fs-extra "^7.0.1"
1182
1192
  js-yaml "^3.13.1"
1183
1193
  jsonwebtoken "^8.4.0"
1184
1194
  lodash "^4.17.21"
1185
- moment "^2.24.0"
1195
+ moment "^2.29.4"
1186
1196
  recursive-readdir "^2.2.2"
1187
1197
  request "2.88.2"
1188
1198
  request-promise "4.2.6"
1189
1199
  requestretry "^7.0.2"
1190
1200
  swagger-client "~3.13.7"
1201
+ tar-stream "^2.2.0"
1191
1202
  uniqid "^5.4.0"
1192
1203
  uuid "^3.3.2"
1204
+ zip "^1.2.0"
1193
1205
 
1194
1206
  collection-visit@^1.0.0:
1195
1207
  version "1.0.0"
@@ -1471,7 +1483,7 @@ decompress-tarbz2@^4.0.0:
1471
1483
  seek-bzip "^1.0.5"
1472
1484
  unbzip2-stream "^1.0.9"
1473
1485
 
1474
- decompress-targz@^4.0.0, decompress-targz@^4.1.1:
1486
+ decompress-targz@^4.0.0:
1475
1487
  version "4.1.1"
1476
1488
  resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
1477
1489
  integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==
@@ -1490,7 +1502,7 @@ decompress-unzip@^4.0.1:
1490
1502
  pify "^2.3.0"
1491
1503
  yauzl "^2.4.2"
1492
1504
 
1493
- decompress@^4.0.0, decompress@^4.2.1:
1505
+ decompress@^4.0.0:
1494
1506
  version "4.2.1"
1495
1507
  resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118"
1496
1508
  integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==
@@ -4277,10 +4289,10 @@ mkdirp@^0.5.1:
4277
4289
  dependencies:
4278
4290
  minimist "^1.2.5"
4279
4291
 
4280
- moment@^2.19.4, moment@^2.24.0:
4281
- version "2.25.3"
4282
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0"
4283
- integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==
4292
+ moment@^2.29.4:
4293
+ version "2.29.4"
4294
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
4295
+ integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
4284
4296
 
4285
4297
  mongodb@^3.7.3:
4286
4298
  version "3.7.3"
@@ -6048,7 +6060,7 @@ tar-stream@^1.1.2, tar-stream@^1.5.2:
6048
6060
  to-buffer "^1.1.1"
6049
6061
  xtend "^4.0.0"
6050
6062
 
6051
- tar-stream@^2.1.4:
6063
+ tar-stream@^2.1.4, tar-stream@^2.2.0:
6052
6064
  version "2.2.0"
6053
6065
  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
6054
6066
  integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
@@ -6149,6 +6161,11 @@ to-regex@^3.0.1, to-regex@^3.0.2:
6149
6161
  regex-not "^1.0.2"
6150
6162
  safe-regex "^1.1.0"
6151
6163
 
6164
+ to-utf8@0.0.1:
6165
+ version "0.0.1"
6166
+ resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852"
6167
+ integrity sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ==
6168
+
6152
6169
  tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0:
6153
6170
  version "2.5.0"
6154
6171
  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -6737,3 +6754,10 @@ yauzl@^2.4.2:
6737
6754
  dependencies:
6738
6755
  buffer-crc32 "~0.2.3"
6739
6756
  fd-slicer "~1.1.0"
6757
+
6758
+ zip@^1.2.0:
6759
+ version "1.2.0"
6760
+ resolved "https://registry.yarnpkg.com/zip/-/zip-1.2.0.tgz#ad0ad42265309be42eb56fc86194e17c24e66a9c"
6761
+ integrity sha512-8B4Z9BXJKkI8BkHhKvQan4rwCzUENnj95YHFYrI7F1NbqKCIdW86kujctzEB+kJ6XapHPiAhiZ9xi5GbW5SPdw==
6762
+ dependencies:
6763
+ bops "~0.1.1"