@optimizely/ocp-cli 1.0.0-beta.8 → 1.0.1-beta.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/dist/commands/app/GetLogLevel.d.ts +7 -0
- package/dist/commands/app/GetLogLevel.js +63 -0
- package/dist/commands/app/GetLogLevel.js.map +1 -0
- package/dist/commands/app/SetLogLevel.d.ts +9 -0
- package/dist/commands/app/SetLogLevel.js +84 -0
- package/dist/commands/app/SetLogLevel.js.map +1 -0
- package/dist/index.js +17 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/Rivendell.d.ts +21 -0
- package/dist/lib/Rivendell.js +23 -0
- package/dist/lib/Rivendell.js.map +1 -1
- package/dist/lib/checkForUpdate.js +8 -1
- package/dist/lib/checkForUpdate.js.map +1 -1
- package/dist/lib/migrateOptiCli.d.ts +1 -0
- package/dist/lib/migrateOptiCli.js +30 -0
- package/dist/lib/migrateOptiCli.js.map +1 -0
- package/dist/oo-cli.manifest.json +105 -1
- package/package.json +1 -1
- package/src/commands/app/GetLogLevel.ts +48 -0
- package/src/commands/app/SetLogLevel.ts +71 -0
- package/src/index.ts +24 -7
- package/src/lib/Rivendell.ts +43 -0
- package/src/lib/checkForUpdate.ts +14 -1
- package/src/lib/migrateOptiCli.ts +38 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.GetLogLevelCommand = void 0;
|
|
10
|
+
const chalk = require("chalk");
|
|
11
|
+
const oo_cli_1 = require("oo-cli");
|
|
12
|
+
const AppContext_1 = require("../../lib/AppContext");
|
|
13
|
+
const die_1 = require("../../lib/die");
|
|
14
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
15
|
+
const formatError_1 = require("../../lib/formatError");
|
|
16
|
+
let GetLogLevelCommand = class GetLogLevelCommand {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.availability = '';
|
|
19
|
+
}
|
|
20
|
+
async getLogLevel() {
|
|
21
|
+
try {
|
|
22
|
+
const context = (0, AppContext_1.appContext)(this.appVersion);
|
|
23
|
+
if (!context.appId || !context.version) {
|
|
24
|
+
return (0, die_1.die)('App ID and version are required');
|
|
25
|
+
}
|
|
26
|
+
const logLevelRecord = await Rivendell_1.Rivendell.getLogLevel(this.availability, context.appId, context.version, this.trackerId);
|
|
27
|
+
this.render(logLevelRecord);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
render(record) {
|
|
34
|
+
if (record.trackerId) {
|
|
35
|
+
console.log(chalk.green(`install log level is currently set to ${record.logLevel}`));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.log(chalk.green(`${this.appVersion} log level is currently set to ${record.logLevel}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
__decorate([
|
|
43
|
+
oo_cli_1.param,
|
|
44
|
+
oo_cli_1.required,
|
|
45
|
+
(0, oo_cli_1.help)('The App ID and version')
|
|
46
|
+
], GetLogLevelCommand.prototype, "appVersion", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, oo_cli_1.option)('trackerId'),
|
|
49
|
+
(0, oo_cli_1.help)('The Tracker ID of the installed account. If not provided, returns default log level for the app version')
|
|
50
|
+
], GetLogLevelCommand.prototype, "trackerId", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, oo_cli_1.option)('a'),
|
|
53
|
+
(0, oo_cli_1.help)('The availability zone that will be targeted (default: us)')
|
|
54
|
+
], GetLogLevelCommand.prototype, "availability", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, oo_cli_1.command)('get-log-level'),
|
|
57
|
+
(0, oo_cli_1.help)('Get the logLevel of a particular app version or an installation')
|
|
58
|
+
], GetLogLevelCommand.prototype, "getLogLevel", null);
|
|
59
|
+
GetLogLevelCommand = __decorate([
|
|
60
|
+
(0, oo_cli_1.namespace)('app')
|
|
61
|
+
], GetLogLevelCommand);
|
|
62
|
+
exports.GetLogLevelCommand = GetLogLevelCommand;
|
|
63
|
+
//# sourceMappingURL=GetLogLevel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetLogLevel.js","sourceRoot":"","sources":["../../../src/commands/app/GetLogLevel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,mCAAyE;AACzE,qDAAgD;AAChD,uCAAkC;AAClC,mDAA8C;AAC9C,uDAAkD;AAI3C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;QAYG,iBAAY,GAAW,EAAE,CAAC;IA0BpC,CAAC;IAtBc,AAAN,KAAK,CAAC,WAAW;QACtB,IAAI;YACF,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtC,OAAO,IAAA,SAAG,EAAC,iCAAiC,CAAC,CAAC;aAC/C;YAED,MAAM,cAAc,GAAG,MAAM,qBAAS,CAAC,WAAW,CAChD,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SAC7B;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;IAEO,MAAM,CAAC,MAAsB;QACnC,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACtF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,kCAAkC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACjG;IACH,CAAC;CACF,CAAA;AAlCC;IAHC,cAAK;IACL,iBAAQ;IACR,IAAA,aAAI,EAAC,wBAAwB,CAAC;sDACJ;AAI3B;IAFC,IAAA,eAAM,EAAC,WAAW,CAAC;IACnB,IAAA,aAAI,EAAC,yGAAyG,CAAC;qDACtF;AAI1B;IAFC,IAAA,eAAM,EAAC,GAAG,CAAC;IACX,IAAA,aAAI,EAAC,2DAA2D,CAAC;wDAChC;AAIrB;IAFZ,IAAA,gBAAO,EAAC,eAAe,CAAC;IACxB,IAAA,aAAI,EAAC,iEAAiE,CAAC;qDAcvE;AA7BU,kBAAkB;IAD9B,IAAA,kBAAS,EAAC,KAAK,CAAC;GACJ,kBAAkB,CAsC9B;AAtCY,gDAAkB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.SetLogLevelCommand = void 0;
|
|
10
|
+
const chalk = require("chalk");
|
|
11
|
+
const oo_cli_1 = require("oo-cli");
|
|
12
|
+
const parse_duration_1 = require("parse-duration");
|
|
13
|
+
const AppContext_1 = require("../../lib/AppContext");
|
|
14
|
+
const die_1 = require("../../lib/die");
|
|
15
|
+
const Rivendell_1 = require("../../lib/Rivendell");
|
|
16
|
+
const formatError_1 = require("../../lib/formatError");
|
|
17
|
+
var LogLevel = Rivendell_1.Rivendell.LogLevel;
|
|
18
|
+
let SetLogLevelCommand = class SetLogLevelCommand {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.availability = '';
|
|
21
|
+
}
|
|
22
|
+
async setLogLevel() {
|
|
23
|
+
try {
|
|
24
|
+
const context = (0, AppContext_1.appContext)(this.appVersion);
|
|
25
|
+
if (!context.appId || !context.version) {
|
|
26
|
+
return (0, die_1.die)('App ID and version are required');
|
|
27
|
+
}
|
|
28
|
+
const level = this.getLogLevel(this.logLevel);
|
|
29
|
+
const ttlSeconds = (0, parse_duration_1.default)(this.timeToLive, 'second');
|
|
30
|
+
if (!ttlSeconds) {
|
|
31
|
+
(0, die_1.die)(chalk.red('Invalid "--ttl" input, should be relative string (i.e. "5m" for 5 minutes.'));
|
|
32
|
+
}
|
|
33
|
+
await Rivendell_1.Rivendell.setLogLevel(this.availability, context.appId, context.version, level.toString(), ttlSeconds, this.trackerId);
|
|
34
|
+
if (this.trackerId) {
|
|
35
|
+
console.log(chalk.green(`Successfully set log level for tracker ${this.trackerId} of the app version ${this.appVersion}`));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.log(chalk.green(`Successfully set log level for the app version ${this.appVersion}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
(0, die_1.die)((0, formatError_1.formatError)(e));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
getLogLevel(logLevel) {
|
|
46
|
+
const key = logLevel.toUpperCase();
|
|
47
|
+
if (!LogLevel[key]) {
|
|
48
|
+
(0, die_1.die)(`${logLevel} is not a valid LogLevel`);
|
|
49
|
+
}
|
|
50
|
+
return LogLevel[key];
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
__decorate([
|
|
54
|
+
oo_cli_1.param,
|
|
55
|
+
oo_cli_1.required,
|
|
56
|
+
(0, oo_cli_1.help)('The App ID and version')
|
|
57
|
+
], SetLogLevelCommand.prototype, "appVersion", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
oo_cli_1.param,
|
|
60
|
+
oo_cli_1.required,
|
|
61
|
+
(0, oo_cli_1.help)(`The desired logLevel to set. Possible values: ${Object.values(LogLevel).join(', ')}`)
|
|
62
|
+
], SetLogLevelCommand.prototype, "logLevel", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, oo_cli_1.option)('trackerId'),
|
|
65
|
+
(0, oo_cli_1.help)('The Tracker ID of the installed account. If not provided, log level is set for the app version')
|
|
66
|
+
], SetLogLevelCommand.prototype, "trackerId", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, oo_cli_1.option)('ttl'),
|
|
69
|
+
(0, oo_cli_1.help)('LogLevel expiration period (TTL) as relative string (i.e. "5m" for 5 minutes). Default: 2h'),
|
|
70
|
+
(0, oo_cli_1.defaultValue)('2h')
|
|
71
|
+
], SetLogLevelCommand.prototype, "timeToLive", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, oo_cli_1.option)('a'),
|
|
74
|
+
(0, oo_cli_1.help)('The availability zone that will be targeted (default: us)')
|
|
75
|
+
], SetLogLevelCommand.prototype, "availability", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, oo_cli_1.command)('set-log-level'),
|
|
78
|
+
(0, oo_cli_1.help)('Set the logLevel of a particular app version or an installation')
|
|
79
|
+
], SetLogLevelCommand.prototype, "setLogLevel", null);
|
|
80
|
+
SetLogLevelCommand = __decorate([
|
|
81
|
+
(0, oo_cli_1.namespace)('app')
|
|
82
|
+
], SetLogLevelCommand);
|
|
83
|
+
exports.SetLogLevelCommand = SetLogLevelCommand;
|
|
84
|
+
//# sourceMappingURL=SetLogLevel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetLogLevel.js","sourceRoot":"","sources":["../../../src/commands/app/SetLogLevel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,mCAAuF;AACvF,mDAAwD;AACxD,qDAAgD;AAChD,uCAAkC;AAClC,mDAA8C;AAC9C,uDAAkD;AAClD,IAAO,QAAQ,GAAG,qBAAS,CAAC,QAAQ,CAAC;AAG9B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;QAsBG,iBAAY,GAAW,EAAE,CAAC;IAsCpC,CAAC;IAlCc,AAAN,KAAK,CAAC,WAAW;QACtB,IAAI;YACF,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACtC,OAAO,IAAA,SAAG,EAAC,iCAAiC,CAAC,CAAC;aAC/C;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,EAAE;gBACf,IAAA,SAAG,EAAC,KAAK,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;aAC9F;YAED,MAAM,qBAAS,CAAC,WAAW,CACzB,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,UAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACpG,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aAC5H;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kDAAkD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aAC/F;SAEF;QAAC,OAAO,CAAM,EAAE;YACf,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;SACrB;IACH,CAAC;IAEO,WAAW,CAAC,QAAgB;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAgB,CAAC,EAAE;YAC/B,IAAA,SAAG,EAAC,GAAG,QAAQ,0BAA0B,CAAC,CAAC;SAC5C;QACD,OAAO,QAAQ,CAAC,GAAgB,CAAC,CAAC;IACtC,CAAC;CAEF,CAAA;AAxDC;IAHC,cAAK;IACL,iBAAQ;IACR,IAAA,aAAI,EAAC,wBAAwB,CAAC;sDACJ;AAK3B;IAHC,cAAK;IACL,iBAAQ;IACR,IAAA,aAAI,EAAC,iDAAiD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oDACnE;AAIzB;IAFC,IAAA,eAAM,EAAC,WAAW,CAAC;IACnB,IAAA,aAAI,EAAC,gGAAgG,CAAC;qDAC7E;AAK1B;IAHC,IAAA,eAAM,EAAC,KAAK,CAAC;IACb,IAAA,aAAI,EAAC,4FAA4F,CAAC;IAClG,IAAA,qBAAY,EAAC,IAAI,CAAC;sDACQ;AAI3B;IAFC,IAAA,eAAM,EAAC,GAAG,CAAC;IACX,IAAA,aAAI,EAAC,2DAA2D,CAAC;wDAChC;AAIrB;IAFZ,IAAA,gBAAO,EAAC,eAAe,CAAC;IACxB,IAAA,aAAI,EAAC,iEAAiE,CAAC;qDAyBvE;AAlDU,kBAAkB;IAD9B,IAAA,kBAAS,EAAC,KAAK,CAAC;GACJ,kBAAkB,CA4D9B;AA5DY,gDAAkB"}
|
package/dist/index.js
CHANGED
|
@@ -4,12 +4,24 @@ const oo_cli_1 = require("oo-cli");
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const EnvironmentalOutput_1 = require("./lib/EnvironmentalOutput");
|
|
6
6
|
const checkForUpdate_1 = require("./lib/checkForUpdate");
|
|
7
|
-
|
|
7
|
+
const os = require("os");
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const formatError_1 = require("./lib/formatError");
|
|
10
|
+
const migrateOptiCli_1 = require("./lib/migrateOptiCli");
|
|
11
|
+
const die_1 = require("./lib/die");
|
|
12
|
+
async function run() {
|
|
13
|
+
await (0, migrateOptiCli_1.migrateOptiCli)();
|
|
14
|
+
const configFolder = path.join(os.homedir(), '.ocp');
|
|
15
|
+
if (!fs.existsSync(configFolder)) {
|
|
16
|
+
(0, die_1.die)('No ~/.ocp config folder found. ' +
|
|
17
|
+
'Follow the instruction in ' +
|
|
18
|
+
'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/ocp-cli-commands ' +
|
|
19
|
+
'to set up your development environment.');
|
|
20
|
+
}
|
|
8
21
|
(0, EnvironmentalOutput_1.showEnvironment)();
|
|
9
22
|
const manifest = require(path.join(__dirname, './oo-cli.manifest.json'));
|
|
10
|
-
(0, checkForUpdate_1.checkForUpdate)(manifest)
|
|
11
|
-
|
|
12
|
-
.catch((e) => console.log(e.message));
|
|
23
|
+
await (0, checkForUpdate_1.checkForUpdate)(manifest);
|
|
24
|
+
new oo_cli_1.Runner(__dirname, manifest).run();
|
|
13
25
|
}
|
|
14
|
-
run();
|
|
26
|
+
run().catch((e) => (0, die_1.die)((0, formatError_1.formatError)(e)));
|
|
15
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,6BAA6B;AAC7B,mEAA4D;AAC5D,yDAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,6BAA6B;AAC7B,mEAA4D;AAC5D,yDAAsD;AACtD,yBAAyB;AACzB,yBAAyB;AACzB,mDAA8C;AAC9C,yDAAoD;AACpD,mCAA8B;AAE9B,KAAK,UAAU,GAAG;IAChB,MAAM,IAAA,+BAAc,GAAE,CAAC;IAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAC9B,IAAA,SAAG,EACD,iCAAiC;YACjC,4BAA4B;YAC5B,2FAA2F;YAC3F,yCAAyC,CAC1C,CAAC;KACL;IAED,IAAA,qCAAe,GAAE,CAAC;IAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACzE,MAAM,IAAA,+BAAc,EAAC,QAAQ,CAAC,CAAC;IAE/B,IAAI,eAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAG,EAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/lib/Rivendell.d.ts
CHANGED
|
@@ -50,6 +50,13 @@ export declare namespace Rivendell {
|
|
|
50
50
|
IMMEDIATE = "IMMEDIATE",
|
|
51
51
|
RECURRING = "RECURRING"
|
|
52
52
|
}
|
|
53
|
+
enum LogLevel {
|
|
54
|
+
DEBUG = "DEBUG",
|
|
55
|
+
INFO = "INFO",
|
|
56
|
+
WARN = "WARN",
|
|
57
|
+
ERROR = "ERROR",
|
|
58
|
+
NEVER = "NEVER"
|
|
59
|
+
}
|
|
53
60
|
interface AppVersionId {
|
|
54
61
|
appId: string;
|
|
55
62
|
version: string;
|
|
@@ -212,6 +219,12 @@ export declare namespace Rivendell {
|
|
|
212
219
|
url: string;
|
|
213
220
|
live: boolean;
|
|
214
221
|
}
|
|
222
|
+
interface LogLevelRecord {
|
|
223
|
+
appId: string;
|
|
224
|
+
version: string;
|
|
225
|
+
trackerId?: string;
|
|
226
|
+
logLevel: string;
|
|
227
|
+
}
|
|
215
228
|
interface JwtResponse {
|
|
216
229
|
jwt: string;
|
|
217
230
|
}
|
|
@@ -307,6 +320,14 @@ export declare namespace Rivendell {
|
|
|
307
320
|
* Trigger a unpublish.
|
|
308
321
|
*/
|
|
309
322
|
function unpublish(appId: string, version: string, shard: string): Promise<void>;
|
|
323
|
+
/**
|
|
324
|
+
* Set logLevel of an app version or an installation
|
|
325
|
+
*/
|
|
326
|
+
function setLogLevel(shard: string, appId: string, version: string, logLevel: string, timeToLive: number, trackerId?: string): Promise<void>;
|
|
327
|
+
/**
|
|
328
|
+
* Get logLevel of an app version or an installation
|
|
329
|
+
*/
|
|
330
|
+
function getLogLevel(shard: string, appId: string, version: string, trackerId?: string): Promise<LogLevelRecord>;
|
|
310
331
|
/**
|
|
311
332
|
* Fetch a build by id.
|
|
312
333
|
*/
|
package/dist/lib/Rivendell.js
CHANGED
|
@@ -61,6 +61,14 @@ var Rivendell;
|
|
|
61
61
|
JobTriggerType["IMMEDIATE"] = "IMMEDIATE";
|
|
62
62
|
JobTriggerType["RECURRING"] = "RECURRING";
|
|
63
63
|
})(JobTriggerType = Rivendell.JobTriggerType || (Rivendell.JobTriggerType = {}));
|
|
64
|
+
let LogLevel;
|
|
65
|
+
(function (LogLevel) {
|
|
66
|
+
LogLevel["DEBUG"] = "DEBUG";
|
|
67
|
+
LogLevel["INFO"] = "INFO";
|
|
68
|
+
LogLevel["WARN"] = "WARN";
|
|
69
|
+
LogLevel["ERROR"] = "ERROR";
|
|
70
|
+
LogLevel["NEVER"] = "NEVER";
|
|
71
|
+
})(LogLevel = Rivendell.LogLevel || (Rivendell.LogLevel = {}));
|
|
64
72
|
let SortDirection;
|
|
65
73
|
(function (SortDirection) {
|
|
66
74
|
SortDirection["ASC"] = "ASC";
|
|
@@ -222,6 +230,21 @@ var Rivendell;
|
|
|
222
230
|
await RivendellApi_1.RivendellApi.request('PATCH', path(shard, `versions/${appId}@${version}`), { state: AppVersionState.STOPPED });
|
|
223
231
|
}
|
|
224
232
|
Rivendell.unpublish = unpublish;
|
|
233
|
+
/**
|
|
234
|
+
* Set logLevel of an app version or an installation
|
|
235
|
+
*/
|
|
236
|
+
async function setLogLevel(shard, appId, version, logLevel, timeToLive, trackerId) {
|
|
237
|
+
await RivendellApi_1.RivendellApi.put(path(shard, `runtime-config/log-levels`), { appId, version, trackerId, logLevel, timeToLive });
|
|
238
|
+
}
|
|
239
|
+
Rivendell.setLogLevel = setLogLevel;
|
|
240
|
+
/**
|
|
241
|
+
* Get logLevel of an app version or an installation
|
|
242
|
+
*/
|
|
243
|
+
async function getLogLevel(shard, appId, version, trackerId) {
|
|
244
|
+
const response = await RivendellApi_1.RivendellApi.post(path(shard, `runtime-config/log-levels/search`), { appId, version, trackerId });
|
|
245
|
+
return response.body;
|
|
246
|
+
}
|
|
247
|
+
Rivendell.getLogLevel = getLogLevel;
|
|
225
248
|
/**
|
|
226
249
|
* Fetch a build by id.
|
|
227
250
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rivendell.js","sourceRoot":"","sources":["../../src/lib/Rivendell.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAI5C,IAAiB,SAAS,
|
|
1
|
+
{"version":3,"file":"Rivendell.js","sourceRoot":"","sources":["../../src/lib/Rivendell.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAI5C,IAAiB,SAAS,CAkmBzB;AAlmBD,WAAiB,SAAS;IAExB,IAAY,eAWX;IAXD,WAAY,eAAe;QACzB,8BAAW,CAAA;QACX,0CAAuB,CAAA;QACvB,gDAA6B,CAAA;QAC7B,wCAAqB,CAAA;QACrB,gDAA6B,CAAA;QAC7B,sCAAmB,CAAA;QACnB,0DAAuC,CAAA;QACvC,wCAAqB,CAAA;QACrB,8CAA2B,CAAA;QAC3B,sCAAmB,CAAA;IACrB,CAAC,EAXW,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAW1B;IAED,IAAY,YAKX;IALD,WAAY,YAAY;QACtB,2CAA4B,CAAA;QAC5B,uCAAuB,CAAA;QACvB,qCAAuB,CAAA;QACvB,6CAA6B,CAAA;IAC/B,CAAC,EALW,YAAY,GAAZ,sBAAY,KAAZ,sBAAY,QAKvB;IAED,IAAY,UAKX;IALD,WAAY,UAAU;QACpB,yBAAW,CAAA;QACX,+BAAiB,CAAA;QACjB,iCAAmB,CAAA;QACnB,mCAAqB,CAAA;IACvB,CAAC,EALW,UAAU,GAAV,oBAAU,KAAV,oBAAU,QAKrB;IAED,IAAY,SAGX;IAHD,WAAY,SAAS;QACnB,kCAAqB,CAAA;QACrB,gCAAmB,CAAA;IACrB,CAAC,EAHW,SAAS,GAAT,mBAAS,KAAT,mBAAS,QAGpB;IAED,IAAY,WAIX;IAJD,WAAY,WAAW;QACrB,kCAAmB,CAAA;QACnB,kCAAmB,CAAA;QACnB,8BAAe,CAAA;IACjB,CAAC,EAJW,WAAW,GAAX,qBAAW,KAAX,qBAAW,QAItB;IAED,IAAY,eAGX;IAHD,WAAY,eAAe;QACzB,gCAAa,CAAA;QACb,4CAAyB,CAAA;IAC3B,CAAC,EAHW,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAG1B;IAED,IAAY,SAOX;IAPD,WAAY,SAAS;QACnB,gCAAmB,CAAA;QACnB,oCAAuB,CAAA;QACvB,gCAAmB,CAAA;QACnB,kCAAqB,CAAA;QACrB,4BAAe,CAAA;QACf,sCAAyB,CAAA;IAC3B,CAAC,EAPW,SAAS,GAAT,mBAAS,KAAT,mBAAS,QAOpB;IAED,IAAY,cAGX;IAHD,WAAY,cAAc;QACxB,yCAAuB,CAAA;QACvB,yCAAuB,CAAA;IACzB,CAAC,EAHW,cAAc,GAAd,wBAAc,KAAd,wBAAc,QAGzB;IAED,IAAY,QAMX;IAND,WAAY,QAAQ;QAClB,2BAAe,CAAA;QACf,yBAAa,CAAA;QACb,yBAAa,CAAA;QACb,2BAAe,CAAA;QACf,2BAAe,CAAA;IACjB,CAAC,EANW,QAAQ,GAAR,kBAAQ,KAAR,kBAAQ,QAMnB;IA0ID,IAAY,aAGX;IAHD,WAAY,aAAa;QACvB,4BAAW,CAAA;QACX,8BAAa,CAAA;IACf,CAAC,EAHW,aAAa,GAAb,uBAAa,KAAb,uBAAa,QAGxB;IAOD,IAAY,QAIX;IAJD,WAAY,QAAQ;QAClB,yBAAa,CAAA;QACb,mCAAuB,CAAA;QACvB,2BAAe,CAAA;IACjB,CAAC,EAJW,QAAQ,GAAR,kBAAQ,KAAR,kBAAQ,QAInB;IAiED,SAAS,IAAI,CAAC,KAAa,EAAE,QAAgB;QAC3C,OAAO,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;QAC9D,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAJqB,wBAAc,iBAInC,CAAA;IAEM,KAAK,UAAU,MAAM;QAC1B,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAY,eAAe,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,gBAAM,SAG3B,CAAA;IAED;;;;OAIG;IACI,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAAY,EAAE,WAAoB,EAAE,KAAa;QAChG,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAC/F,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,qBAAW,cAGhC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,kBAAQ,WAG7B,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,YAAY,CAAC,UAAkB;QACnD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAY,WAAW,UAAU,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,sBAAY,eAGjC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,iBAAiB,CAAC,QAAkC,EAAE,KAAa;QACvF,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAe,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,2BAAiB,oBAGtC,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,eAAe,CAAC,UAAsB,EAAE,KAAa;QACzE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,YAAY,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAJqB,yBAAe,kBAIpC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAAe,EACf,UAAkB,EAClB,YAA+B,EAC/B,uBAAgC,EAChC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAC,CAAC,CAAC;QAChG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAXqB,4BAAkB,qBAWvC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OAAe,EACf,UAAkB,EAClB,YAA+B,EAC/B,uBAAgC,EAChC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CACrC,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAC,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAXqB,0BAAgB,mBAWrC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OAAe;QAEf,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;QAC3C,MAAM,2BAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IANqB,0BAAgB,mBAMrC,CAAA;IACD;;;OAGG;IACI,KAAK,UAAU,sBAAsB,CAC1C,QAAuC,EACvC,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAoB,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3G,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IANqB,gCAAsB,yBAM3C,CAAA;IAED;;;OAGG;IACI,KAAK,UAAU,cAAc,CAAC,QAA+B,EAAE,KAAa;QACjF,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAY,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9F,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,wBAAc,iBAGnC,CAAA;IAED;;;;OAIG;IACI,KAAK,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAiB,EAAE,KAAK,GAAG,EAAE;QACrF,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAC,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,kBAAkB,SAAS,EAAE,CAAC,CAAC;SACxE;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAPqB,8BAAoB,uBAOzC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,iBAAO,UAS5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,SAAS,CAAC,iBAAyB,EAAE,KAAa;QACtE,MAAM,2BAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IAFqB,mBAAS,YAE9B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAC3B,iBAAyB,EACzB,KAAa,EACb,OAAe,EACf,KAAa;QAEb,MAAM,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,iBAAiB,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;IAC9F,CAAC;IAPqB,iBAAO,UAO5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;QACzE,MAAM,2BAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAC,CAAC,CAAC;IACrH,CAAC;IAFqB,iBAAO,UAE5B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;QAC3E,MAAM,2BAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,OAAO,EAAE,CAAC,EAAE,EAAC,KAAK,EAAE,eAAe,CAAC,OAAO,EAAC,CAAC,CAAC;IACrH,CAAC;IAFqB,mBAAS,YAE9B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,SAAkB;QAElB,MAAM,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAC;IACtH,CAAC;IATqB,qBAAW,cAShC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,KAAa,EACb,OAAe,EACf,SAAkB;QAElB,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CACtC,IAAI,CAAC,KAAK,EAAE,kCAAkC,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IATqB,qBAAW,cAShC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAAC,EAAU;QACzC,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAQ,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,oBAAU,aAG/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,KAAK,CAAC,KAAa,EAAE,OAAe;QACxD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAQ,QAAQ,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,eAAK,QAG1B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,MAAM,CAAC,KAAa,EAAE,OAAe;QACzD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAQ,eAAe,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,gBAAM,SAG3B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,KAAa,EACb,OAAe,EACf,QAAgB;QAEhB,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAiB,QAAQ,EAAE,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QACvG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IARqB,2BAAiB,oBAQtC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,MAAM;QAC1B,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAU,QAAQ,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAJqB,gBAAM,SAI3B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAAC,QAA2B,EAAE,KAAa;QACzE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAQ,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,oBAAU,aAG/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;QAC7D,MAAM,2BAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAFqB,sBAAY,eAEjC,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,OAAe,EACf,SAAiB,EACjB,UAAkB,EAClB,KAAa;QAEb,MAAM,IAAI,GAAG,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,IAAI,CAAM,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAVqB,oBAAU,aAU/B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,KAAa;QACzD,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,kBAAQ,WAG7B,CAAA;IAED;;OAEG;IACI,KAAK,UAAU,qBAAqB,CAAC,KAAa,EAAE,KAAa;QACtE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAmB,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,gBAAgB,CAAC,CAAC,CAAC;QACtG,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAHqB,+BAAqB,wBAG1C,CAAA;IAED;;OAEG;IACH,IAAI,SAAc,CAAC;IACZ,KAAK,UAAU,GAAG,CAAC,KAAa;QACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACpE,MAAM,QAAQ,GAAG,MAAM,2BAAY,CAAC,GAAG,CAAc,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YAChF,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzC;QAED,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IARqB,aAAG,MAQxB,CAAA;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;YACL,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,EAlmBgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAkmBzB"}
|
|
@@ -13,6 +13,14 @@ const LAST_VERSION_CHECK_FILE = '.lastcheck';
|
|
|
13
13
|
const _24hours = 24 * 60 * 60 * 1000;
|
|
14
14
|
async function checkForUpdate(manifest) {
|
|
15
15
|
var _a;
|
|
16
|
+
const installed = (_a = manifest.package) === null || _a === void 0 ? void 0 : _a.version;
|
|
17
|
+
const prerelease = semver.prerelease(installed);
|
|
18
|
+
const isBeta = prerelease && prerelease[0] === 'beta';
|
|
19
|
+
if (isBeta) {
|
|
20
|
+
console.log(chalk.yellow(`You are running beta version (${installed})'. ` +
|
|
21
|
+
`${chalk.italic.grey('yarn global upgrade @optimizely/ocp-cli --latest')} to upgrade to the latest release version`));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
16
24
|
const lastCheck = getLastCheck();
|
|
17
25
|
if (lastCheck) {
|
|
18
26
|
const now = new Date();
|
|
@@ -24,7 +32,6 @@ async function checkForUpdate(manifest) {
|
|
|
24
32
|
let upToDate = true;
|
|
25
33
|
const latest = await fetchLatest();
|
|
26
34
|
if (latest) {
|
|
27
|
-
const installed = (_a = manifest.package) === null || _a === void 0 ? void 0 : _a.version;
|
|
28
35
|
if (semver.gt(latest, installed)) {
|
|
29
36
|
upToDate = false;
|
|
30
37
|
if (await TerminalConfirm_1.TerminalConfirm.ask(chalk.yellow('A new version of OCP CLI is available. Update now?'))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkForUpdate.js","sourceRoot":"","sources":["../../src/lib/checkForUpdate.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,yBAAyB;AACzB,yBAAyB;AACzB,6BAA6B;AAC7B,iCAAiC;AAEjC,qDAAkD;AAClD,uDAAoD;AACpD,uDAAqD;AAOrD,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B,KAAK,UAAU,cAAc,CAAC,QAA4B;;IAC/D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,SAAS,EAAE;QACb,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE;YAC7E,OAAO;SACR;KACF;IAED,IAAI;QACF,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE;YACV,
|
|
1
|
+
{"version":3,"file":"checkForUpdate.js","sourceRoot":"","sources":["../../src/lib/checkForUpdate.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,yBAAyB;AACzB,yBAAyB;AACzB,6BAA6B;AAC7B,iCAAiC;AAEjC,qDAAkD;AAClD,uDAAoD;AACpD,uDAAqD;AAOrD,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B,KAAK,UAAU,cAAc,CAAC,QAA4B;;IAC/D,MAAM,SAAS,GAAG,MAAA,QAAQ,CAAC,OAAO,0CAAE,OAAQ,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IAEtD,IAAI,MAAM,EAAE;QACV,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,MAAM,CACR,iCAAiC,SAAS,MAAM;YAChD,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,2CAA2C,CACtH,CACJ,CAAC;QACF,OAAO;KACR;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,SAAS,EAAE;QACb,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE;YAC7E,OAAO;SACR;KACF;IAED,IAAI;QACF,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;gBAChC,QAAQ,GAAG,KAAK,CAAC;gBACjB,IAAI,MAAM,iCAAe,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,EAAE;oBACjG,kCAAgB,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;iBAC3E;aACF;SACF;QACD,YAAY,CAAC,QAAQ,CAAC,CAAC;KACxB;IAAC,OAAO,CAAC,EAAE;QACV,OAAO;KACR;AACH,CAAC;AAtCD,wCAsCC;AAED,KAAK,UAAU,WAAW;IACxB,OAAO,+BAAc,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,uBAAuB,EAAE,CAAC,CAAC;IACxE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACvB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,KAAK,MAAM,CAAC;QACvE,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;KACrC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,QAAiB;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,uBAAuB,EAAE,CAAC,CAAC;IACxE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function migrateOptiCli(): Promise<void>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.migrateOptiCli = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const os = require("os");
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const chalk = require("chalk");
|
|
8
|
+
const TerminalConfirm_1 = require("./TerminalConfirm");
|
|
9
|
+
const dotenv = require("dotenv");
|
|
10
|
+
async function migrateOptiCli() {
|
|
11
|
+
const configFolder = path.join(os.homedir(), '.ocp');
|
|
12
|
+
if (fs.existsSync(configFolder) || !fs.existsSync(path.join(os.homedir(), '.opti'))) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const question = chalk.yellow('No ~/.ocp config folder found, but the config folder for legacy opti CLI exists. ' +
|
|
16
|
+
'Do you want to copy opti CLI configuration? (y/n)');
|
|
17
|
+
const copyConfig = await TerminalConfirm_1.TerminalConfirm.ask(question);
|
|
18
|
+
if (copyConfig) {
|
|
19
|
+
fs.cpSync(path.join(os.homedir(), '.opti'), path.join(os.homedir(), '.ocp'), { recursive: true });
|
|
20
|
+
['.env', '.env.staging'].forEach((envFile) => {
|
|
21
|
+
const envFilePath = path.join(os.homedir(), '.ocp', envFile);
|
|
22
|
+
if (fs.existsSync(envFilePath)) {
|
|
23
|
+
fs.writeFileSync(envFilePath, fs.readFileSync(envFilePath, 'utf8').replace('OPTI_ENV', 'OCP_ENV'));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
dotenv.config({ path: path.join(os.homedir(), '.ocp/.env') });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.migrateOptiCli = migrateOptiCli;
|
|
30
|
+
//# sourceMappingURL=migrateOptiCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateOptiCli.js","sourceRoot":"","sources":["../../src/lib/migrateOptiCli.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,yBAAyB;AACzB,yBAAyB;AACzB,+BAA+B;AAC/B,uDAAkD;AAClD,iCAAiC;AAE1B,KAAK,UAAU,cAAc;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE;QACnF,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,mFAAmF;QACnF,mDAAmD,CACpD,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,UAAU,EAAE;QACd,EAAE,CAAC,MAAM,CACP,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,EAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,EAC/B,EAAC,SAAS,EAAE,IAAI,EAAC,CAClB,CAAC;QACF,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBAC9B,EAAE,CAAC,aAAa,CACd,WAAW,EACX,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CACpE,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,EAAC,CAAC,CAAC;KAC7D;AACH,CAAC;AA9BD,wCA8BC"}
|
|
@@ -51,6 +51,49 @@
|
|
|
51
51
|
"app": {
|
|
52
52
|
"namespaces": {},
|
|
53
53
|
"commands": [
|
|
54
|
+
{
|
|
55
|
+
"path": "commands/app/GetLogLevel.js",
|
|
56
|
+
"className": "GetLogLevelCommand",
|
|
57
|
+
"key": "getLogLevel",
|
|
58
|
+
"command": "getLogLevel",
|
|
59
|
+
"aliases": [
|
|
60
|
+
"get-log-level"
|
|
61
|
+
],
|
|
62
|
+
"help": "Get the logLevel of a particular app version or an installation",
|
|
63
|
+
"documentation": "TBD",
|
|
64
|
+
"flags": [],
|
|
65
|
+
"options": [
|
|
66
|
+
{
|
|
67
|
+
"name": "trackerId",
|
|
68
|
+
"key": "trackerId",
|
|
69
|
+
"aliases": [
|
|
70
|
+
"trackerId"
|
|
71
|
+
],
|
|
72
|
+
"help": "The Tracker ID of the installed account. If not provided, returns default log level for the app version",
|
|
73
|
+
"optional": true,
|
|
74
|
+
"multiple": false
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "availability",
|
|
78
|
+
"key": "availability",
|
|
79
|
+
"aliases": [
|
|
80
|
+
"a"
|
|
81
|
+
],
|
|
82
|
+
"help": "The availability zone that will be targeted (default: us)",
|
|
83
|
+
"optional": true,
|
|
84
|
+
"multiple": false
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"params": [
|
|
88
|
+
{
|
|
89
|
+
"name": "appVersion",
|
|
90
|
+
"key": "appVersion",
|
|
91
|
+
"help": "The App ID and version",
|
|
92
|
+
"optional": false,
|
|
93
|
+
"multiple": false
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
54
97
|
{
|
|
55
98
|
"path": "commands/app/Init.js",
|
|
56
99
|
"className": "CreateCommand",
|
|
@@ -323,6 +366,67 @@
|
|
|
323
366
|
}
|
|
324
367
|
]
|
|
325
368
|
},
|
|
369
|
+
{
|
|
370
|
+
"path": "commands/app/SetLogLevel.js",
|
|
371
|
+
"className": "SetLogLevelCommand",
|
|
372
|
+
"key": "setLogLevel",
|
|
373
|
+
"command": "setLogLevel",
|
|
374
|
+
"aliases": [
|
|
375
|
+
"set-log-level"
|
|
376
|
+
],
|
|
377
|
+
"help": "Set the logLevel of a particular app version or an installation",
|
|
378
|
+
"documentation": "TBD",
|
|
379
|
+
"flags": [],
|
|
380
|
+
"options": [
|
|
381
|
+
{
|
|
382
|
+
"name": "trackerId",
|
|
383
|
+
"key": "trackerId",
|
|
384
|
+
"aliases": [
|
|
385
|
+
"trackerId"
|
|
386
|
+
],
|
|
387
|
+
"help": "The Tracker ID of the installed account. If not provided, log level is set for the app version",
|
|
388
|
+
"optional": true,
|
|
389
|
+
"multiple": false
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "timeToLive",
|
|
393
|
+
"key": "timeToLive",
|
|
394
|
+
"aliases": [
|
|
395
|
+
"ttl"
|
|
396
|
+
],
|
|
397
|
+
"help": "LogLevel expiration period (TTL) as relative string (i.e. \"5m\" for 5 minutes). Default: 2h",
|
|
398
|
+
"defaultValue": "2h",
|
|
399
|
+
"optional": true,
|
|
400
|
+
"multiple": false
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"name": "availability",
|
|
404
|
+
"key": "availability",
|
|
405
|
+
"aliases": [
|
|
406
|
+
"a"
|
|
407
|
+
],
|
|
408
|
+
"help": "The availability zone that will be targeted (default: us)",
|
|
409
|
+
"optional": true,
|
|
410
|
+
"multiple": false
|
|
411
|
+
}
|
|
412
|
+
],
|
|
413
|
+
"params": [
|
|
414
|
+
{
|
|
415
|
+
"name": "appVersion",
|
|
416
|
+
"key": "appVersion",
|
|
417
|
+
"help": "The App ID and version",
|
|
418
|
+
"optional": false,
|
|
419
|
+
"multiple": false
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"name": "logLevel",
|
|
423
|
+
"key": "logLevel",
|
|
424
|
+
"help": "The desired logLevel to set. Possible values: DEBUG, INFO, WARN, ERROR, NEVER",
|
|
425
|
+
"optional": false,
|
|
426
|
+
"multiple": false
|
|
427
|
+
}
|
|
428
|
+
]
|
|
429
|
+
},
|
|
326
430
|
{
|
|
327
431
|
"path": "commands/app/Validate.js",
|
|
328
432
|
"className": "ValidateCommand",
|
|
@@ -1134,7 +1238,7 @@
|
|
|
1134
1238
|
},
|
|
1135
1239
|
"commands": [],
|
|
1136
1240
|
"package": {
|
|
1137
|
-
"version": "1.0.
|
|
1241
|
+
"version": "1.0.1-beta.0",
|
|
1138
1242
|
"name": "@optimizely/ocp-cli",
|
|
1139
1243
|
"license": "Apache-2.0",
|
|
1140
1244
|
"executable": "ocp"
|
package/package.json
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as chalk from 'chalk';
|
|
2
|
+
import {command, help, namespace, param, required, option} from 'oo-cli';
|
|
3
|
+
import {appContext} from '../../lib/AppContext';
|
|
4
|
+
import {die} from '../../lib/die';
|
|
5
|
+
import {Rivendell} from '../../lib/Rivendell';
|
|
6
|
+
import {formatError} from '../../lib/formatError';
|
|
7
|
+
import LogLevelRecord = Rivendell.LogLevelRecord;
|
|
8
|
+
|
|
9
|
+
@namespace('app')
|
|
10
|
+
export class GetLogLevelCommand {
|
|
11
|
+
@param
|
|
12
|
+
@required
|
|
13
|
+
@help('The App ID and version')
|
|
14
|
+
public appVersion!: string;
|
|
15
|
+
|
|
16
|
+
@option('trackerId')
|
|
17
|
+
@help('The Tracker ID of the installed account. If not provided, returns default log level for the app version')
|
|
18
|
+
public trackerId?: string;
|
|
19
|
+
|
|
20
|
+
@option('a')
|
|
21
|
+
@help('The availability zone that will be targeted (default: us)')
|
|
22
|
+
private availability: string = '';
|
|
23
|
+
|
|
24
|
+
@command('get-log-level')
|
|
25
|
+
@help('Get the logLevel of a particular app version or an installation')
|
|
26
|
+
public async getLogLevel() {
|
|
27
|
+
try {
|
|
28
|
+
const context = appContext(this.appVersion);
|
|
29
|
+
if (!context.appId || !context.version) {
|
|
30
|
+
return die('App ID and version are required');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const logLevelRecord = await Rivendell.getLogLevel(
|
|
34
|
+
this.availability, context.appId, context.version, this.trackerId);
|
|
35
|
+
this.render(logLevelRecord);
|
|
36
|
+
} catch (e: any) {
|
|
37
|
+
die(formatError(e));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private render(record: LogLevelRecord) {
|
|
42
|
+
if (record.trackerId) {
|
|
43
|
+
console.log(chalk.green(`install log level is currently set to ${record.logLevel}`));
|
|
44
|
+
} else {
|
|
45
|
+
console.log(chalk.green(`${this.appVersion} log level is currently set to ${record.logLevel}`));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as chalk from 'chalk';
|
|
2
|
+
import {command, help, namespace, param, required, option, defaultValue} from 'oo-cli';
|
|
3
|
+
import {default as parseDuration} from 'parse-duration';
|
|
4
|
+
import {appContext} from '../../lib/AppContext';
|
|
5
|
+
import {die} from '../../lib/die';
|
|
6
|
+
import {Rivendell} from '../../lib/Rivendell';
|
|
7
|
+
import {formatError} from '../../lib/formatError';
|
|
8
|
+
import LogLevel = Rivendell.LogLevel;
|
|
9
|
+
|
|
10
|
+
@namespace('app')
|
|
11
|
+
export class SetLogLevelCommand {
|
|
12
|
+
@param
|
|
13
|
+
@required
|
|
14
|
+
@help('The App ID and version')
|
|
15
|
+
public appVersion!: string;
|
|
16
|
+
|
|
17
|
+
@param
|
|
18
|
+
@required
|
|
19
|
+
@help(`The desired logLevel to set. Possible values: ${Object.values(LogLevel).join(', ')}`)
|
|
20
|
+
public logLevel!: string;
|
|
21
|
+
|
|
22
|
+
@option('trackerId')
|
|
23
|
+
@help('The Tracker ID of the installed account. If not provided, log level is set for the app version')
|
|
24
|
+
public trackerId?: string;
|
|
25
|
+
|
|
26
|
+
@option('ttl')
|
|
27
|
+
@help('LogLevel expiration period (TTL) as relative string (i.e. "5m" for 5 minutes). Default: 2h')
|
|
28
|
+
@defaultValue('2h')
|
|
29
|
+
public timeToLive!: string;
|
|
30
|
+
|
|
31
|
+
@option('a')
|
|
32
|
+
@help('The availability zone that will be targeted (default: us)')
|
|
33
|
+
private availability: string = '';
|
|
34
|
+
|
|
35
|
+
@command('set-log-level')
|
|
36
|
+
@help('Set the logLevel of a particular app version or an installation')
|
|
37
|
+
public async setLogLevel() {
|
|
38
|
+
try {
|
|
39
|
+
const context = appContext(this.appVersion);
|
|
40
|
+
if (!context.appId || !context.version) {
|
|
41
|
+
return die('App ID and version are required');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const level = this.getLogLevel(this.logLevel);
|
|
45
|
+
const ttlSeconds = parseDuration(this.timeToLive, 'second');
|
|
46
|
+
if (!ttlSeconds) {
|
|
47
|
+
die(chalk.red('Invalid "--ttl" input, should be relative string (i.e. "5m" for 5 minutes.'));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await Rivendell.setLogLevel(
|
|
51
|
+
this.availability, context.appId, context.version, level.toString(), ttlSeconds!, this.trackerId);
|
|
52
|
+
if (this.trackerId) {
|
|
53
|
+
console.log(chalk.green(`Successfully set log level for tracker ${this.trackerId} of the app version ${this.appVersion}`));
|
|
54
|
+
} else {
|
|
55
|
+
console.log(chalk.green(`Successfully set log level for the app version ${this.appVersion}`));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
} catch (e: any) {
|
|
59
|
+
die(formatError(e));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private getLogLevel(logLevel: string): LogLevel {
|
|
64
|
+
const key = logLevel.toUpperCase();
|
|
65
|
+
if (!LogLevel[key as LogLevel]) {
|
|
66
|
+
die(`${logLevel} is not a valid LogLevel`);
|
|
67
|
+
}
|
|
68
|
+
return LogLevel[key as LogLevel];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -2,14 +2,31 @@ import { Runner } from 'oo-cli';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { showEnvironment } from './lib/EnvironmentalOutput';
|
|
4
4
|
import { checkForUpdate } from './lib/checkForUpdate';
|
|
5
|
+
import * as os from 'os';
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import {formatError} from './lib/formatError';
|
|
8
|
+
import {migrateOptiCli} from './lib/migrateOptiCli';
|
|
9
|
+
import {die} from './lib/die';
|
|
5
10
|
|
|
6
|
-
function run() {
|
|
7
|
-
|
|
11
|
+
async function run() {
|
|
12
|
+
await migrateOptiCli();
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
const configFolder = path.join(os.homedir(), '.ocp');
|
|
15
|
+
if (!fs.existsSync(configFolder)) {
|
|
16
|
+
die(
|
|
17
|
+
'No ~/.ocp config folder found. ' +
|
|
18
|
+
'Follow the instruction in ' +
|
|
19
|
+
'https://docs.developers.optimizely.com/optimizely-connect-platform/docs/ocp-cli-commands ' +
|
|
20
|
+
'to set up your development environment.'
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
showEnvironment();
|
|
25
|
+
|
|
26
|
+
const manifest = require(path.join(__dirname, './oo-cli.manifest.json'));
|
|
27
|
+
await checkForUpdate(manifest);
|
|
28
|
+
|
|
29
|
+
new Runner(__dirname, manifest).run();
|
|
13
30
|
}
|
|
14
31
|
|
|
15
|
-
run();
|
|
32
|
+
run().catch((e) => die(formatError(e)));
|
package/src/lib/Rivendell.ts
CHANGED
|
@@ -61,6 +61,14 @@ export namespace Rivendell {
|
|
|
61
61
|
RECURRING = 'RECURRING'
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
export enum LogLevel {
|
|
65
|
+
DEBUG = 'DEBUG',
|
|
66
|
+
INFO = 'INFO',
|
|
67
|
+
WARN = 'WARN',
|
|
68
|
+
ERROR = 'ERROR',
|
|
69
|
+
NEVER = 'NEVER'
|
|
70
|
+
}
|
|
71
|
+
|
|
64
72
|
export interface AppVersionId {
|
|
65
73
|
appId: string;
|
|
66
74
|
version: string;
|
|
@@ -246,6 +254,13 @@ export namespace Rivendell {
|
|
|
246
254
|
live: boolean;
|
|
247
255
|
}
|
|
248
256
|
|
|
257
|
+
export interface LogLevelRecord {
|
|
258
|
+
appId: string;
|
|
259
|
+
version: string;
|
|
260
|
+
trackerId?: string;
|
|
261
|
+
logLevel: string;
|
|
262
|
+
}
|
|
263
|
+
|
|
249
264
|
export interface JwtResponse {
|
|
250
265
|
jwt: string;
|
|
251
266
|
}
|
|
@@ -455,6 +470,34 @@ export namespace Rivendell {
|
|
|
455
470
|
await RivendellApi.request('PATCH', path(shard, `versions/${appId}@${version}`), {state: AppVersionState.STOPPED});
|
|
456
471
|
}
|
|
457
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Set logLevel of an app version or an installation
|
|
475
|
+
*/
|
|
476
|
+
export async function setLogLevel(
|
|
477
|
+
shard: string,
|
|
478
|
+
appId: string,
|
|
479
|
+
version: string,
|
|
480
|
+
logLevel: string,
|
|
481
|
+
timeToLive: number,
|
|
482
|
+
trackerId?: string
|
|
483
|
+
): Promise<void> {
|
|
484
|
+
await RivendellApi.put(path(shard, `runtime-config/log-levels`), {appId, version, trackerId, logLevel, timeToLive});
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Get logLevel of an app version or an installation
|
|
489
|
+
*/
|
|
490
|
+
export async function getLogLevel(
|
|
491
|
+
shard: string,
|
|
492
|
+
appId: string,
|
|
493
|
+
version: string,
|
|
494
|
+
trackerId?: string
|
|
495
|
+
): Promise<LogLevelRecord> {
|
|
496
|
+
const response = await RivendellApi.post<LogLevelRecord>(
|
|
497
|
+
path(shard, `runtime-config/log-levels/search`), {appId, version, trackerId});
|
|
498
|
+
return response.body;
|
|
499
|
+
}
|
|
500
|
+
|
|
458
501
|
/**
|
|
459
502
|
* Fetch a build by id.
|
|
460
503
|
*/
|
|
@@ -17,6 +17,20 @@ const LAST_VERSION_CHECK_FILE = '.lastcheck';
|
|
|
17
17
|
const _24hours = 24 * 60 * 60 * 1000;
|
|
18
18
|
|
|
19
19
|
export async function checkForUpdate(manifest: ManifestDefinition): Promise<void> {
|
|
20
|
+
const installed = manifest.package?.version!;
|
|
21
|
+
const prerelease = semver.prerelease(installed);
|
|
22
|
+
const isBeta = prerelease && prerelease[0] === 'beta';
|
|
23
|
+
|
|
24
|
+
if (isBeta) {
|
|
25
|
+
console.log(
|
|
26
|
+
chalk.yellow(
|
|
27
|
+
`You are running beta version (${installed})'. ` +
|
|
28
|
+
`${chalk.italic.grey('yarn global upgrade @optimizely/ocp-cli --latest')} to upgrade to the latest release version`
|
|
29
|
+
)
|
|
30
|
+
);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
const lastCheck = getLastCheck();
|
|
21
35
|
if (lastCheck) {
|
|
22
36
|
const now = new Date();
|
|
@@ -29,7 +43,6 @@ export async function checkForUpdate(manifest: ManifestDefinition): Promise<void
|
|
|
29
43
|
let upToDate = true;
|
|
30
44
|
const latest = await fetchLatest();
|
|
31
45
|
if (latest) {
|
|
32
|
-
const installed = manifest.package?.version!;
|
|
33
46
|
if (semver.gt(latest, installed)) {
|
|
34
47
|
upToDate = false;
|
|
35
48
|
if (await TerminalConfirm.ask(chalk.yellow('A new version of OCP CLI is available. Update now?'))) {
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import * as os from 'os';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import * as chalk from 'chalk';
|
|
5
|
+
import {TerminalConfirm} from './TerminalConfirm';
|
|
6
|
+
import * as dotenv from 'dotenv';
|
|
7
|
+
|
|
8
|
+
export async function migrateOptiCli() {
|
|
9
|
+
const configFolder = path.join(os.homedir(), '.ocp');
|
|
10
|
+
if (fs.existsSync(configFolder) || !fs.existsSync(path.join(os.homedir(), '.opti'))) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const question = chalk.yellow(
|
|
15
|
+
'No ~/.ocp config folder found, but the config folder for legacy opti CLI exists. ' +
|
|
16
|
+
'Do you want to copy opti CLI configuration? (y/n)'
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const copyConfig = await TerminalConfirm.ask(question);
|
|
20
|
+
if (copyConfig) {
|
|
21
|
+
fs.cpSync(
|
|
22
|
+
path.join(os.homedir(), '.opti'),
|
|
23
|
+
path.join(os.homedir(), '.ocp'),
|
|
24
|
+
{recursive: true}
|
|
25
|
+
);
|
|
26
|
+
['.env', '.env.staging'].forEach((envFile) => {
|
|
27
|
+
const envFilePath = path.join(os.homedir(), '.ocp', envFile);
|
|
28
|
+
if (fs.existsSync(envFilePath)) {
|
|
29
|
+
fs.writeFileSync(
|
|
30
|
+
envFilePath,
|
|
31
|
+
fs.readFileSync(envFilePath, 'utf8').replace('OPTI_ENV', 'OCP_ENV')
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
dotenv.config({path: path.join(os.homedir(), '.ocp/.env')});
|
|
37
|
+
}
|
|
38
|
+
}
|