UNPKG

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
"use strict"; // 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