UNPKG

@getcoconut/cli

Version:

A tool for locally emulating and mocking Pulumi Cloud projects.

49 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.action = exports.command = void 0; const tslib_1 = require("tslib"); const fs = require("fs-extra"); const os = require("os"); const path = require("path"); const uniqid = require("uniqid"); const automation_1 = require("@pulumi/pulumi/automation"); const commander_1 = require("commander"); const errors_1 = require("../errors"); const utils_1 = require("../utils"); const pulumiProgram_1 = require("./mock/pulumiProgram"); exports.command = new commander_1.Command('mock') .description('mock a Pulumi Cloud project') .action(action); function action(options) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const projectName = path.basename(options.projectDir); const projectFile = path.join(options.projectDir, 'index.ts'); const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), `coconut-${projectName}-`)); console.info(`mocking project ${projectFile}...`); if (!fs.pathExistsSync(projectFile)) { throw new errors_1.CustomError('project file does not exist'); } fs.ensureDirSync(tempDir); const workspace = yield automation_1.LocalWorkspace.create({ projectSettings: { name: projectName, runtime: 'nodejs', backend: { url: `file://${tempDir}` }, }, envVars: { PULUMI_CONFIG_PASSPHRASE: uniqid(), }, program: pulumiProgram_1.pulumiProgram(projectFile), }); const stack = yield automation_1.Stack.createOrSelect('mock', workspace); yield stack.setConfig('cloud:provider', { value: 'mock' }); const result = yield stack.up(); const outputs = utils_1.unmarshalOutputs(result.outputs); // write outputs to configured outputs targets utils_1.writeOutputs(outputs, 'mock'); // write outputs to console console.info(JSON.stringify(outputs, null, 4)); }); } exports.action = action; //# sourceMappingURL=mock.js.map