@iotize/cli
Version:
IoTize command line interface
157 lines • 7.06 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
require("@iotize/testing-grammar.js/ext");
const clime_1 = require("clime");
const fs_1 = require("fs");
const operators_1 = require("rxjs/operators");
const tap_config_parser_1 = require("src/lib/tap-config-parser");
const ui_1 = require("src/ui");
const device_1 = require("../../../options/device");
const file_exists_1 = require("../../../validators/file-exists");
const config_1 = require("./../../../../config");
const path_1 = require("path");
class MyOptions extends device_1.DeviceOptions {
}
__decorate([
clime_1.option({
flag: 'f',
description: 'Iotize script file to run (Allowed file type: .izsc, .tapconfig.json, .iotz)',
required: false,
default: global.getConfig('default.configScript', undefined),
// configKey: 'default.configScript', // TODO create annotation
validator: new file_exists_1.FileExists()
}),
__metadata("design:type", String)
], MyOptions.prototype, "file", void 0);
__decorate([
clime_1.option({
flag: 't',
description: 'Configuration template to use',
required: false,
validator: new file_exists_1.FileExists()
}),
__metadata("design:type", String)
], MyOptions.prototype, "template", void 0);
exports.MyOptions = MyOptions;
let default_1 = class default_1 extends clime_1.Command {
execute(options) {
return __awaiter(this, void 0, void 0, function* () {
let filePath;
let isUsingTemplate = false;
if (options.file) {
filePath = options.file;
}
else {
if (options.template) {
filePath = path_1.resolve(config_1.RESOURCE_PATH, 'tap-configurations');
}
else {
ui_1.display.infonl(`You did not pass any configuration file. Next time use option '--file' to use a custom configuration file. `);
filePath = yield ui_1.input.selectConfigFile();
}
isUsingTemplate = true;
}
let fileContent = fs_1.readFileSync(filePath).toString();
let tap = yield options.getDevice(true, false, true);
if (filePath.endsWith('.izsc')) {
yield this.showScriptLoader(tap.configureFromScript(fileContent));
}
else {
let tapConfig = tap_config_parser_1.parseTapConfig(fileContent);
if (isUsingTemplate) {
// display.table(tapConfig.config.tap.wifi);
// if (await input.confirm(`Do you want to change`))
}
yield this.showConfigLoader(tap.applyConfig(tapConfig));
}
// let scriptRunner = container.get<ScriptRunnerProvider>(TYPES.ScriptRunnerProvider)(tap)
// let loader = new TapScriptConfiguratorLoader(
// fileContent,
// scriptRunner
// );
// loader
// .configure(tap)
// .subscribe({
// next: (event: any) => {
// console.log(event);
// },
// complete: async () => {
// await tap.disconnect();
// display.success(`Script execution DONE!`);
// process.exit(0);
// },
// error: async (err: Error) => {
// display.error(`${err.toString()}`)
// await tap.disconnect();
// process.exit((err as any).code || 1);
// }
// });
});
}
showScriptLoader(obs) {
return __awaiter(this, void 0, void 0, function* () {
obs = obs.pipe(operators_1.tap({
// next: (event) => {
// console.warn(event);
// display.infonl(`${event}`);
// },
complete: () => {
ui_1.display.success(`Configuration script executed successfully`);
}
}), operators_1.share());
// let progressBar = ProgressBarBuilder.fromObservable(
// obs.pipe(
// map((event: ConfigureFromScriptEvent) => {
// return event.progress
// })
// )
// );
// progressBar.render();
yield obs.toPromise();
});
}
showConfigLoader(obs) {
return __awaiter(this, void 0, void 0, function* () {
obs = obs.pipe(operators_1.tap({
next: event => {
ui_1.display.infonl(`${event.message}`);
},
complete: () => {
ui_1.display.success(`Configuration succesful!`);
}
}), operators_1.share());
yield obs.toPromise();
});
}
};
__decorate([
clime_1.metadata,
__metadata("design:type", Function),
__metadata("design:paramtypes", [MyOptions]),
__metadata("design:returntype", Promise)
], default_1.prototype, "execute", null);
default_1 = __decorate([
clime_1.command({
description: 'Apply configuration on your Tap'
})
], default_1);
exports.default = default_1;
//# sourceMappingURL=apply.js.map