pcf-scripts
Version:
This package contains a module for building PowerApps Component Framework (PCF) controls. See project homepage how to install.
60 lines (58 loc) • 2.52 kB
JavaScript
;
// Copyright (C) Microsoft Corporation. All rights reserved.
Object.defineProperty(exports, "__esModule", { value: true });
exports.StartHarnessTask = void 0;
const node_child_process_1 = require("node:child_process");
const fs = require("node:fs");
const path = require("node:path");
const diagnosticMessages_generated_1 = require("../diagnosticMessages.generated");
const locale_1 = require("../generated/locale");
class StartHarnessTask {
constructor(watchOn) {
this._options = {};
this._watchOn = watchOn;
}
getDescription() {
return (0, locale_1.translate)(diagnosticMessages_generated_1.strings.task_start_harness.key);
}
setOptions(options) {
this._options = { ...this._options, ...options };
}
run(context) {
const outDir = context.getOutDir();
if (!outDir) {
context.getDiagnostic().push(diagnosticMessages_generated_1.strings.buildconfig_no_outdir);
return Promise.reject(new Error());
}
const controls = fs.readdirSync(outDir);
if (controls.length === 0) {
context.getDiagnostic().push(diagnosticMessages_generated_1.strings.pcf_scripts_start_missing_control);
return Promise.reject(new Error());
}
return new Promise((resolve, reject) => {
const outputDir = path.join(outDir, controls[0]);
// spawn a child process of pcf-start to launch the harness locally
const pcfStartCmd = (0, node_child_process_1.exec)(`node ${this._options.pcfStartPath ?? "node_modules/pcf-start/bin/pcf-start.js"} ${this._watchOn ? "--watch" : ""} --codePath ${outputDir}`);
if (!pcfStartCmd) {
return reject(new Error(`Cannot launch test harness for: ${outputDir}`));
}
pcfStartCmd.stdout.on("data", (data) => {
console.log(data.toString());
});
pcfStartCmd.stderr.on("data", (data) => {
console.log(data.toString());
});
pcfStartCmd.on("close", (code) => {
if (code !== 0) {
context.getDiagnostic().pushA(diagnosticMessages_generated_1.strings.pcf_start_exited, [code?.toString()]);
return reject(new Error());
}
else {
return resolve();
}
});
});
}
}
exports.StartHarnessTask = StartHarnessTask;
//# sourceMappingURL=startTask.js.map